华为云用户手册

  • 3、创建低代码应用 AstroZero覆盖三大开发低代码应用开发场景,满足行业客户、开发者等各种需求。 表1 开发场景介绍 分类 应用类型 使用说明 轻应用 轻应用 轻应用一般为轻量级的应用,不涉及复杂的代码,用户通过零代码或低代码就能轻松完成应用的搭建。 在AstroZero中,可以通过如下两种方式创建轻应用。 使用应用模板创建应用 当您的业务与应用模板中的场景相似度较高时,可以尝试使用模板创建,并在模板应用的基础上继续改造应用。 从空白开始创建一个全新的应用 从前端到后端,从零开始,一步步完成应用的开发。 行业应用 行业应用 行业应用是针对不同行业领域,如城市、园区、能源及交通等创建的应用。 在AstroZero中,可以通过应用模板或从空白开始,创建一个全新的行业应用,操作方式与轻应用相同。 Addon应用 当需要基于已有应用或解决方案(不是单一的应用,某一解决方案会涉及到多个应用)进行定制时,可选择创建Addon类型应用。更多内容,请参见创建Addon应用。 Native Service 租户在AstroZero平台外开发了一些服务,服务运行在Docker容器中。若希望将这些服务集成到AstroZero中,供AstroZero内部应用或其他第三方系统调用时,可选择创建Native Service。更多内容,请参见如何创建原生服务。 服务组件(BO) BO即商业对象,是封装了完整的数据模型、业务逻辑、页面展现的软件单元,一个BO提供一个完整场景的服务,为上层应用提供特定服务。用户可基于BO,如魔方一样创建功能各异的应用。更多内容,请参见服务组件(BO)。 业务大屏 Astro大屏应用 Astro大屏应用(简称Astro Canvas),是Astro轻应用提供的可视化页面构建服务,提供了丰富的可视化组件、灵活的数据接入和多种方式页面构建能力,支持多屏适配,帮助开发者快速构建和发布专业水准的实时可视化应用。通过Astro Canvas一站式 数据可视化 开发,可分钟级构建业务大屏、小屏页面。更多内容,请参见用户指南(Astro Canvas)。
  • 什么是应用包 轻应用或行业应用开发完成后,应用需要编译打包,这种编译后的压缩包即应用包。 应用包类型 在AstroZero中,编译打包的应用包类型有以下两种: 源码包:该类型包中的所有组件,都不受保护和限制。在其他环境安装后可编辑包中组件,即在原有基础上可进行再开发。若后续其他用户在开发环境安装后,会显示在开发环境首页的“项目”页签下。 资产包:该类型支持设置包中的组件,是否受保护。打包时不做编译设置,默认打出的包都是资产包,包中组件都为只读保护模式,将包安装到其他环境时,只能运行和预览,不可编辑包中组件。若后续其他用户在其他开发环境安装资产包后,应用会显示在开发环境首页的“库”页签下。 应用包类型的详细介绍,请参见源码包与资产包对比。 软件包环境 图1 环境介绍 AstroZero分为开发环境,沙箱环境和运行环境三个部分,更多介绍请参见基本概念。 开发者在开发环境开发应用和BO,开发完成后生成对应的软件包。 发布软件包到沙箱环境中进行测试。 测试通过后,发布安装到生产环境实际运行和维护。 仅专业收费版本支持沙箱环境和运行环境,免费版本无沙箱环境和运行环境权限。 软件包制作 应用或BO创建完成后,平台会同步创建同名的软件包。 对应用和BO内的组件,进行增删查改都会同步反映到软件包中。 开发者也可以在编译设置中,对软件包和其中组件的属性进行修改。
  • 源码包与资产包对比 源码包和资产包都是应用发布类型,大部分的功能都是一致的,例如都分为全量和组件两种形式,都是按“编译-发布”的流程进行。目前来说,主要有以下几点不同之处: 不同的保护模式设置。 源码包中的所有组件都不受保护和限制,其保护模式也无法进行设置修改,这些组件在安装后可以被自定义编辑修改。而资产包的大部分组件默认在安装后是不允许被修改的,甚至可以设置某些组件不可见,如服务编排,脚本等,可防止泄露源代码,保护知识产权。其保护模式可以在编译设置中,进行修改。 二次开发与发布模式不同。 源码包在开发环境中安装后允许再次进行打包发布,而资产包安装后无法二次打包发布。另外,源码包只能发布到“我的仓库”,而资产包主要用于发布到应用市场。
  • 发布补丁包 参考导入导出应用源码包中操作,对应用中部分组件进行设置打包。 选中“组件”后,单击“详情”,在“可选组件”页面勾选需要设置的组件,单击“保存”再进行后续操作。例如,对应用中的某一个脚本进行打包。 参考如何登录经典应用设计器中操作,登录经典版应用设计器。 在左侧导航栏中,单击,选择“设置”,进入应用编译设置页面,设置只编译该脚本。 图1 设置编译组件 图2 勾选脚本 勾选完成后,单击“保存”。 在开发页面左侧列表中,单击,选择“编译”,进行编译。 编译完成后,单击左下角的,选择“我的仓库”,将应用程序安装包发布到当前租户的私仓。 发布成功后,即可在“资产包”下获取仅包含脚本的补丁包。 补丁包发布之后,可以参考如何安装已开发好的应用中的内容进行更新安装。
  • 使用说明 在如下两个场景,可以基于已有脚本,创建新脚本: 场景1:在已有脚本基础上新建版本。 因业务需要,脚本要实现的能力变化,此时可以基于原有脚本修改,并保存为脚本的新版本。在此场景下,原有脚本作为老版本自动失效。 场景2:在已有脚本基础上新建脚本。 需要开发的新脚本与已有的某个脚本类似,此时可以基于原有脚本修改,再保存为新的脚本名称。在此场景下,原有脚本仍然有效。新脚本和老脚本也没有关联关系,各自独立。
  • 操作步骤 在“故障单流程”应用开发工作台,单击左侧导航栏下方的,进入应用预览页面。 图1 进入应用预览页面 在左侧导航栏选择“故障上报”,在“故障上报录入”页面录入故障,单击“提交”。 例如部门选择“App Cube”,“简要描述”和“详细描述”中填写“前端页面调用后台接口不通。” 图2 录入故障 在左侧导航栏中,选择“待办事项”,在“我的待办”中单击“一线分析”。 图3 单击一线分析 在“一线分析”页面进行操作,可填写一线分析的内容,单击“完成”。 在该页面,还可以进行其他活动。 委托:将任务主动委托给其他人处理。A把任务委托给B,A、B均可以查询和处理该任务。 移交:将任务主动转移给其他人处理。A把任务转移给B,则仅有B可以查询和处理该任务。 完成:表示执行任务并办理完成。 可选活动:在该任务中,还可以进行其他活动,这些活动是在7.e中配置的。 后续在左侧导航栏选择“待办事项”,在“我的待办”中查看并处理待办任务,测试整个流程是否符合预期。
  • 结果验证 单击,进入预览页面,查看commodityListWidget组件效果。 针对手机端视图,AstroZero在预览中提供手机端模拟视图,电脑端和手机端预览效果如图6所示。在电脑端视图中,商品列表单行商品数会跟随浏览器窗口的大小变化。在手机端视图中,商品列表单行商品数为1,始终为单列排布。 图6 商品列表组件电脑端和手机端预览效果 如果您在高级页面中拖入commodityListWidget组件后,再次上传更新了commodityListWidget组件,需要到应用的“页面设置”中进行版本更新操作新版本才可生效。如何更新组件,请参见管理高级组件版本。 使用谷歌浏览器 开发者工具 (F12),查看多个不同尺寸的终端中此页面的呈现效果。 按下“F12”,单击开发者工具中的,可以切换设备(手机、iPad等),查看组件响应式效果。多个终端(响应式模式、iPhone 6/7/8和iPad横屏)视图效果如图7所示,呈现出多终端适配的响应式效果。 在分辨率为1797x425的电脑端中,商品列表单行商品数为5。 在iPhone 6/7/8中,商品列表单行商品数为1。 在iPad(横屏模式)中,商品列表单行商品数为2。 图7 多个终端视图效果
  • 创建服务编排 参考登录经典应用设计器中操作,登录经典版应用设计器。 将鼠标放在Logic文件夹上,单击“+”,选择“服务编排”。 在添加服务编排页面,输入标签和名称。 图1 创建服务编排 创建一个新的服务编排:从零开始,创建一个新的服务编排。 使用已有的服务编排:基于同一租户或基线里已有的服务编排,来创建一个服务编排,方便用户快速继承已有服务编排的配置,增加效率。 类型:服务编排的类型。 Autolaunched Flow:自启动Flow,在接口调用后会立即执行服务编排模型定义的逻辑。 Event Trigger:事件触发的服务编排,在事件触发时才会开始执行服务编排模型定义的逻辑。当选择该类型时,您需要配置具体的事件以及条件规则。 标签:新建服务编排的标签名,用于在界面展示。 名称:服务编排在系统中的唯一标识,创建后不支持修改。系统会自动在名称前添加“{命名空间}__”,当其他功能调用服务编排时,调用的是服务编排的名称,而不是标签。 描述:新建服务编排的描述信息,通常设置为服务编排的功能。 单击“添加”,进入服务编排开发页面。 服务编排编辑器页面由上方按钮区域、左侧图元面板区域、中间画布区域和右侧参数配置区域四部分组成。 图2 服务编排编辑器页面 表1 区域说明 区域 区域说明 按钮区域 功能按钮区域,包括启用(或者禁用)、保存、另存为新版本或者新服务编排、执行服务编排、操作回退、撤销回退等,支持快捷键操作,即可脱离鼠标直接用键盘操作。 服务编排启用后,单击页面右上角的,可查看该组件的调用关系图。 图元面板区域 图元面板区域呈现服务编排编辑器的图元算子。服务编排编辑器以图元算子为基础,可直接将图元算子拖入画布区域进行逻辑编排。图元算子包括如下五类: 基本:基本类型图元,能够实现在服务编排中进行脚本或者服务编排的调用,增/改/删/查对象记录,以及发送邮件、发送事件的功能。 逻辑:逻辑判断图元,能够实现在服务编排中进行变量赋值Assignment、循环Loop、跳出循环Break、决策Decision、等待Wait的功能。 BO:商业对象图元,即将封装好的BO能力作为服务编排中的一个节点,实现特定的业务功能图元。 Native服务:原生服务图元,用于调用原生服务提供的接口。 连接器:与第三方系统对接的图元,例如将短信发送、支付等第三方连接器作为当前服务编排中的一个节点图元。 画布区域 服务编排设计操作区域,在该区域可对服务编排进行具体流程设计、图元放置。 配置区域 整个服务编排或图元的属性设置区域。选择画布区域服务编排中具体图元时,右侧配置区域为该图元的属性设置区域。选择服务编排中空白区域或者开始图元时,右侧配置区域为该服务编排的设置区域。 :服务编排基本信息配置菜单。 :显示服务编排类型、是否启用。 :整个服务编排的入参、出参,可从“全局上下文”中,选择变量拖拽到服务编排的入参、出参中。 :服务编排使用的私有结构体。 :全局上下文变量,主要用于创建服务编排中需要使用的变量、公式以及结构体变量等。
  • 新版应用设计器具备哪些优势 AstroZero提供了新版和经典版两款应用设计器,相比于经典版设计器,新版应用设计器具体如下优势。 极简、易用、高效 图10 新老设计器对比 更合理的空间布局 新版设计器优化了功能入口布局,寻找功能更符合开发者思维习惯。 引导式开发体验 以需求场景为开发起点,一路引导,让开发旅程更顺畅。 降低门槛 持续降低开发门槛,功能更易用。 图形化建模(从设计开始) 图11 图形化建模 改表格式为图形化,模型操作更简单。 模型关系一目了然,不用再为找关系发愁。 简化对象编辑步骤,选择模型即可编辑。 一键添加字段,交互体验更人性化。 设置出厂数据(让复杂场景简单化) 图12 设置出厂数据 出厂数据支持多安装策略,解决传统开发中对实例化数据打包、管理和升级问题,让复杂场景简单化。 一份数据一次配置多次复用灵活按需指定出厂数据。 出厂数据多安装策略,消除传统开发中对实例化数据打包、管理和升级问题。 应用团队协作更灵活 团队协作实现一个租户下有多个开发团队,不同开发团队所拥有的应用之间相互隔离,做到我的应用“我做主”。 图13 团队协作 一键部署触手可及 图14 一键部署 部署操作化繁为简,降低部署门槛,提升部署体验,提供可视化的部署进度和部署结果。 以开发者为中心,化繁为简,降低门槛,屏蔽打包、发布、部署等环节。 打包发布部署一体化,部署进度/结果可视化,简化新手探索过程。 租户级自运维告警 图15 租户级自运维告警 租户级自运维告警构建平台租户E2E运维能力,降低应用维护成本,提高租户应用的高可维护性。 开发者可根据业务需要,自定义告警模板。 业务脚本灵活引用自定义告警。 运维人员可以查看和处理业务告警。 自定义子 域名 图16 域名配置 通过自定义域名,提供安全可靠的内外网访问机制,实现一个运行环境多个域名(该特性仅对专享版运行环境灰度开放)。 自定义域名支持SSL证书认证和应用访问控制,保护应用访问安全。 提供安全可靠的内外网访问机制,不同用户不同登录认证。
  • 自定义错误码 参考登录经典应用设计器中操作,登录经典版应用设计器。 在页面左下方,单击“配置”。 图1 选择配置 在自定义错误码页签,单击“新建”,进入新建错误码页面。 也可以单击“导入”,选择系统中已创建的错误码进行导入。 设置错误码参数,单击“保存”。 图2 新建错误码 名称:自定义的错误码,建议以字母开头,长度不超过64个字节,包括命名空间。 类别:新建错误码所属的分类。 Http状态码:选择Http协议状态码。 语言:根据需要,选择所需的语言类型。单击“新增”,可添加多语言错误码。若待添加的语言不存在,可单击语言后的。在提示信息中,单击“翻译工作台”,跳转至翻译工作台配置页面进行添加。 格式:错误码的信息描述,支持使用{Number}表示变量名。例如 ,{0} 表示第一个输出变量,{1} 表示第二个输出变量,以此类推。
  • 如何使用自定义错误码 自定义错误码创建完成后,可在脚本中使用。在脚本中,调用抛出错误信息的error函数I18nError('ErrorCodeName','变量1','变量2')。该函数中,输入参数为错误码名称"t__testErrorCode"和错误码信息中所携带的变量("val1"和"val2")。 创建脚本。 在经典版应用设计器中,将鼠标放在某个文件夹上,单击加号,选择“脚本”。 图3 选择脚本 设置脚本的名称,模板选择“空脚本”,单击“添加”。 图4 创建一个空脚本 在脚本编辑器中,输入如下代码。 // test custom error func , get diff language error by user langimport * as error from 'error';export class TestDemo { @action.method({ label: 'test', description: 'error code', input: 'No input', output: 'No output' }) public test() { //使用I18nError函数设定错误码和错误码信息携带变量 throw new error.I18nError('t__testErrorCode', ["val1", "val2"]); }} 其中,“t__testErrorCode”为自定义错误码名称,请根据实际情况配置。 单击,保存脚本后,单击,启用脚本。 按照如何开放API接口中操作,绑定上述开发的脚本,进行测试。 图5 自定义错误信息测试
  • 操作步骤 确认高级页面属性开关“合并并压缩资源”已关闭。 参考登录经典应用设计器中操作,登录经典版应用设计器。 在应用设计器下方,选择“页面设置”。 获取锁后,在“属性”页签,去勾选“合并并压缩资源”。 若勾选“合并并压缩资源”,会对所有高级页面涉及的css和js文件进行合并及压缩,使用单页面性能检查功能时,不要勾选该选项。 图1 关闭“合并并压缩资源”属性 设置完成后,单击,并单击,释放锁。 打开要进行性能检查的高级页面,在浏览器开发者工具中,勾选“Disable cache”属性。 在Chrome浏览器中,按下“F12”或者“Ctrl + Shift + I”,开启开发者工具。 在“Network”页签,勾选“Disable cache”属性(即禁用缓存)。 在进行页面性能检查时,如果不勾选该选项,性能检查会读取缓存中的数据,导致性能检查结果不准确。 图2 勾选“Disable cache”属性 在已发布的高级页面上方,单击“性能分析”,进入页面性能分析报告页面。 开发者工具请保持打开状态,关闭后“Disable cache”属性会自动不勾选。同时请确保高级页面已发布,若未发布,单击高级页面上方的,发布页面。 图3 查看性能分析报告 在页面性能报告中,单击各指标后的“展开”,可查看性能指标详情。 图4 查看性能指标详情
  • 使用说明 页面组件之间,可以通过配置事件和动作进行信息交互。当页面组件较多,且需要进行信息交互时,频繁的给每个组件去定义事件或动作就比较繁琐了。此时,可以通过定义全局状态,来实现页面级所有组件中数据信息的更新。 低代码平台高级页面支持设置全局状态,通过页面级内存方式共享数据,即采用集中式存储管理页面所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。简单的理解就是全局状态,可理解为页面中所有组件的共享状态,不管组件在页面的哪个位置或层级,任何组件都能获取状态或触发状态改变的动作。全局状态相当于全局变量,属性是私有的,需要在组件的js文件中,使用预置的“this.$mstore.dispatch”方法,来修改状态数据。 思考:什么情况下,应该使用全局状态? 解惑:当页面组件构成比较简单,组件间不需要频繁的进行信息交互时,不需要设置全局状态。反之,则建议使用全局状态,通过设置并使用全局状态,可以帮助您管理页面所有组件的共享状态。
  • 支持自动审批 AstroZero支持用户任务自动审批功能,例如设置“主管审核”任务自动审批。在用户任务配置界面,指定该任务具体某一接收人,可使用表达式的形式将任务指派某一用户,在自动审批中进行设置。 流程触发人自动通过:若勾选该选项,任务接收人是流程触发人时,该用户任务会被自动审批。 已审批过该流程的审批人自动通过:若勾选该选项,任务接收人在当前BPM实例中已审批过其他用户任务,则该用户任务会被自动审批。 图1 自动审批设置 当任务接收人设置为“当前泳道”对应的工作队列或用户组时,将无法使用自动审批功能。只有任务接收人设置为某一用户时,才可进行自动审批。 父主题: 深入了解用户任务
  • 操作步骤 参考登录经典应用设计器中操作,登录经典版应用设计器。 在高级页面开发界面,单击右上角的,定义全局状态。 定义全局状态使用JavaScript编程语言,不支持TypeScript。全局状态结构固定以MStore命名,每个页面仅包含一个全局状态实例,方便在组件调试的过程中轻易地取得整个当前页面状态的快照。全局状态的结构定义由以下三部分组成: state:定义页面所有组件的初始状态数据,即页面中所有组件共享状态的初始数据源。 mutations:状态变更的唯一方法是提交mutation。mutation以声明方式将state变化映射到视图。每次state的变更都需要定义一个mutation。mutation使用对象风格的提交方式,整个对象都作为载荷(payload)传给mutation函数。mutation都是同步事务。 actions:通过actions执行状态数据变更,用于衔接state和mutation。Action可以包含任意异步操作。通常用于绑定状态和组件。可以调用服务。 在页面的组件js文件中,使用预置的“this.$mstore.dispatch()”方法,修改状态数据。 系统还预置了onStateChanged(state) 方法,用于监听属性整个全局状态的变更。
  • 场景说明 根据对象的数据生成资源列表数据,用于前台数据呈现,启用本脚本后,可实现数据导入模板使用。 创建脚本前,需要先创建脚本中操作的对象ApprovedResource,其字段如表1所示。 表1 对象说明 字段标签 字段名称 字段类型 取值 读写权限 含义 ownerId ownerId 文本 长度:255 全选 资源拥有者ID ResourceName ResourceName 文本 长度:255 全选 资源名称 Type Type 选项列表 枚举值如下: File Folder 全选 资源类型 SubmitDate SubmitDate 日期/时间 不涉及 全选 资源提交时间 ApproveDate ApproveDate 日期/时间 不涉及 全选 资源审批时间 Status Status 选项列表 枚举值如下: Waiting Submitted Approved 全选 审批状态
  • 操作步骤 参考如何登录经典应用设计器中操作,登录经典版应用设计器。 在左侧菜单栏中,单击。 在“已发布”中,选中包后单击“下载”,下载应用的zip包到本地。 图1 下载应用的zip包 可以用该zip包安装定制应用到其他AstroZero环境,zip包含的文件请参见表1。 图2 应用配置 表1 应用zip包文件说明 文件名 说明 data 应用涉及的实例化数据,在应用“配置”内创建的数据,以及该应用使用的连接器Connector(例如发送短信连接器、ROMA连接器、Redis连接器等),会自动归档到该目录下。不归档非应用内创建的实例化数据。 例如,在应用配置(如图2)中,创建的系统参数、选项列表等,应用内即便使用了它们,也不会自动归档,需要手动导出对象然后归档到该目录下。手动导出的方法,请参见如何导入导出数据。 flow 应用涉及的服务编排。 pageresource 标准页面的相关信息。 picklist 应用涉及的选项列表,只包含在应用内创建的选项列表。 schema 应用涉及的对象的元数据。 script 应用涉及的脚本。 website 高级页面的相关信息,例如,Widget、library和站点信息等。 CustomAPI.yaml 自定义接口的yaml文件。 packageinfo.json 软件包的元数据描述文件,主要包含应用的软件包名字、描述信息以及作者信息等。
  • 背景信息 ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署AI智能模型,管理全周期AI工作流。更多ModelArts的介绍,请参见ModelArts官方网站。 在AstroZero中,通过配置ModelArts连接器,可实现AstroZero与华为ModelArts对接,用于图像识别、 文字识别 等AI(人工智能)场景。
  • 在脚本中调用连接器 在脚本中,调用连接器,实现调用ModelArts的接口。 参考开发一个简单脚本实例中操作,创建一个空白脚本。 图6 新建空白脚本 在脚本编辑器中,输入如下代码。 import * as modelarts from 'modelarts';export class Input { @action.param({ type: "String", required: false, description: "the image url" }) url: string; @action.param({ type: "String", required: false, description: "the base64 coded image" }) image: string; @action.param({ type: "String", required: false, description: "" }) apigCode: string @action.param({ type: "String", required: false, description: "" }) modelId: string}export class Output { @action.param({ type: "string" }) result: string;}export class testModelarts { @action.method({ input: "Input", output: "Output", description: "modelartspro test case" }) run(input: Input): void { // 填写实例化的modelartspro连接器名称 let client = modelarts.newClient("testArts") let result = null result = client.modelArtsWithURL(input.url, input.apigCode, input.modelId); console.log(result) return result }} 其中,代码modelarts.newClient("testArts")中“testArts”为连接器的名称。如果连接器名称中带有命名空间前缀,代码中也需要携带。 单击脚本编辑器页面上方的,保存脚本。 保存成功后,单击,运行脚本。 在页面底部“输入参数”中,设置输入请求参数,单击测试窗口右上角的。 { "url": "https://XXXXXXXXX/testmodelarts.jpg", "apigCode": "bec274062225485b95fbcd4d6e8f128a", "modelId": "5ecac550-eefe-4437-9767-57eca07fa91f"} 其中,“url”请设置为图片的URL。 在输出参数页签,可查看到识别的结果。 { "predicted_label": "roses", "scores": [ [ "roses", "0.947" ], [ "daisy", "0.050" ], [ "tulips", "0.002" ], [ "dandelion", "0.000" ], [ "sunflowers", "0.000" ] ]} 单击脚本编辑器页面上方的,启用脚本。
  • 使用说明 页面间组件的交互,除了需要事件-动作机制,还需要用到低代码中的页面宏。本章节通过具体示例,为您介绍页面间组件交互的方法。如图1所示,高级页面Page1中包含示例组件widgetEventTemplate,高级页面Page2中包含示例组件widgetPageMacroTemplate,单击Page1页面中的OK按钮,输入框中的数据会通过页面宏传递给Page2。 图1 页面间组件交互场景示例 页面间的组件交互原理如下图所示,在配置事件时,选择“默认”类别中的页面跳转,并通过新增动作参数将事件的参数传给页面宏,在跳转的目标页面中读取页面宏数据。 图2 Page传值原理 主要实现原理如下: widgetPageMacroTemplate 在widgetPageMacroTemplate.editor.js文件中定义页面宏数据。 propertiesConfig: [ { config: [ { "type": "text", "name": "pageMacro", "label": "Page Macro", "value": "${pm.pageMacro}", "validation": { "rules": {} } }]}]; 表1 页面宏数据配置项说明 配置项 参数说明 propertiesConfig 配置组件的自定义属性。 type 配置项的数据类型,本例中配置为text(文本)。 name 配置项的变量名称,本例中设置为“pageMacro”。通过获取组件自定义配置属性的API,来获取该值。 label 配置项的展示标签。 value 配置项的默认值,本例中设置为${pm.pageMacro}。 其中,pageMacro为页面宏变量名,${pm.}为低代码平台定义的固定语法。 validation 无需关注此配置项。 在widgetPageMacroTemplate.js文件中读取页面宏数据,并将其显示到页面中。 var widgetProperties = thisObj.getProperties();//获取该组件自定义配置属性的API。...var pageMacro = widgetProperties.pageMacro || "";$("#macro",elem).html(pageMacro); 上述示例代码中widgetProperties.pageMacro的PageMacro,即表1中name配置项设置的变量名称。 widgetEventTemplate:关于widgetEventTemplate的介绍,请参见同页面内组件的交互。
  • 在脚本中调用连接器 在脚本中,调用已创建的连接器,实现与SMTP的对接。 参考开发一个简单脚本实例中操作,创建一个空白脚本。 图6 新建一个空白脚本 在脚本编辑器中,输入如下代码。 // 导入连接器import * as connector from 'connector';//新建SMTP邮件连接器,第一个参数固定是emailsmtp,第二个参数是连接器的名称let client = connector.newClient("emailsmtp","命名空间__smtp01");//构建请求消息头,包括收件人地址、邮件主题、邮件正文(主题和正文不能同时为空)//按内容发送let req ={"address":"test@example.com","subject":"SMTP功能验证-脚本","body":"使用SMTP发送邮件"};//按模板发送,如果有template模板参数,则主题和正文配置无效,按邮件模板中的内容发送//let req={"address":"test@example.com","template":"smtptt1."}//发送邮件,其中第一个参数不用填写,第二个参数为消息体let resp = client.invoke("",req); 其中,connector.newClient中“命名空间__smtp01”为连接器的名称,“address”为收件人,“subject”为主题,“body”为邮件内容。 单击脚本编辑器页面上方的,保存脚本。 保存成功后,单击,执行脚本。 2中已设置入参,故此处不需要再设置,直接单击测试窗口右上角的。 检查收件人是否收到邮件。 收到邮件,表示成功调用连接器,如图7。 图7 接收邮件内容 单击脚本编辑器页面上方的,启用脚本。
  • 什么应用代码可以保护 应用包类型有资产包和源码包两种,仅资产包可设置是否受保护,源码包不受保护。 参考应用打包发布,选择“资产包”发布的应用包,包中组件可设置是否受保护。选择该项后,需要配置版权信息(可选)、描述(可选)、每个组件的保护设置(必选,配置为未受保护或者只读保护)。 三种类型保护模式:未受保护、只读保护和不可见保护。相当于Linux下的三种保护模式,即可读可写可执行(RWX)、不可写(RX)和仅可执行(X)。
  • 前提条件 已获取到应用或BO的安装包。安装包为开发者在开发环境中发布应用或者BO时生成的包,具体操作请参考如何将应用发布到“我的仓库”,打包编译时可根据以下实际场景选择“资产包”或“源码包”。 在其他开发环境中安装源码包应用。安装后,会显示在开发环境首页的“项目”页签下。 源码包是某用户开发应用后,打包编译时选择“源码包”发布出来的应用包,该类型包中的所有组件都不受保护和限制。源码包只能在开发环境中安装。 在其他开发环境、沙箱环境或运行环境中安装资产包应用。在其他开发环境安装资产包后,应用会显示在开发环境首页的“库”页签下。 资产包是某用户开发应用后,打包编译时选择“资产包”发布出来的应用包,该类型支持设置包中的组件在其他开发环境安装后是否受保护。在沙箱环境、运行环境安装的资产包中组件资产都是受保护的。
  • 如何使用等待图元 在逻辑中,拖拽“等待”图元至画布中。 选中等待图元,单击,设置基本信息。 表1 基本信息参数说明 参数 参数说明 标签 图元的标签,用于在页面显示。系统会自动填入该值,格式为Wait序号,序号从“0”开始,表示同类型图元序号。 名称 该图元的标识,请确保在当前服务编排中唯一。 描述 该图元的描述信息。 单击,在“等待”页面进行配置。 图1 Wait配置及Pass分支条件配置 图2 Unpass分支条件配置 图3 Timeout分支条件配置 表2 条件分支配置参数说明 参数 参数说明 可编辑的事件 所有的判断条件。 可通过单击“新增”,来增加判断条件分支。 默认:默认输出,当其他所有条件均不满足情况下,进入该分支。 例如,新增如下三个判断条件: Pass:应聘者被录用。应聘通过时,Boolean类型参数“result”赋值为全局常量“{!$GlobalConstant.True}”,表示结果为真,即应聘通过。 Unpass:应聘者没有被录用。应聘失败时,Boolean类型参数“result”赋值为全局常量“{!$GlobalConstant.False}”,表示结果为假,即应聘拒绝。 Timeout:超时事件。基于该服务编排执行时间,超时30分钟未返回是否录用。 事件/时间 当订阅的是自定义事件时,需要选择“事件”。 当订阅的是系统预置的标准事件“Absolute Time Alert”,即定时器发送的系统事件时,需要选择“时间”。 本示例中,需要配置如下: Pass:请选择“事件”。 Unpass:请选择“事件”。 Timeout:请选择“时间”。 事件 请选择需要订阅的事件,当订阅的是自定义事件时,该参数才会显示。 事件条件 该分支的条件。单击“新增行”,可进行添加。当订阅的是自定义事件时,该参数才会显示。 分支条件中的字段,为创建该事件时设置的自定义参数,值可从右侧全局上下文中选择拖入。 定义需要满足的其他条件 勾选“定义需要满足的其他条件”后,可根据事件变量外的其他变量设置追加条件。 可视 勾选“定义需要满足的其他条件”后,该参数才会显示。当选择“可视”时,可配置追加条件的判断条件。单击“新增”,可新增判断条件。条件显示为“资源”、“比较符”、“值”。 默认选择“可视”。 公式 勾选“定义需要满足的其他条件”后,该参数才会显示。可采用公式设置追加条件。 选择连接条件 当选择“可视”并设置多条判断条件时,需要设置选择连接条件“或”或者“且”。 或:表示满足多条判断条件的其中一条,便可进入该分支。 且:表示必须同时满足多条判断条件,才可进入该分支。 输出 如果需要在服务编排中,使用事件的参数,将其参数赋值到事件变量中方便服务编排引用。 当订阅的是自定义事件时,该参数才会显示。 默认不需要。 基准 基准时间。当订阅的是系统预置的定时器发送事件时,该参数才会显示。 可从全局上下文拖拽日期/时间类型变量,也可设置为某个具体时间,或者设置为本服务编排执行时间。 例如,在本节中设置为本服务编排执行时间,即{!$Flow.CurrentDateTime}。 偏移时间 偏移时间,例如“30”。当订阅的是系统预置的定时器发送事件时,该参数才会显示。
  • 自定义OAuth2授权码模式接入鉴权 前面介绍了第三方系统在调用AstroZero业务接口前,如何配置接入鉴权。鉴权通过后,才能实现调用AstroZero业务接口。在AstroZero中开发的应用,也可以自定义OAuth2授权码模式接入鉴权。当应用配置鉴权后,只有通过鉴权的第三方系统才可以访问应用。 参考2~4获取鉴权ID“client_id”和鉴权密钥“client_secret”。 在应用开发页面,通过自定义接口,给第三方接入调用,用于第三方系统获取授权码code。 应用调用脚本API,判断第三方客户端的鉴权ID“client_id”和重定向地址“redirect_url”是否和注册接入鉴权时匹配。 如果匹配,则由AstroZero应用自定义接口,实现登录跳转和授权跳转。在授权完成后,再调用脚本API获取授权码code,并将需要展示给第三方的授权用户信息通过该API传给AstroZero,AstroZero会返回一个code。最后,应用重定向到“redirect_url”,并携带code。 判断第三方客户端的鉴权ID“client_id”和重定向地址“redirect_url”是否和注册接入鉴权时匹配的API样例如下: // Here's your code.import * as oauth from 'oauth'let handle = oauth.getAuthorizeHandle()let clientDatas: oauth.clientDataFromApp = { redirect_uri: "http://10.26.30.68:14000/appauth/code", client_id: "bff4398905ee4a918722debec98b594c",}let pass = handle.checkURL(clientDatas)console.log(pass) //trueif (pass){//判断是否登录,做登录跳转//判断是否授权,做授权跳转} 获取授权码code的脚本API样例如下: // Here's your code.import * as oauth from 'oauth'let handle = oauth.getAuthorizeHandle() //前面步骤已经走完let clientDatas: oauth.clientDataFromApp = { redirect_uri: "http://10.26.30.68:14000/appauth/code", client_id: "bff4398905ee4a918722debec98b594c",} let userInfo = { "name": "jack", "phone": "1256287222", "email": "example.com"} let code = handle.getAuthCode(clientDatas, userInfo)console.log(code) //WEUcqXbeQDKUHxcn8til3Q 第三方系统接收到该请求,并解析出code后,在后端访问接口获取access_token,步骤和6一致。 第三方系统在获取到access_token后,使用该凭证访问平台“https://域名/u-route/baas/oauth/v1.0/third/userinfo”接口(该接口和8中的接口不同),来获取授权用户的信息。 响应示例如下: { "resCode": "0", "resMsg": "成功", "result": { "email": "example.com", "name": "jack","phone": "1256287222"} }
  • 使用场景 AstroZero提供了“客户端模式”和“授权码模式”两种授权模式进行OAuth鉴权。 客户端模式 通过该模式获取的access-token,用于在调用API接口时进行鉴权,使用时需在请求消息头上设置“access-token”。 图1 客户端模式 授权码模式 通过该模式获取的access-token,只能用于在获取用户信息时进行鉴权,使用时需在请求消息头上设置“Authorization: Bearer ***”。 图2 授权码模式
  • 前提条件 已获取到应用或BO的安装包。安装包为开发者在开发环境中发布应用或者BO时生成的包,具体操作请参考如何将应用发布到“我的仓库”,打包编译时可根据以下实际场景选择“资产包”或“源码包”。 在其他开发环境中安装源码包应用。安装后,会显示在开发环境首页的“项目”页签下。 源码包是某用户开发应用后,打包编译时选择“源码包”发布出来的应用包,该类型包中的所有组件都不受保护和限制。源码包只能在开发环境中安装。 在其他开发环境、沙箱环境或运行环境中安装资产包应用。在其他开发环境安装资产包后,应用会显示在开发环境首页的“库”页签下。 资产包是某用户开发应用后,打包编译时选择“资产包”发布出来的应用包,该类型支持设置包中的组件在其他开发环境安装后是否受保护。在沙箱环境、运行环境安装的资产包中组件资产都是受保护的。
  • 如何使用错误码 在脚本里使用 通过新建脚本,将上文创建的错误码抛出,在脚本中增加抛出错误信息的context函数setI18nError('错误码名称','变量1','变量2')。 在应用开发页面,创建一个新脚本。 鼠标放在应用开发工作台的某一文件夹旁会出现加号,单击加号,选择“脚本”。选择“创建一个新脚本”,输入脚本名称,单击“添加”。 在脚本编辑器中录入如下代码,并单击上方按钮区域的,保存脚本。 import*as context from'context';context.setI18nError('命名空间__Error001','测试用例','脚本使用错误码的用例解读') 测试执行脚本。 单击代码编辑器上方的,执行脚本。在页面底部,单击测试窗口右上角的图标。在“输出参数”页签,可查看到抛出的错误码信息,如图2所示。 图2 运行脚本后显示界面 单击代码编辑页面上方的,启用脚本。 在服务编排里使用 在“全局上下文”中,新建公式变量,使用表达式SETI18NERROR(ErrorCodeName','变量1','变量2')方式引入错误码。 图3 服务编排里使用错误码 目前BPM中错误码,由BPM调用的脚本和服务编排抛出。
  • 使用应用模板创建应用 为了降低应用开发成本,让您通过拖拽的方式,低代码快速完成应用的搭建,AstroZero低代码平台提供了典型场景的应用模板,您可以根据不同的业务场景,直接使用应用模板快速创建应用。本节为您介绍如何使用应用模板,创建一个新应用。 参考如何进入经典开发环境中操作,进入经典版开发环境。 在开发环境首页的“项目”页签下,单击“轻应用”或“行业应用”。 轻应用:轻应用下的应用模板一般为轻量级应用,不涉及复杂化的代码,轻应用模板涵盖了人事管理、办公管理、问卷调查、项目管理领域。例如系统提供了“调查问卷”、“健康打卡”等典型的轻应用模板。 图1 轻应用模板 行业应用:行业应用下的应用模板,功能更加丰富,使用了AstroZero低代码平台提供的各种能力组件,为低码或多码化模式构建的应用模板。 图2 行业应用模板 查看应用模板,将鼠标放在某个需要使用的应用模板上,模板上显示“查看模板”和“使用模板”图标,单击“使用模板”。 首次创建应用时,需要先定义专有的命名空间。 在提示框中,单击“创建”,输入“命名空间”后(例如“CNAME”),单击“创建”。 由于租户间的数据可打包共享,为了避免数据(例如对象、应用、服务编排等)命名的重复,租户在创建应用前需要定义一个命名空间(所有租户下的命名空间唯一,且每个租户只能创建一个命名空间)。 命名空间一旦创建,不能修改和删除,创建前请确认好相关信息。建议使用公司或团队的缩写作为命名空间。 后续创建的应用、应用元素(例如对象、脚本、服务编排、页面等)的名称前,系统会为其自动增加命名空间。例如,将命名空间定义为“CNAME”,后续创建的所有应用、应用元素(对象、脚本、页面等)都将以“CNAME__”开头。 图3 输入命名空间 命名空间创建完成后,将自动进入创建应用页面。 根据选择的模板类型,将跳转到“创建轻应用”或“创建行业应用”页面,在基本信息页中,填写应用标签和名称,单击“创建”即可。 “标签”后续可以修改,“名称”则是应用在AstroZero低代码平台中的唯一标识,创建后,不支持修改。 图4 创建轻应用 表1 创建轻应用页面参数说明 参数 参数说明 添加图标 新建轻应用的图标。 标签 轻应用的展示名称。 名称 轻应用在系统内的唯一标识。输入标签值后单击该参数的输入框,系统会自动生成轻应用的名称。系统会自动在该名称前添加命名空间__。应用创建后不支持修改应用名称,只能修改标签。 分类 应用所属的分类。设置分类后,工程列表和库列表都可以根据应用或BO的分类进行筛选。 描述 轻应用的描述信息。 运行时版本 开发的资产包依赖所选择的运行时版本,若线下运行版本不一致,可能产生不兼容。 展开“高级设置”时,才会显示该参数。 系统会自动创建该轻应用,创建后,显示页面如下。 图5 创建完成后的模板应用 在应用开发页面左侧,单击,即可预览该应用,进行体验。
  • 绑定数据模型 设置组件绑定的数据模型,有自定义对象、对象、服务和事件四种。 向页面中拖入一个表格(新)组件,单击“表格”页签,在表格属性“数据绑定”中单击,绑定数据模型。 图4 数据绑定 在弹出页面中,单击“新增模型”。 设置表格的数据模型,添加对象模型,模型名称“equipmentInstance”,单击“下一步”。 图5 创建数据模型 “选择对象”选择一个提前创建好的对象,例如“HW__Equipment__ CS T”,“选择字段”中选择表单中需要展示的字段,单击“下一步”。 图6 选择展示字段 在方法页面,单击“确定”,返回选择模型页面。 勾选刚建好的数据模型,单击“确定”。 绑定对象模型后,显示如图7所示。系统默认添加了斑马纹,如果不需要,可在表格属性的“基本设置”中关闭“斑马纹”。 图7 绑定数据模型后的结果列
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全