华为云用户手册

  • 创建Oracle连接器 登录新版ROMA Connect控制台。 在左侧导航栏选择“连接器”,在连接器页面单击“新建连接”。 选择“Oracle”连接器。 在弹窗中配置连接器信息,完成后单击“测试连接”。 参数 说明 连接名称 填写连接器实例名称Oracle_test。 区域 选择区域。 项目 选择项目。 实例 选择实例,用于后续验证连通性。 连接与安全 选择数据库的连接模式。本实践选择默认模式。 默认:由系统根据用户配置自动拼接数据源连接字符串。 专业:由用户自己输入数据源连接字符串。 主机IP地址 填写数据库的连接IP地址。 端口 填写数据库的连接端口号。 数据库名 填写要连接的数据库名。 pdb数据库名 填写要连接的pdb数据库名。 编码格式 填写数据库的编码格式。 超时时间 填写连接数据库的超时时间。 用户名 连接数据库的用户名。 密码 连接数据库的用户密码。 描述 填写连接器的描述信息,用于识别不同的连接器。 连接成功后,单击“确定”,保存连接器。 父主题: 定时同步MySQL中的数据到Oracle
  • 创建MySQL连接器 登录新版ROMA Connect控制台。 在左侧导航栏选择“连接器”,在连接器页面单击“新建连接”。 选择“MySql”连接器。 在弹窗中配置连接器信息,完成后单击“测试连接”。 参数 说明 连接名称 填写连接器实例名称MySql_test。 区域 选择区域。 项目 选择项目。 实例 选择实例,用于后续验证连通性。 连接与安全 选择数据库的连接模式。当前支持“默认”模式,由系统根据用户配置自动拼接数据源连接字符串。 主机IP地址 填写数据库的连接IP地址。 端口 填写数据库的连接端口号。 数据库名 填写要连接的数据库名。 用户名 连接数据库的用户名。 密码 连接数据库的用户密码。 描述 填写连接器的描述信息。 连接成功后,单击“确定”,保存连接器。 父主题: 定时同步MySQL中的数据到Oracle
  • 选择模板创建组合应用 登录新版ROMA Connect控制台。 在左侧导航栏选择“资产目录”,在右测搜索框搜索“定时同步”,选择“定时同步MySql中的数据到Oracle”模板,单击“使用模板”。 本实践中MySQL数据源表中的字段与Oracle中数据目标表中的字段类型保持一致。 将MySQL数据表中的aa、bb字段同步到Oracle数据表中的TEST_INTEGER、TEST_VARCHAR字段,需要提前在数据库中创建好对应的数据表和字段。 图1 定时同步MySQL中的数据到Oracle 在组合应用编排页面,对定时器、MySQL和Oracle连接器进行参数配置。 配置定时器参数。 单位:分钟。 间隔:1。表示每隔1分钟执行一次。 在这些秒:0。表示在每分钟的第0秒开始执行。 时区:GMT 任务模式:并行。 立即执行一次:否。 图2 定时器配置 配置MySQL参数。 选择连接,选择之前已创建的MySQL连接器“MySql_test”。 选择动作,选择模板已选择好的“获取记录”。 配置参数。选择需要同步的表名,字段名选择“aa”和“bb”,其他参数保持默认。 图3 MySQL配置 配置循环处理器,保持默认配置即可。 配置Oracle参数。 选择连接,选择之前已创建的Oracle连接器“Oracle_test”。 选择动作,选择模板已选择好的“添加记录”。 配置参数。输入目标端的表名,插入数据选择字段名TEST_INTEGER、TEST_VARCHAR,值配置为${500885|payload.aa}、${500885|payload.bb},其中500885为循环处理器的节点ID值,其他参数保持默认。 图4 配置Oracle 完成后单击右上角的“保存”。 在新建组合任务弹窗中填写组合应用的名称和描述,然后单击“确定”,完成组合应用的创建。 单击右上角的“启动”。 在弹窗中选择区域、项目,并选择已创建好的ROMA Connect实例,单击“确认”,启动该组合应用。 父主题: 定时同步MySQL中的数据到Oracle
  • 场景描述 创建一个定时任务“OfferingOffline”,用于实现从2018-12-28开始,每天零点自动将过期商品下架。其中,将过期商品下架的功能由“OfferingOffline”脚本实现。 在创建定时任务前,需要先开发实现定时任务功能的Script脚本,Script脚本的开发可参考脚本开发。 本章节介绍的是在应用内配置定时任务,也可以在管理中心下创建定时任务,相关操作请参考创建定时任务。两者的区别是在应用里配置的定时任务,可在打包发布应用时,将定时任务一起发布,在管理中心设置的定时任务无法随应用发布。
  • 属性 在属性中,设置翻牌器组件的位置、边框、背景等。 图2 属性 基础 组件标题:设置组件的标题。 组件名称:设置组件的名称。 位置 距离左端:组件到页面左侧的距离,单位为px。 距离顶端:组件到页面顶部的距离,单位为px。 宽度:组件的宽度,单位为px。 高度:组件的高度,单位为px。 堆叠顺序:设置组件层叠显示顺序。组件的堆叠顺序默认都是“1”,数字越大,显示越靠前。当需要让组件置底时,可设置堆叠顺序为“0”。 自适应高度:组件的高度是否随宽度改变。 边框:设置组件的边框样式,如全边框或角边框。 背景 样式:设置背景的样式,如普通、居中、拉伸等。 图片链接:背景图片URL。 颜色:设置背景的颜色。
  • 结果验证 在状态机编辑页面,单击,在右侧输入测试参数。 图10 测试 事件:状态机接收的事件,本示例配置为“temperature_obtain__e”。 事件信息:事件的输入参数,示例如下: { "temperature": 35, "dev_id": "c01v000000JzvtESDJFw" } 单击“发送”,如果高温报警事件“fire_alarm__e”,状态处于“High”,表示测试成功。
  • 前提条件 已创建温度监控设备对象“Conditioner__ CS T”,对象中id字段用于标识具体某设备(用户也可自定义某字段用于标识具体某设备,该字段必须是unique,即能够唯一标识一条记录),“current”字段用于标识设备记录的温度。 已创建温度监测事件“temperature_obtain__e”,该事件中自定义参数为“dev_id”(该字段必须为“Is Required”,用于匹配对象记录,字段类型需要和设备对象“Conditioner__CST”中标识具体某设备的id字段类型相同)和Number类型“temperature”,分别表示该区域的温度监控设备id和温度,具体操作步骤请参考如何自定义事件。 已创建高温报警事件“fire_alarm__e”,该事件中自定义参数为String类型“positionalarm”和Number类型“temperaturealarm”,分别表示高温报警位置和温度,具体操作步骤请参考如何自定义事件。
  • 使用原生服务具备哪些优势 面向第三方技术开发人员,原有资产不用重新开发,复用原有的业务和技术能力,可快速接入AstroZero,实现与现网系统快速集成,提升系统粘性。 提升微服务构建能力,优化应用系统架构,助力伙伴基于AstroZero构建重量级行业应用。 自有资产可基于AstroZero资产市场,实现共享、共建合作生态。 使用CCE/CCE敏捷版部署,接入AstroZero,投资小、成本低。传统的IT实现,客户如果要构建应用系统,必须从硬件和软件全部一次性购买。使用AstroZero,像住酒店一样,按需入驻,不需要关注酒店的建筑、运营和维修。初始投资少、成本低、减少投资风险。
  • 如何使用原生服务 租户线下开发了一些服务,服务运行在Docker容器中。租户希望可将线下开发的这些服务集成到AstroZero上,供AstroZero内部应用或者其他第三方系统调用。 Native Service在AstroZero内的使用场景包括但不限于: 在服务编排内部进行调用 租户线下开发的服务集成到AstroZero上,可以作为Native服务,被服务编排调用。 外部系统通过Restful接口调用 通过下面的REST接口,调用原生服务,输入参数在body中填写。 https://AstroZero 域名 /native/NativeService1/0.1.0/health 其中,“AstroZero域名”为AstroZero对外提供的默认域名,“/native/NativeService1/0.1.0/health”为该服务开放接口的URL,可以在开放接口详情中获取。该调用方式,只适用于外部接口。 图3 查看接口URL 在脚本中调用 租户线下开发的服务集成到AstroZero上,且在AstroZero上自定义该服务的开放接口后,可以在脚本中内部调用开放接口。 脚本部分示例如下: let resp3 = httpClient.post("https://AstroZero域名" + "/native/NativeService1/0.1.0/health", callOptions3); console.log(context.getHost()) console.log(resp3.body); if (resp3.body.resCode == "0" && resp.body.result) { console.log('auth success, currrent user is: ', resp3.body.result.name) } 其中,“AstroZero域名”为AstroZero对外提供的开发态默认域名,“/native/NativeService1/0.1.0/health”为该服务开放接口的URL。该调用方式,只适用于外部接口。 在页面中调用 在高级页面的Widget代码中,调用原生服务的开放接口。标准页面则可在事件代码中直接调用原生服务的开放接口或通过定义服务模型,关联调用原生服务的服务编排,再在页面事件代码中,调用服务模型,从而来调用原生服务。 在标准页面上传组件中,还可以调用原生服务的自定义接口实现上传功能。标准页面中上传组件功能介绍,请参见上传。 在工作流中调用 在服务编排中调用原生服务后,向工作流设计页面的泳道中,拖入“调用服务编排”图元。选择,在服务编排配置页面,选择需要调用的服务编排。 在触发器中调用 在服务编排中调用原生服务后,在触发器中可调用该服务编排,当满足触发器规则时,系统会执行该服务编排。
  • 相关概念 由于Native Service涉及的概念比较多,在做Native Service配置前,建议先提前了解如下相关概念。部分概念说明源于Kubernetes官网介绍,若需要了解更多Kubernetes相关内容,请参考Kubernetes资料。 Native Service 将租户已有的一些服务(服务为租户线下开发,运行在Docker容器中,并非在AstroZero上开发)的API集成到AstroZero上,供上层应用调用,帮助租户更加高效的构建应用。 Chart 在部署Native Service前,需要配置Chart,用于生成kubernetes(简称“K8s”)资源配置文件。配置Chart,其实是配置部署Docker容器时需要的资源、存储、网络等一系列参数,为容器的部署、服务的运行提供支撑。 Kubernetes(简称“K8s”) Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容和维护等功能。 节点(Node) 每一个节点对应一台服务器(可以是虚拟机实例或者物理服务器),容器应用运行在节点上。节点上运行着Agent代理程序(kubelet),用于管理节点上运行的容器实例。 实例(Pod) 实例(Pod)是 Kubernetes 部署应用或服务的最小的基本单位。一个Pod 封装多个应用容器(也可以只有一个容器)、存储资源、一个独立的网络 IP 以及管理控制容器运行方式的策略选项。 图1 实例(Pod) 容器 一个通过Docker镜像创建的运行实例,一个节点可运行多个容器。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。 图2 实例Pod、容器Container、节点Node的关系 Docker Docker在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等,极大的简化了容器的创建和维护。使得Docker技术比虚拟机技术更为轻便、快捷。Docker是Kubernetes Pod中最常用的容器运行时,但Pod也能支持其他的容器运行时。若需要了解更多Docker相关内容,请参考Docker官网。 Docker镜像 Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 镜像(Image)和容器(Contianer)的关系,像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 云容器引擎(Cloud Container Engine,简称“CCE”) 云容器引擎提供高可靠高性能的企业级容器应用管理服务,支持Kubernetes社区原生应用和工具,简化云上自动化容器运行环境搭建。 密钥(Secret) 密钥是一种用于存储工作负载所需要认证信息、密钥的敏感信息等的资源类型,内容由用户决定。资源创建完成后,可在容器工作负载中作为文件或者环境变量使用。 ConfigMap ConfigMap是一种用于存储工作负载所需配置信息的资源类型,内容由用户决定。配置项创建完成后,可在容器工作负载中作为文件或者环境变量使用。允许您将配置文件从容器镜像中解耦,从而增强容器工作负载的可移植性。 无状态负载 等同于Kubernetes中的“Deployment”概念,所有Pod实例之间是对等的,互不依赖,少了任意一个Pod实例,并不影响整个工作负载的功能。 有状态负载 等同于Kubernetes中的“StatefulSet”概念,是用来管理有状态应用的工作负载API对象。和“无状态负载”相同的是,“有状态负载”管理了基于相同容器定义的一组Pod,和“无状态负载”不同的是,“有状态负载”为每个Pod维护了一个固定的ID。这些Pod是基于相同的声明来创建的,但是不能相互替换。无论怎么调度,每个Pod都有一个永久不变的ID。 Service 可以理解为使用标签选择器(selectors)标识的一组Pod,通过Service可以访问到这组Pod。 Ingress Ingress是对集群中服务的外部访问进行管理的API对象,访问方式是HTTP或者HTTPS。
  • 在脚本中调用连接器 您在脚本中,调用已创建的连接器,实现用户登录微信公众号。 在微信客户端的H5页面,发起AJAX请求,用于获取code。 请求如下所示: https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。 参考开发一个简单脚本实例中操作,创建一个空白脚本。 图2 创建一个空白脚本 在脚本编辑器中,输入如下代码。 import * as wechat from 'wechat'; let connectorID = "whchat" let code = "xxxxx" let client = wechat.NewClient(connectorID) let res = client.GetAccessToken(code) console.log(res) 其中,“connectorID”为连接器的名称,“code”为1获取的code取值。 单击脚本编辑器页面上方的,保存脚本。 保存成功后,单击,执行脚本。 不用输入请求报文,直接单击测试窗口右上角的。 在日志页签,查看到已获取“access_token”和“openid”,可用于登录微信公众号。 { "access_token":"AC CES S_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }
  • 应用模板的分类 应用模板涵盖了疫情防控、人事管理、行政办公、项目管理、通用应用、行业应用等领域,您可以直接使用应用模板快速创建应用。基于应用模板创建应用后,用户还可快速定制和扩展应用,满足自身业务的个性化诉求。 低代码平台典型的应用模板如下所示,其他模板介绍请以界面提供的为准。 应用页面支持PC和Phone适配,本文截图以PC端展示为例进行说明。 绩效管理 助力企业或者组织管理者完成员工绩效管理,绩效管理包括员工自评、主管审核、绩效结果确定一系列活动。 调查问卷 为企业和个人提供问卷模板,用于收集资料或管理问题记录。该模板以对Astro轻应用开发者展开调查问卷为例,您可基于该模板快速自定义调查问卷内容。 健康打卡 助力企业或者组织管理者完成员工健康打卡管理,健康打卡包括每日健康打卡、发烧情况跟进、健康打卡管理和发烧跟进管理。 出差 帮助企业快速创建出差申请及审批流程,提高出差审批效率。 财务报销 帮助企业用户,快速处理财务报销流程及业务。 在线投票 快速创建在线投票轻应用。 项目进度跟踪 可跟踪项目中每项任务的进展情况,团队可基于此定时项目管理轻应用。 设备维修管理 快速创建设备(电梯)维修管理轻应用,适用于各类维修工单场景。
  • 属性 在属性中,设置基本柱图组件的位置、边框、背景等。 图2 属性 基础 组件标题:设置组件的标题。 组件名称:设置组件的名称。 位置 距离左端:组件到页面左侧的距离,单位为px。 距离顶端:组件到页面顶部的距离,单位为px。 宽度:组件的宽度,单位为px。 高度:组件的高度,单位为px。 堆叠顺序:设置组件层叠显示顺序。组件的堆叠顺序默认都是“1”,数字越大,显示越靠前。当需要让组件置底时,可设置堆叠顺序为“0”。 自适应高度:组件的高度是否随宽度改变。 边框:设置组件的边框样式,如全边框或角边框。 背景 样式:设置背景的样式,如普通、居中、拉伸等。 图片链接:背景图片URL。 颜色:设置背景的颜色。
  • 如何设置数据系列 选择基本柱图组件,单击鼠标右键选择“高级设置”。 展开数据系列配置,单击旁边的“+”,添加数据系列。 图5 配置数据系列 在右侧“数据”页签,配置该数据系列的数据。 例如,在使用系统预置的静态数据基础上,添加如下加粗代码,配置新增数据系列的数据。也可以使用“动态数据”调用后台接口URL返回如下结构模型数据。 { "resCode": "0", "resMsg": "成功", "result": [{ "order": { "dataX": [ "保洁", "安管", "工程", "绿化", "消杀", "特约" ], "dataValue": [{ "title": "工单总数", "value": [ 411, 965, 427, 630, 85, 800 ] }, { "title": "费用", "value": [ 500, 1065, 327, 730, 185, 1000 ] } ] } }] } 配置添加的数据系列柱状条颜色、柱状条宽度、柱条边框圆角、数值是否显示,柱状图上显示的数值对应上述静态数据中的数值。 设置完成后,单击“确定”。
  • 场景描述 本节介绍的是在应用内创建业务权限凭证,您还可以在管理中心进行配置,相关操作请参考设置业务权限。两者的区别是在应用中创建的业务权限凭证,可在打包发布应用时,将业务权限凭证一起发布出去,在管理中心创建业务权限凭证无法随应用发布出去。 通过该章节创建业务权限后,参考设置业务权限在权限配置的“业务权限凭证”页签,配置用户的业务权限。在自定义接口URL时,可通过配置该业务权限,控制只有该业务权限的用户才可访问自定义接口URL。自定义接口的业务权限配置,请参考如何自定义调用脚本的URL和如何自定义调用服务编排的URL。
  • 控制组件只可读不可编辑 在用户填写调查问卷页面,选中“提交”按钮组件。 在右侧“事件”页签中,单击,进入添加动作页面。 在“内置动作”中,单击“只读/编辑控件”。 在右侧页面中,单击“添加控件”,选择需要设置的组件,单击“确定”。 图1 选择组件 设置组件是否可编辑,单击“创建”。 图2 设置是否可编辑 返回标准页面开发界面,单击页面上方的,保存页面。 单击,预览页面,填写问卷项后,单击“提交”按钮,可预览按钮的事件效果。
  • 操作步骤 确认高级页面属性开关“合并并压缩资源”已关闭。 参考登录经典应用设计器中操作,登录经典版应用设计器。 在应用设计器下方,选择“页面设置”。 获取锁后,在“属性”页签,去勾选“合并并压缩资源”。 若勾选“合并并压缩资源”,会对所有高级页面涉及的css和js文件进行合并及压缩,使用单页面性能检查功能时,不要勾选该选项。 图1 关闭“合并并压缩资源”属性 设置完成后,单击,并单击,释放锁。 打开要进行性能检查的高级页面,在浏览器 开发者工具 中,勾选“Disable cache”属性。 在Chrome浏览器中,按下“F12”或者“Ctrl + Shift + I”,开启开发者工具。 在“Network”页签,勾选“Disable cache”属性(即禁用缓存)。 在进行页面性能检查时,如果不勾选该选项,性能检查会读取缓存中的数据,导致性能检查结果不准确。 图2 勾选“Disable cache”属性 在已发布的高级页面上方,单击“性能分析”,进入页面性能分析报告页面。 开发者工具请保持打开状态,关闭后“Disable cache”属性会自动不勾选。同时请确保高级页面已发布,若未发布,单击高级页面上方的,发布页面。 图3 查看性能分析报告 在页面性能报告中,单击各指标后的“展开”,可查看性能指标详情。 图4 查看性能指标详情
  • 使用说明 在如下两个场景,可以基于已有脚本,创建新脚本: 场景1:在已有脚本基础上新建版本。 因业务需要,脚本要实现的能力变化,此时可以基于原有脚本修改,并保存为脚本的新版本。在此场景下,原有脚本作为老版本自动失效。 场景2:在已有脚本基础上新建脚本。 需要开发的新脚本与已有的某个脚本类似,此时可以基于原有脚本修改,再保存为新的脚本名称。在此场景下,原有脚本仍然有效。新脚本和老脚本也没有关联关系,各自独立。
  • 属性 数据绑定:通过建立不同类型的视图模型,将各种数据源和组件的返回值或者属性值进行关联,实现动态数据效果。 值绑定:设置组件绑定的数据模型,数据模型一般有以下几种。更多介绍,请参见值绑定。 自定义:由用户自定义的前端模型,可以在模型树上快速创建自定义字段。 对象:由后台对象模型映射创建,支持选择字段。 服务:由后台服务的出入参数模型创建,分别生成inputParam和outputParam节点。 事件:由后台事件的字段映射创建,并且支持websocket刷新模型数据。 属性值绑定,用于对该组件所有属性的动态设置。当某一属性被动态绑定时,以绑定值为准。更多介绍,请参见属性绑定。 基本属性:基本属性通过数据绑定后,在运行时以数据绑定的值为准。 默认分页大小:设置默认每页条数(分页大小)。 每页条数切换的配置:每页条数切换的配置,如[10,20,40,100]。 大小:分页显示大小,可选值为small(迷你版)或不填(默认)。 简洁版:是否简洁版显示分页样式。 AUI风格:是否展示AUI风格。 显示跳转:是否显示跳转,显示后可设置快速跳转到某一页。 显示分页:是否显示分页,显示后可设置具体的分页大小。 公共 控件名称:当前组件的名称。 隐藏:是否隐藏该组件,此方式为静态配置该组件的隐藏。还可以将该组件属性值“隐藏”配置为布尔类型模型字段,在自定义JS代码中来控制模型字段取值,从而设置该组件是否隐藏,这种动态设置优先级是最高的。 样式 布局:设置组件的宽度、高度等。 字体:设置字体大小、字体样式、颜色等。 背景:设置背景颜色、透明度。 边框:设置边框颜色、宽度等,单位为px。 阴影:设置阴影颜色、模糊、扩散等,单位为px。 高级设置 样式源码:组件具体样式代码,组件样式设置后,样式代码将自动显示在“样式源码”中,也可以自定义样式代码,对组件进行详细配置,自定义代码支持多行输入,并高亮显示样式参数。 样式类:当前组件使用的 CSS 样式类名,可在CSS代码中进行引用。
  • 在脚本中调用连接器 在脚本中,调用连接器,实现调用ModelArts的接口。 参考创建空白AstroZero脚本中操作,创建一个空白脚本。 在脚本编辑器中,输入如下代码。 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 新建一个服务编排 标签:新建服务编排的标签名,用于在页面展示。 名称:服务编排在系统中的唯一标识,创建后不可修改。 类型:新建服务编排的类型,本示例选择“Event Trigger”。 Autolaunched Flow:自启动服务编排,即在接口调用后,会立即执行服务编排中定义的逻辑。 Event Trigger:事件触发的服务编排,在事件触发时,才会开始执行服务编排中定义的逻辑。 事件:选择如何自定义事件中创建的事件(请确保事件已启用)。 描述:服务编排的描述信息。 在服务编排设计页面左侧,选择“逻辑”,拖拽“决策”图元至画布中。 该图元类似if语句的判断,用于在服务编排流程中创建判断条件,根据判断结果连线其他图元,决定后续执行何种操作。本示例需要设置应聘者被成功录用、应聘者没被录用和其他三个判断分支。 图2 拖拽决策图元至画布中 选中决策图元,单击,设置分支条件参数。 图3 pass分支条件配置 图4 unpass分支条件配置 可编辑的结果,即所有的判断条件。系统已预置默认条件,即当其他所有条件均不满足情况下,进入该分支。 本示例,需要新增如下两个判断条件: Pass:应聘者被录用。应聘通过时,事件中自定义的布尔类型参数“Result”赋值为全局常量“{!$GlobalConstant.True}”,表示结果为真,即应聘通过。 Unpass:应聘者没有被录用。应聘失败时,事件中自定义的布尔类型参数“Result”赋值为全局常量“{!$GlobalConstant.False}”,表示结果为假,即应聘拒绝。 在服务编排设计页面左侧,选择“基本”,拖拽“发送邮件”图元至画布中。 发送邮件是发送邮件的接口。本示例中,需要根据录用结果,发送不同的邮件给人事部。 录用成功,需要邮件通知人事部办理入职。 录用不成功,需要邮件通知人事部告知应聘者应聘失败。 事件超时(默认分支),需要邮件通知招聘经理,看其是否给出招聘结果。 如下图所示,以应聘者被成功录用为例,设置发送邮件参数。 选中发送邮件图元,单击,设置基本信息。 图5 设置邮件发送基本信息 单击,设置邮件发送参数。 图6 配置邮件发送参数 邮件配置:可选择“直接编辑”手动设置邮件信息或“基于模板”选择邮件模板。本示例选择“直接编辑”。 主题:邮件的标题。 内容:邮件内容,需要使用事件变量“EmployResultNotify__e”。 地址:接收人的邮箱地址。 字符串:表示直接输入。 集合:表示可以拖入一个集合变量。 参照5中操作,设置应聘者录用失败和超时邮件发送。 如图7所示,连接所有元素。 图7 连接并设置起始元素 在服务编排设计页面上方,单击,保存服务编排。 保存成功后,单击,启用服务编排。 启用后,当有“EmployResultNotify”事件触发时,即会执行服务编排中定义的逻辑。
  • 什么应用代码可以保护 应用包类型有资产包和源码包两种,仅资产包可设置是否受保护,源码包不受保护。 参考应用打包发布,选择“资产包”发布的应用包,包中组件可设置是否受保护。选择该项后,需要配置版权信息(可选)、描述(可选)、每个组件的保护设置(必选,配置为未受保护或者只读保护)。 三种类型保护模式:未受保护、只读保护和不可见保护。相当于Linux下的三种保护模式,即可读可写可执行(RWX)、不可写(RX)和仅可执行(X)。
  • 前提条件 自定义“我的仓库”前,您需要拥有一个华为账号或一个可用于访问OBS的 IAM 用户,即先 注册华为账号 开通华为云、完成实名认证、创建IAM用户、充值以及购买资源包,具体操作请参见使用OBS前需要做的准备工作。 参考获取AK/SK中操作,获取AK(Access Key ID)、SK(Secret Access Key),即访问密钥对。 在华为OBS上创建存储桶(例如“bing.testonly.1”),用于后续存储资产包使用,具体操作请参见如何创建桶,并记录创建桶时选择的区域。
  • 属性 在属性中,设置雷达图组件的位置、边框、背景等。 图2 属性 基础 组件标题:设置组件的标题。 组件名称:设置组件的名称。 位置 距离左端:组件到页面左侧的距离,单位为px。 距离顶端:组件到页面顶部的距离,单位为px。 宽度:组件的宽度,单位为px。 高度:组件的高度,单位为px。 堆叠顺序:设置组件层叠显示顺序。组件的堆叠顺序默认都是“1”,数字越大,显示越靠前。当需要让组件置底时,可设置堆叠顺序为“0”。 自适应高度:组件的高度是否随宽度改变。 边框:设置组件的边框样式,如全边框或角边框。 背景 样式:设置背景的样式,如普通、居中、拉伸等。 图片链接:背景图片URL。 颜色:设置背景的颜色。
  • 使用说明 页面间组件的交互,除了需要事件-动作机制,还需要用到低代码中的页面宏。本章节通过具体示例,为您介绍页面间组件交互的方法。如图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的介绍,请参见同页面内组件的交互。
  • 属性 数据绑定:通过建立不同类型的视图模型,将各种数据源和组件的返回值或者属性值进行关联,实现动态数据效果。 值绑定:设置组件绑定的数据模型,数据模型一般有以下几种。更多介绍,请参见值绑定。 自定义:由用户自定义的前端模型,可以在模型树上快速创建自定义字段。 对象:由后台对象模型映射创建,支持选择字段。 服务:由后台服务的出入参数模型创建,分别生成inputParam和outputParam节点。 事件:由后台事件的字段映射创建,并且支持websocket刷新模型数据。 属性值绑定,用于对该组件所有属性的动态设置。当某一属性被动态绑定时,以绑定值为准。更多介绍,请参见属性绑定。 基本属性 弹性布局:是否开启弹性布局。开启后,可以简便、完整、响应式的实现各种页面布局。 列数:设置表单的列数。开启弹性布局时,才显示该配置。 标签对齐方式:设置标签对齐方式,如左对齐、右对齐和上侧对齐。 动态表单数据:请输入JSON格式的选项内容。 公共 控件名称:当前组件的名称。 隐藏:是否隐藏该组件,此方式为静态配置该组件的隐藏。还可以将该组件属性值“隐藏”配置为布尔类型模型字段,在自定义JS代码中来控制模型字段取值,从而设置该组件是否隐藏,这种动态设置优先级是最高的。 禁用:是否禁用该组件。 只读:值是否只读。 样式 布局:设置组件的宽度、高度等。 字体:设置字体大小、字体样式、颜色等。 背景:设置背景颜色、透明度。 边框:设置边框颜色、宽度等,单位为px。 阴影:设置阴影颜色、模糊、扩散等,单位为px。 高级设置 样式源码:组件具体样式代码,组件样式设置后,样式代码将自动显示在“样式源码”中。也可以自定义样式代码,对组件进行详细配置。自定义代码支持多行输入,并高亮显示样式参数。 样式类:当前组件使用的CSS样式类名,可在CSS代码中进行引用。
  • 操作步骤 在Native Service配置页面,选择“导航”。 图1 单击导航 在“API设计”页签,单击“开始设计API”。 选择“使用模板”,配置基本信息和新URL对应的版本号,单击“创建”。 图2 创建一个新版本 openApi版本:接口定义需要符合openApi规范,这里配置具体openApi的版本号。 选择模板:选择系统预置的模板。 版本:输入服务版本号。 标题:原生服务API的名称。 创建完成后,单击“新增资源”。 在“增加资源及操作方法”页面,配置相关参数,单击“确认”。 图3 增加资源及操作方法配置页面 输入一个新的资源路径(以/开头):与镜像文件中的接口路径保持一致。 方法:调用的方法,如GET(查询)、PUT(增加)、POST(修改)、DELETE(删除)、PATCH(对资源进行部分修改)。 操作名称:与镜像文件中的操作名称保持一致。 公共接口:若勾选,则只能在公共接口中调用,无法在服务编排和脚本中使用。 内容类型:当勾选“公共接口”时,您需要配置内容类型,即请求中的body类型。其中,“application/x-www-form-urlencoded”、“application/xml”、“multipart/form-data”、“text/html”和“text/plain”用于文件上传接口,选择该内容类型,只能调用post类型的方法。 描述:描述信息。 单击生成的方法,可以在右侧编辑方法的URL、Header、Response参数,需要和镜像文件中接口的URL参数、Header参数、请求参数、返回参数保持一致。编辑参数后,需要单击参数操作列的,再单击“保存”。 您可参考界面上“/case”、“/case/{CaseId}”两个示例编辑生成的方法。每个方法都需要定义Response参数,否则会部署失败。返回体数据结构在模式对象中定义。 当Body参数和Response参数较多,一些参数可以封装成对象类型的参数,并在“模式对象”页签设置该类型参数,注意“模式对象”页签中参数名与操作中URL参数不能同名。 支持按照操作名称和资源路径单过滤或者组合过滤搜索方法。 图4 编辑方法 图5 定义模式对象 参考4~6,新增其他API方法。 编辑方法完成后,需要手动删除“/case”、“/case/{CaseId}”两个示例,删除示例模式对象。 单击“保存”,创建的自定义接口会出现在页面上。 在页面右上方,单击,可以查看自定义接口中的方法和模型对象。单击,可导出该原生服务下接口定义yaml文件。 单击,发布API。 发布后如果需要修改API,需要单击,取消发布后进行修改,修改后再保存并发布。 已发布的API可能在服务编排中已经使用,如果修改API导致不兼容,请同步修改引用该API的服务编排。
  • 为对象配置内嵌触发器 AstroZero支持用户给对象增加内嵌触发器,实现在增/删/改对象的记录数据时,自动执行内嵌触发器脚本(该脚本由用户自定义,其实就是一段普通的TypeScript脚本,没有输入输出参数)。例如,在对象记录插入前、记录插入后、记录更新前、记录更新后、记录删除前或者记录删除后,自动执行内嵌触发器脚本。 下面以之前创建的对象“CNAME__Class__CST”为例,创建一个记录删除后的触发器,实现在删除一条“CNAME__Class__CST”对象的记录后,把相应的“name”、“CNAME__number__CST”数据记录到日志对象“CNAME__log__CST”中。在此需要提前创建如下的日志对象“CNAME__log__CST”,如何创建请参考上一节中对象“CNAME__Class__CST”的创建过程。 表2 “CNAME__log__CST”对象的字段 对象 字段来源 字段名称 字段数据类型 CNAME__log__CST 自定义字段,手动创建 CNAME__operator__CST 文本,数据长度36。 自定义字段,手动创建 CNAME__className__CST 文本 自定义字段,手动创建 CNAME__classNumber__CST 数字,表示班级编号。 在对象“CNAME__Class__CST”配置页面,单击“内嵌触发器”页签,再单击“新建”。 图5 新建内嵌触发器 输入触发器的基本信息,单击“保存”。 图6 输入信息 表3 内嵌触发器参数说明 参数 参数说明 标签 内嵌触发器在用户界面展示的名称。 名称 内嵌触发器的名称,单击后默认自动生成,与“标签”值保持一致。 事件触发时机 内嵌触发器在什么时候生效,可直接在下拉框中选择。即在系统执行如下某动作时,自动执行触发器的脚本: 插入前:记录插入操作前触发。 修改前:记录更新操作前触发。 删除前:记录删除操作前触发。 插入后:记录插入操作后触发。 修改后:记录更新操作后触发。 删除后:记录删除操作后触发。 描述 内嵌触发器的描述。 编写触发器的脚本,其中对象名称、字段名称和之前创建的保持一致。 对象的内嵌触发器脚本,其实就是一段普通的TypeScript脚本,没有输入输出参数。在脚本中可以通过“对象名.字段名”,来访问当前记录的具体字段值。针对“事件触发时机”为“修改前”或者“修改后”的触发器(即触发器脚本执行条件是对象记录更新前、记录更新后),脚本代码中通过“对象名.字段名”获取到的都是当前记录的具体字段值,目前不支持获取更新前的记录值。 //test_delete_trigger import * as db from 'db'; import * as context from 'context'; let name = CNAME__Class__CST.name; let CNAME__number__CST = CNAME__Class__CST.CNAME__number__CST; let logObj = db.dynamicObject('CNAME__log__CST'); logObj.insert({ "CNAME__operator__CST": context.getUserId(), "CNAME__className__CST": name, "CNAME__classNumber__CST": CNAME__number__CST, }); 关于脚本的更多说明,请参考脚本开发。 编辑后单击上方的,进行保存。 保存成功后,单击,启用脚本。 启用后在内嵌触发器列表,可查看到当前触发器状态为“ON”,表示当触发条件满足时,AstroZero会自动执行该触发器脚本。 图7 启用触发器 验证触发器。 在对象“CNAME__Class__CST”配置页面,单击“布局”页签,在“Class Records”后单击。 “对象名 Records”显示对象数据的记录列表。预览该页面可增、删、改、查对象数据。 在布局的预览页面,单击“添加”,新增并保存,增加数据,为下一步删除数据做准备。 图8 如何新增数据 单击数据所在列的“删除”,删除数据。 图9 删除数据 在对象“CNAME__log__CST”配置页面,单击“布局”页签,在“log Records”后单击。 图10 预览Records页面 查看到对象“CNAME__log__CST”数据列表中,已记录一条刚删除的“CNAME__Class__CST”数据,触发器生效。 图11 触发器脚本新增的一条数据
  • 什么是校验器和触发器 对象校验器:在向对象中录入记录数据时,为了保证对象数据的有效性,可以定义一些校验规则,对字段值以及各字段之间的逻辑关系进行校验。例如,name字段不能为空,MinPrice字段不能大于maxPrice字段等。 对象触发器:与数据库中的触发器类似,可以为对象定义触发器。在增/删/改对象的记录数据时,自动触发自定义的TypeScript脚本执行。脚本的执行结果将会影响主操作(即增删改记录)的结果,系统保证主操作与触发器在一个事务中执行,要么都成功,要么都失败。
  • 操作步骤 参考如何登录经典应用设计器中操作,登录经典版设计器。 在应用开发页面左侧,单击,选择“设置”。 包类型选择“资产包”,界面参数详细介绍,请参见如何将应用发布到“我的仓库”。 图1 编译设置 在应用开发页面左侧,单击,选择“编译”。 编译成功后,页面会显示“编译XXX成功”。 图2 编译资产包 在应用开发页面左侧,单击,选择“ 开天企业工作台 ”。 可将应用中的标准页面和高级页面,发布到华为开天 企业工作台 。 在弹出的页面,设置用户访问首页和管理后台首页,单击“发布”。 图3 发布开天企业工作台设置 页面显示“发布成功”,则表示应用已成功发布到开天企业工作台。 登录开天企业工作台管理后台,参考应用权限控制中操作,设置应用可见范围。
共100000条