华为云用户手册

  • 属性 数据绑定:通过建立不同类型的视图模型,将各种数据源和组件的返回值或者属性值进行关联,实现动态数据效果。 值绑定:设置组件绑定的数据模型,数据模型一般有以下几种。更多介绍,请参见值绑定。 自定义:由用户自定义的前端模型,可以在模型树上快速创建自定义字段。 对象:由后台对象模型映射创建,支持选择字段。 服务:由后台服务的出入参数模型创建,分别生成inputParam和outputParam节点。 事件:由后台事件的字段映射创建,并且支持websocket刷新模型数据。 属性值绑定,用于对该组件所有属性的动态设置。当某一属性被动态绑定时,以绑定值为准。更多介绍,请参见属性绑定。 基本属性:基本属性通过数据绑定后,在运行时以数据绑定的值为准。 内容或链接:设置扫描二维码后,要展示的文本内容或者跳转的链接地址。 宽度:二维码的宽度,单位像素。默认值为150。 容错级别:二维码被遮挡或残破时依然能被识别的几率,容错级别越高抗残破或遮挡的能力就越强。 空白间距:四周空白间距,单位像素。 前景色:二维码的颜色。 背景色:背景颜色。 中间Logo:二维码中间Logo图片,可不用设置。设置Logo后,如果扫描二维码识别失败,可以调高容错级别或调大二维码。 Logo大小:设置Logo的大小,单位像素。 公共 控件名称:当前组件的名称。 隐藏:是否隐藏该组件,此方式为静态配置该组件的隐藏。还可以将该组件属性值“隐藏”配置为布尔类型模型字段,在自定义JS代码中来控制模型字段取值,从而设置该组件是否隐藏,这种动态设置优先级是最高的。 样式 布局:设置组件的宽度、高度等。 字体:设置字体大小、字体样式、颜色等。 背景:设置背景颜色、透明度。 边框:设置边框颜色、宽度等,单位为px。 阴影:设置阴影颜色、模糊、扩散等,单位为px。 高级设置 样式源码:组件具体样式代码,组件样式设置后,样式代码将自动显示在“样式源码”中,也可以自定义样式代码,对组件进行详细配置,自定义代码支持多行输入,并高亮显示样式参数。 样式类:当前组件使用的 CSS 样式类名,可在 CS S代码中进行引用。
  • 前提条件 自定义“我的仓库”前,需要拥有一个华为账号或一个可用于访问OBS的 IAM 用户,即先 注册华为账号 并开通华为云,完成实名认证、创建IAM用户、充值以及购买资源包,具体操作请参见使用OBS前需要做的准备工作。 参考获取AK/SK中操作,获取AK(Access Key ID)、SK(Secret Access Key),即访问密钥对。 在华为OBS上创建存储桶(例如“bing.testonly.1”),用于后续存储资产包或大屏项目包使用,具体操作请参见如何创建桶,并记录创建桶时选择的区域。
  • 操作步骤 参考登录经典应用设计器中操作,登录经典版应用设计器。 将鼠标放在应用的某个文件夹上(如Logic),单击“+”,选择“触发器”。 图1 选择触发器 设置基本信息,单击“添加”。 图2 新建触发器 对象:关联的对象(不可编辑)。本示例选择“Employee__CST”。 标签:触发器的标签,用于在页面展示。本示例设置为SendEmailProcess。 名称:触发器的唯一标识,系统根据标签取值自动生成。本示例设置为SendEmailProcess。 描述:触发器的描述信息。 触发类型:触发器启动类型,新建后可修改。本示例选择“插入或更新记录时”。 仅在插入记录时:当系统创建某条记录时。 仅在更新记录时:当系统更新某条记录时。 插入或更新记录时:当系统创建或更新某条记录时。 被别的触发器调用时:被其他触发器所调用时。 收到平台事件时:被事件(event)触发时。选中该条件时,请在“事件”中配置具体事件。 单击“添加条件”,进入创建规则条件页面,进行配置,并单击“保存”。 图3 创建规则条件 条件名称:新建条件规则的名称。 执行操作条件:进入该条件规则的条件。本示例设置为“当条件满足时”。 设置条件:“字段”配置为“name”,“操作符”配置为“等于”,“类型”配置为“常量”,“值”配置为“"zhangsan"”。 单击“添加操作”,设置满足规则条件后执行的动作,单击“保存”。 图4 创建动作 操作类型:设置动作类型,本示例选择“邮件告警”。 操作名称:新建动作的名称。 电子邮件告警:选择配置好的邮件告警。 单击触发器编辑页面上方的,启用触发器。 结果验证。 基于“Employee__CST”对象,创建一条记录,对象“name”字段取值为“zhangsan”。用户“zhangsan@qq.com”成功收到邮件通知,表明触发器创建成功。
  • 常见问题 是否拥有执行触发器设定的操作权限,取决于触发器的创建人还是触发人? 回答:是否有执行触发器设定的操作权限,取决于触发者本人是否有相关权限,和触发器创建人无关。例如,某个触发器关联了对象“D__CST”,触发类型是“插入或更新记录时”,触发时执行脚本C,即对象“D__CST”数据有新增或更新时,会触发该触发器,从而执行脚本C。用户A是触发器的创建人,没有对象“D__CST”的操作权限和脚本C的执行权限,用户B有“D__CST”的操作权限和脚本C的执行权限,当用户B更新“D__CST”对象数据时,会触发该触发器,执行脚本C。
  • 操作步骤 参考登录经典应用设计器中操作,登录经典版应用设计器。 将鼠标放在应用的某个文件夹上(如Logic),单击“+”,选择“触发器”。 图1 选择触发器 设置触发器参数,单击单击“添加”。 图2 新建触发器 单击“添加条件”,进入创建规则条件页面,进行配置,单击“保存”。 图3 新增条件 条件名称:新增条件的名称。 执行操作条件:进入该条件规则的条件,本示例配置为“当条件满足时”。 设置条件:设置具体条件。字段配置为“name”,操作符配置为“等于”,类型配置为“常量”,值配置为“"zhangsan"”。条件中当字段是数字、百分比或币种金额类型时,取值不用加“""”,其他字段类型取值请加“""”。 单击“添加操作”,设置满足规则条件后执行的动作,单击“保存”。 图4 创建动作 操作类型:动作类型,设置为“邮件告警”。 操作名称:新增动作的名称。 电子邮箱告警:选择前提条件中配置的邮箱告警。 在页面上方,单击,启用触发器。 图5 启动成功后效果 结果验证。 基于“Employee__CST”对象创建一条记录,该对象“name”字段取值为“zhangsan”。 用户“123@qq.com”收到邮件通知。
  • 操作步骤 在“故障单流程”应用开发工作台,单击左侧导航栏下方的,进入应用预览页面。 图1 进入应用预览页面 在左侧导航栏选择“故障上报”,在“故障上报录入”页面录入故障,单击“提交”。 例如部门选择“App Cube”,“简要描述”和“详细描述”中填写“前端页面调用后台接口不通。” 图2 录入故障 在左侧导航栏中,选择“待办事项”,在“我的待办”中单击“一线分析”。 图3 单击一线分析 在“一线分析”页面进行操作,可填写一线分析的内容,单击“完成”。 在该页面,还可以进行其他活动。 委托:将任务主动委托给其他人处理。A把任务委托给B,A、B均可以查询和处理该任务。 移交:将任务主动转移给其他人处理。A把任务转移给B,则仅有B可以查询和处理该任务。 完成:表示执行任务并办理完成。 可选活动:在该任务中,还可以进行其他活动,这些活动是在7.e中配置的。 后续在左侧导航栏选择“待办事项”,在“我的待办”中查看并处理待办任务,测试整个流程是否符合预期。
  • 工作流设计器 工作流设计器由上方按钮区域、左侧面板图元区域、中间画布工作区域和右侧属性配置区域四部分组成。 图1 工作流设计界面 表1 工作流设计界面说明 序号 分类 功能说明 1 按钮区域 功能按钮区域,包括启用(或者禁用)、保存、另存为新版本或者新实例、运行、操作回退、撤销回退、启用流跟踪器以及切换版本的操作。支持快捷键操作,即可脱离鼠标直接用键盘操作。 2 面板图元区域 工作流的组成图元,详细介绍请参见为AstroZero工作流添加图元。 3 画布工作区域 工作流设计操作区域,在该区域可对工作流进行具体流程设计、组件放置。 选中图元或者泳道按“Delete”,可进行删除操作。 4 属性配置区域 整个工作流、泳道(Lane)或图元属性设置区域。 当选择工作流中图元时,右侧配置区域为该图元的属性设置区域。 当选择工作流中空白区域时,右侧配置区域为该工作流的设置区域。 当选择泳道左侧标签时,右侧配置区域为该泳道的属性设置区域。
  • 背景信息 API Explorer 是华为云为开发者提供的一站式API解决方案的统一平台,集成华为云云服务开放API,支持全量快速检索、可视化调试、帮助文档,帮助开发者快速查找、学习API和定位修复错误。 AstroZero通过对接API Explorer,可获取到大量华为云云服务的API元数据信息,从而为开发者提供访问这些API的连接器,无需再针对每个云服务单独开发连接器。 AstroZero当前支持对接如下云服务的API: 自然语言处理 自然语言处理(Natural Language Processing,简称NLP)是一款基于人工智能技术,针对各类企业及开发者提供的用于文本分析及挖掘的云服务,旨在帮助用户高效的处理文本。更多介绍,请参见https://support.huaweicloud.com/nlp/index.html。 对话机器人服务 对话机器人 服务(Conversational Bot Service) 是一款基于人工智能技术,针对企业应用场景开发的云服务,主要包括智能问答、智能质检、定制对话机器人和任务型对话等功能。更多介绍,请参见https://support.huaweicloud.com/cbs/index.html。 人脸识别服务 人脸识别 服务(Face Recognition Service,简称FRS),是基于人的脸部特征信息,利用计算机对人脸图像进行处理、分析和理解,进行身份识别的一种智能服务。更多介绍,请参见https://support.huaweicloud.com/face/index.html。 内容审核 服务 内容审核( Content Moderation ),基于图像、文本、 视频审核 技术,可自动进行涉黄、广告、涉政涉暴、涉政敏感人物等内容检测,帮助客户降低业务违规风险。更多介绍,请参见https://support.huaweicloud.com/moderation/index.html。 文字识别 服务 文字识别(Optical Character Recognition,简称OCR)以开放API的方式提供给用户,用户使用Python、Java等编程语言调用OCR服务API将图片识别成文字,帮助用户自动采集关键数据,打造智能化业务系统,提升业务效率。更多介绍,请参见https://support.huaweicloud.com/ocr/index.html。 图像识别服务 图像识别(Image Recognition),基于深度学习技术,可准确识别图像中的视觉内容,提供多种物体、场景和概念标签,具备目标检测和属性识别等能力,帮助客户准确识别和理解图像内容。更多介绍,请参见https://support.huaweicloud.com/image/index.html。 图像搜索 服务 图像搜索(ImageSearch)基于深度学习与图像识别技术,结合不同应用业务和行业场景,利用特征向量化与搜索能力,帮助客户从指定图库中搜索相同或相似的图片。更多介绍,请参见https://support.huaweicloud.com/imagesearch/index.html。 视频接入服务 视频接入 服务(Video Ingestion Service,简称VIS)是华为云提供的实时视频 数据接入服务 ,提供了摄像头视频数据采集、实时数据分发和视频数据转储等能力。借助视频接入服务,您可以与华为云视频分析服务集成,快速构建基于实时视频数据的智能分析应用。更多介绍,请参见https://support.huaweicloud.com/vis/index.html。 视频分析服务 视频分析服务(Video Analysis Service,简称VAS)依靠AI技术对视频进行智能分析,提供了视频预处理、视频审核、视频内容分析、 视频编辑 、视频搜索、 视频指纹 等功能。包含了对视频中目标的检测、跟踪、属性识别、行为识别、内容审核、摘要、标签等能力,在多种场景下为用户提供快捷高效的视频分析能力。更多介绍,请参见https://support.huaweicloud.com/vias/index.html。 语音交互 服务 语音交互服务(Speech Interaction Service,简称SIS)是一种人机交互方式,用户通过实时访问和调用API(Application Programming Interface,应用程序编程接口)将 语音识别 成文字或者将文本转换成逼真的语音等。更多介绍,请参见https://support.huaweicloud.com/sis/index.html。
  • 如何使用错误码 在应用开发时,可以根据需要在应用开发工作台导入租户下其他的错误码。导入后,可在应用开发工作台中使用该错误码。以在“A”应用为例,介绍如何导入错误码。 参考如何登录经典应用设计器中操作,进入“A”应用开发界面。 在“A”应用开发界面左侧菜单栏下方,选择“配置”,在打开的页签选择“自定义错误码”。 单击“导入”,选择账号下已有的错误码进行导入。 在脚本、服务编排中,使用错误码。 在脚本里使用错误码 这里通过新建脚本将上文创建的错误码抛出,在脚本中增加抛出错误信息的context函数setI18nError('错误码名称','变量1','变量2')。 在应用开发界面创建一个新脚本。 鼠标放在“A”应用开发界面的某一文件夹旁会出现加号,单击加号,选择“脚本”。选择“创建一个新脚本”,输入脚本名称,单击“添加”。 在脚本编辑器中录入如下代码,并单击上方按钮区域,保存脚本。 import*as context from'context'; context.setI18nError('命名空间__Error001','测试用例','脚本使用错误码的用例解读') 测试执行脚本。 单击编辑器上方的,在页面底部单击测试窗口右上角的。单击“输出参数”页签,显示如图2所示,可查看到抛出的错误码信息。 图2 运行脚本后显示界面 单击脚本编辑页面上方的,启用脚本。 在服务编排里使用错误码 在“全局上下文”新建公式变量,使用表达式SETI18NERROR(ErrorCodeName','变量1','变量2')方式引入错误码。 图3 服务编排里使用错误码 目前BPM中,错误码由BPM调用的脚本和服务编排抛出。
  • 使用说明 调用接口出错后,用户可根据每个接口对应的错误码来定位错误原因。AstroZero支持用户自定义错误码,并支持对错误码描述进行多语言国际化配置,实现根据语言的不同将错误码描述信息进行不同的展示。 本节介绍的是如何在管理中心配置错误码,用户还可以在应用开发工作台中配置错误码(相关操作请参考自定义错误码)。两者的区别是在应用开发工作台中配置的错误码,可在打包发布应用时,将错误码一起打包发布出去。例如将应用打包发布到运行环境,错误码也会同步打包到运行环境,不需要在运行环境重复创建。在管理中心设置的错误码,无法随应用发布出去。
  • 属性 在属性中,设置仪表盘组件的位置、边框、背景等。 图2 属性 基础 组件标题:设置组件的标题。 组件名称:设置组件的名称。 位置 距离左端:组件到页面左侧的距离,单位为px。 距离顶端:组件到页面顶部的距离,单位为px。 宽度:组件的宽度,单位为px。 高度:组件的高度,单位为px。 堆叠顺序:设置组件层叠显示顺序。组件的堆叠顺序默认都是“1”,数字越大,显示越靠前。当需要让组件置底时,可设置堆叠顺序为“0”。 自适应高度:组件的高度是否随宽度改变。 边框:设置组件的边框样式,如全边框或角边框。 背景 样式:设置背景的样式,如普通、居中、拉伸等。 图片链接:背景图片URL。 颜色:设置背景的颜色。
  • 结果验证 创建一个服务编排“fire_alarm”,创建后启用该服务编排,实现当kafka中出现高温报警事件时,AstroZero需要接收该事件,再向第三方系统发送该告警邮件。 鼠标放在应用下的Logic文件夹上,单击“+”,选择“服务编排”。 选择“创建一个新的服务编排”,设置标签和名称为“fire_alarm”,单击“添加”。 在服务编排设计页面左侧,拖拽“逻辑”下的“等待”图元至画布中。 单击,在“可编辑的事件”中,单击“新增”,新增“event0”分支。 配置该分支事件为高温报警事件,当系统中出现该事件时,会执行该分支。 图9 配置等待图元 拖拽“基本”下的“发送邮件”图元至画布中。 单击,设置发送邮件参数。 配置高温报警邮件的主题和内容,地址填入第三方系统的邮件接收地址。 图10 配置发送邮件图元 直接编辑:手动设置邮件信息。 基于模板:基于同一账号或基线中已有的邮件模板,设置邮件主题和内容,方便用户增加效率。 模板:选择“基于模板”时,需要选择邮件模板。 主题:设置邮件标题。 选中“直接编辑”时,需要配置邮件标题。 选中“基于模板”时,该参数配置区域置灰。 内容:设置邮件内容。 选中“直接编辑”时,需要配置邮件内容。 选中“基于模板”时,该参数配置区域置灰。 自定义变量:选中“基于模板”时,需要配置模板中的参数。在“值”中,直接输入参数取值或者从全局上下文拖拽变量。 地址:接收人的邮箱地址。 字符串:直接输入分号分隔的字符串或从全局上下文拖拽变量。 集合:从全局上下文拖拽集合变量。 抄送:抄送人员的邮箱地址,直接输入分号分隔的字符串或者从全局上下文拖拽变量。 密送:密送发送人员的邮箱地址,直接输入分号分隔的字符串或者从全局上下文拖拽变量。 按照下图连接所有图元,等待图元和发送邮件图元之间选择“event0”分支。 图11 连接所有图元 单击页面上方的,保存服务编排。 保存成功后,单击,启用服务编排。 创建一个服务编排“send_fire_event”,将温度监测事件“temperature”中位置参数“position”赋值为仓储公司某区域,温度“temperature”赋值为70度,启用该Flow,用于模拟事件发送。 鼠标放在应用下的Logic文件夹上,单击“+”,选择“服务编排”。 选择“创建一个新的服务编排”,设置标签和名称为“send_fire_event”,单击“添加”。 在服务编排编辑器页面左侧,拖拽“基本”下的“发送事件”图元至画布中。 单击,设置发送事件参数。 图12 配置发送事件图元 事件:选择待发送的事件。 分区字段:从事件中选择一个自定义参数用作Kafka的分区字段,则根据该字段值进行路由,相同的值将路由到同一个Kafka分区。如果不指定,则默认随机路由到不同Kafka分区,从而提升并发处理性能。 发送到外部:系统内部有配置与AstroZero相连Kafka的固定Topic“__BINGO_SYS_TOPIC”。若不勾选“发送到外部”,表示将事件数据发到默认的Topic上。若勾选“发送到外部”,则表示将事件数据发送到与AstroZero相连Kafka的其他Topic上。 延迟到事务结束(提交或回滚)后才发送:是否延迟到该服务编排事务结束后,才发送事件。 主题:勾选“发送到外部”时,才显示该参数,表示非系统配置的默认Topic。 目标/源:配置事件数据。 本示例中,“目标”请从下拉框中选择事件的自定义参数“temperature”和“position”,在“源”中给目标赋值。 按照下图连接所有图元。 图13 连接图元 单击页面上方的,保存服务编排。 保存成功后,单击,启用服务编排。 在“事件流”列表页面,单击该事件流程所在行的,运行该事件流程。 单击服务编排“send_fire_event”编辑器上方的,执行服务编排。 不用输入任何输入参数,直接单击“运行”。 参考上一步,执行服务编排“fire_alarm”。 不用输入任何输入参数,单击“运行”。 打开第三方系统邮箱,成功收到高温警报邮件,验证成功。
  • 前提条件 请联系运维,开启事件流License权限。开启后,才可新建、查看并管理事件流。 已创建并启用温度监测事件“temperature”,该事件中自定义参数为文本类型“position”和数字类型“temperature”,分别表示位置和温度,具体操作步骤请参考如何自定义事件。 已创建并启用高温报警事件“fire_alarm”,该事件中自定义参数为文本类型“positionalarm”和数字类型“temperaturealarm”,分别表示高温报警位置和温度,具体操作步骤请参考如何自定义事件。
  • 操作步骤 参考登录经典应用设计器中操作,登录经典版应用设计器。 将鼠标放在应用的某个文件夹上(如Logic),单击“+”,选择“事件流”。 开启事件流License权限后,才会有新建事件流的入口。 单击“新建”,进入“事件流”页面。 在“事件流”页面右侧,单击“设置”,进行数据配置。 图2 设置页面 窗口长度:事件流处理的数据采集时间间隔,单位为分钟。建议时间间隔不要配置过小,否则系统频繁的建表和执行SQL语句,会影响系统性能。例如:配置为“1”表示spark streaming每隔1分钟去kafka获取事件数据。 在“事件流”页面右侧,单击“图元”,拖拽“输入源”中Kafka图元至左侧画布区域,并配置基本信息,单击“保存”。 输入源中Kafka图标表示数据来自Kafka。 图3 数据来源Kafka基本信息页面 标签:新建数据源Kafka的标签名,用于在界面展示。 名称:新建数据源Kafka的名称,系统自动生成。 事件:需要订阅的事件。例如,配置为温度监测事件“temperature”。 从外部接收:是否从外部Kafka接收事件。 关闭该开关,从与AstroZero相连的Kafka接收事件。 打开该开关,从外部Kafka接收事件。本示例中关闭该开关,使用与AstroZero相连的Kafka。 Kafka集群地址:数据源Kafka的集群地址。多个节点服务器地址可用“,”间隔,格式为“Kafka节点1的ip:节点1端口号,Kafka节点2的ip:节点2端口号,...”。 获取Kafka的IP和端口号方法:登录每台Kafka节点服务器,查看“${KAFKA_HOME}/config”目录下,“server.properties”中“listeners”的取值。 订阅主题:获取的事件数据来源,即来自于kafka集群的哪个Topic。 从“图元”中,拖拽“投影”图元至左侧画布区域数据源Kafka下方,并在弹出的“添加投影器”页面配置基本信息,单击“保存”。 图4 “添加投影器”页面 标签:新建投影的标签名,用于在界面展示。 名称:新建投影的名称,系统自动生成。 输入字段:订阅事件的所有事件参数。选择所需的参数,单击,选中的参数会出现在“输出字段”中。 输出字段:从订阅事件的事件参数进行筛选后,用到的事件参数。 从“图元”中,拖拽“过滤”图元至左侧画布区域投影下方,并在弹出的“添加过滤器”页面配置基本信息和过滤条件,单击“保存”。 图5 设置过滤条件 标签:新建过滤的标签名,用于在界面展示。 名称:新建过滤的名称,系统自动生成。 条件设置:设置过滤条件。例如,图中的配置表示提取温度大于60度的事件。 字段:上一步筛选后的事件参数。 比较符:操作符,直接在下拉框中选择。 值:字段值。 (可选)从“图元”页面中,拖拽“分组”图元至左侧画布区域过滤器下方,并在弹出的“添加分组器”页面配置基本信息和分组条件,单击“保存”。 图6 “添加分组器”页面配置 标签:新建分组的标签名,用于在界面展示。 名称:新建分组的名称,系统自动生成。 分组设置:设置分组条件。例如,图中配置表示按照相同位置的大于60度的温度取温度平均值。 在“图元”页面右侧,拖拽输出源中的Kafka图元至左侧画布区域最下方,设置spark streaming输出事件和输出事件数据的接收方,单击“保存”。 可以拖拽多个Sink中的Kafka图元,设置多个事件接收方。 图7 数据接收方配置 标签:数据接收方Kafka的标签名,用于在界面展示。 名称:数据接收方Kafka的名称,系统自动生成。 事件:spark streaming输出的事件。本示例此处配置为高温报警事件“fire_alarm”。温度监测事件“temperature”中的“position”,对应高温报警事件“fire_alarm”中的“positionalarm”。温度监测事件的“temperature”,对应高温报警事件“fire_alarm”中的“temperaturealarm”。 发送到外部:是否发送到外部Kafka。若关闭该开关,表示发送到与AstroZero相连的Kafka。若打开该开关,表示发送到外部Kafka,需要配置“Kafka集群地址”和“订阅主题”。本示例中关闭该开关,使用与AstroZero相连的Kafka。 Kafka集群地址:接收事件的Kafka集群地址,例如10.136.14.56:9092。 多个节点服务器地址可用“,”间隔,格式为“Kafka节点1的ip:节点1端口号,Kafka节点2的ip:节点2端口号,...”。 获取Kafka的IP和端口号方法:登录每台Kafka节点服务器,查看“${KAFKA_HOME}/config”目录下,“server.properties”中“listeners”的取值。 接收事件的kafka集群,不需要一定配置为和AstroZero相连。 订阅主题:接收事件数据的kafka Topic,例如__BINGO_PROD_SYS_TOPIC。 事件属性/属性、值:配置输出事件与接收事件中,已定义参数的对应关系。 单击页面右上方保存按钮,设置“事件流”基本参数。 图8 该“事件流”基本参数页面 标签:新建事件流的标签名,用于在界面展示。 名称:新建事件流的名称,系统自动生成。 描述:新建事件流的描述信息。 单击页面上方的,启用事件流。
  • 背景信息 首先,您需要理解以下概念: kafka:是由Apache开发的一个开源流处理平台,是分布式发布、订阅消息系统。kafka主要用于处理活跃的流数据,一般kafka部署为集群模式。 Topic:用来区分kafka集群中,不同类型消息的主题。例如,应用程序A订阅了Topic1,应用程序B订阅了Topic2而没有订阅Topic1,那么发送到Topic1中的数据将只能被应用程序A读到,而不会被应用程序B读到。 spark streaming:大规模流式数据处理工具,第三方工具。
  • 什么是业务用户 AstroZero平台存在两类用户:用户(User)和业务用户(PortalUser)。关于用户和业务用户的更多介绍,请参见图解AstroZero中用户那些事。 用户(User)是指访问AstroZero的开发者账号,用来管理应用和业务用户。购买AstroZero的账号默认拥有所有权限,是管理员用户,可通过AstroZero环境的管理台添加其他用户账号并为其配置需要的权限。 业务用户(即PortalUser)是指登录并使用在AstroZero中开发的业务应用的用户账号。您可在业务配置中心创建、删除和编辑业务用户,并为业务用户配置相应的权限。 图1 AstroZero中用户行为
  • 自适应布局 自适应布局的特点是分别为不同的屏幕分辨率定义布局,即创建多个静态布局,每个静态布局对应一个屏幕分辨率范围。改变屏幕分辨率可以切换不同的静态布局,确保一个页面在所有终端上(各种尺寸的PC、平板、手机、智能手表等)都能显示出令人满意的效果。利用流式布局加弹性布局,分别为不同的屏幕分辨率定义布局。 标准页面的自适应布局主要是通过“分栏”组件实现的。“分栏”组件中包含一个或多个“栏”组件,“栏”组件可以简单理解为上一小节介绍的“容器”组件,用来提供某一部分的布局,多个“栏”组件组成“分栏”组件。通过配置不同分辨率屏幕中,“栏”组件的呈现形式,实现不同大小屏幕下不同的显示方案,如图13。 图13 分栏组件 “分栏”组件右侧属性配置面板的“行布局”中,可以选择“分栏”组件在PC端和移动端下“栏”的布局形式。“PC”属性中可以依据图示选择“分栏”组件,在PC端包含多少个“栏”。 为了方便说明,如何使用“分栏”组件实现自适应布局,向画布中拖拽一个“分栏”组件,在“PC”下选择从左到右三个“栏”的布局形式。向每个“栏”中拖拽一个“标签”组件和一个“输入框”组件用来模拟录入员工信息的场景,如图14。 图14 分栏组件模拟录入员工信息 “phone”属性中,可以依据图示,选择“分栏”组件中“栏”,在移动端的布局形式,如图12所示。当在“PC”选择左到右三个“栏”的布局形式时,移动端的屏幕较小,仍然选择从左到右布局可能导致页面元素显示不全或变形,这时可以在“phone”中选择在移动端下“栏”转换为从上到下排列,此时单击页面上方的“全屏”,手机图标就可以模拟在移动端展示的效果,如图15。 图15 移动端展示效果“竖排” 如果在“phone”中,依旧选择从左到右的布局方式,则展示效果如图16。 图16 移动端展示效果“横排” 布局模式:可以调整“分栏”组件为流式布局或弹性布局,用来控制“分栏”组件中多个“栏”组件或其他组件的布局,更多流式布局和弹性布局的介绍请参见标准页面布局。 录入分隔比例:在“PC”属性的选项中,单击最后的齿轮按钮,可以设置“录入分隔比例”。这个比例指的是将整个屏幕宽度划分为24份,每个“栏”组件所占宽度比例,通过设置“录入分隔比例”,在不同大小的屏幕下“分栏”组件获得屏幕的宽度,决定每个“栏”的宽度,即使在不同大小的屏幕下显示的比例是不变的,从而实现自适应布局。设置“分栏”选择从左到右三个“栏”均分,显示“录入分隔比例”为“8:8:8”,如图17所示。 图17 “录入分隔比例”为“8:8:8” 调整“录入分隔比例”为“6:12:6”时,中间的“栏”的宽度就会按比例放大,两侧“栏”的宽度按比例缩小,如图18。 图18 “录入分隔比例”为“6:12:6”
  • 基础布局设置 标准页面提了流式布局(Flow Layout)和弹性布局(Flex Layout),标准页面的基础布局主要是通过“容器”组件实现的。 容器组件就是基础的布局容器,可以将其理解为CSS中DIV的概念。DIV是层叠样式表中的定位技术,全称Division,即为划分,有时可以称其为图层。 DIV是HTML中的一个标签元素,用来为HTML文档内大块的内容提供结构和背景的元素,可以将“容器”简单理解为画布,通过设置外层画布的属性达到控制内容布局的效果。 流式布局 容器组件默认弹性布局未开启,处于流式布局的状态,如图1所示。 图1 流式布局 在流式布局中,组件默认为块级(Block)元素,即不论组件宽度是多少,默认占据全部父级元素的宽度。如图2所示,向画布中拖拽一个“容器”组件,再向“容器”组件中拖入两个“标题”组件,“标题”组件为块级元素,默认占据全部父级元素宽度,即外层“容器”的宽度,第二个“标题”组件会在第一个“标题”组件的下方。 图2 流式布局中组件为块级元素 流式布局中,组件由上至下依次排布,可以通过“水平对齐方式”对容器内组件进行水平位置调整,如图3、图4所示。 图3 居中水平对齐 图4 靠右水平对齐 弹性布局 将“容器”组件属性面板中的“弹性布局”开启后,布局由流式布局切换到弹性布局,弹性布局的相关配置属性在下方出现如“排列方向”、“水平对齐方式”和“垂直对齐方式”,如图5所示。 图5 弹性布局 为了方便说明弹性布局,向画布中拖拽一个“容器”组件,再向“容器”组件中拖入五个“容器”组件,将每个“容器”组件的宽度和高度设置为100px,并为每个“容器”组件设置不同的背景颜色,在每个“容器”中加入一个“标题”组件,分别显示A、B、C、D、E。 默认弹性布局下,排列方向为“行”,水平对齐方式为“起点对齐”,垂直对齐方式为“起点对齐”,如图6所示。 图6 弹性布局默认效果 排列方向属性决定了容器内组件的排列方向。当排列方向为“行”时,容器内组件从左到右排布。排列方向为“列”时,容器内组件从上到下排布,如图7。 图7 排列方向“列” 水平排列方式属性,决定了容器主轴方向排列方式。当容器排列方向为“行”时,水平排列方式属性作用于水平方向。当容器排列方向为“列”时,水平排列方式属性作用于垂直方向。排列方向为行时起点为左,水平对齐方式选择“中间对齐”和“终点对齐”时,如图8、图9所示。 图8 水平对齐方式选择“中间对齐” 图9 水平对齐方式选择“终点对齐” 垂直排列方式属性决定了容器交叉轴方向排列方式。当容器排列方向为“行”时,垂直排列方式属性作用于垂直方向。容器排列方向为“列”时,垂直排列方式属性作用于水平方向。当容器排列方向为行时起点为上,垂直对齐方式选择“中间对齐”和“终点对齐”时,如图10、图11所示。 图10 垂直对齐方式选择“中间对齐” 图11 垂直对齐方式选择“终点对齐” 通过对弹性布局属性的不同组合配置,实现用户想要实现的布局效果。例如,将排列方向设置为“行”,水平对齐方式和垂直对齐方式设置成“中间对齐”,实现居中布局的效果,如图12所示。 图12 弹性布局实现居中
  • 在脚本中调用连接器 在脚本中,通过调用连接器,实现调用 ModelArts Pro 的接口。 参考创建空白AstroZero脚本中操作,创建一个空白脚本。 在脚本编辑器中,输入如下代码。 import * as modelartspro from 'modelartspro'; 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: "Boolean", required: false, description: "" }) isMultiTemplate: boolean @action.param({ type: "String", required: false, description: "" }) modelId: string } export class Output { @action.param({ type: "string" }) result: string; } export class testModelartsPro { @action.method({ input: "Input", output: "Output", description: "modelartspro test case" }) run(input: Input): void { // 填写实例化的modelartspro连接器名称 let client = modelartspro.newClient("custom_defined_ocr") let result = null result = client.customOCRWithURL(input.url, input.isMultiTemplate, input.modelId); console.log(result) } } 代码modelartspro.newClient("custom_defined_ocr")中“custom_defined_ocr”为连接器的名称,如果连接器名称带有命名空间前缀,代码中也要携带。 单击脚本编辑器页面上方的,保存脚本。 保存成功后,单击,运行脚本。 在页面底部“输入参数”中,设置输入请求参数,单击测试窗口右上角的。 { "url": "https://XXXXXXXX/testModelArtsPro.jpg", "isMultiTemplate": true, "modelId": "0b7f0f28-27e2-11ec-8f30-0255ac100057" } 其中,“url”为图片的URL。 在日志页签,可查看到识别结果,表示脚本执行成功。 图5 查看日志 单击脚本编辑器页面上方的,启用脚本。
  • 初识事件-动作 查看组件可配置事件列表。 以雷达图组件为例,在画布中拖入并选中雷达图组件,在右侧“组件属性设置”栏中选择“事件”页签,会显示当前组件可配置的事件列表。 图1 事件配置示例 表1 预置事件列表 事件名称 事件说明 点击 通过鼠标左键,单击该组件时触发。 双击 通过鼠标左键,双击该组件时触发。 右击 通过鼠标右键,单击该组件时触发。 右双击 通过鼠标右键,双击该组件时触发。 鼠标滑过 鼠标光标滑过该组件时触发。 组件加载 组件加载完成后触发。 单击组件标题 单击组件标题时触发。 当点击图例时 单击图例时触发。 当点击数据时 单击数据时触发。 图1所示的“跳转页面”事件,并非低代码平台预置的事件,而是在“雷达图”组件中注册的事件,当单击该组件标题时触发。即事件列表中也会展现该组件注册的事件,用于配置。组件中如何注册事件,请参见同页面内组件的交互。 事件在开发态(高级页面编辑页面)不能触发,只有在页面的运行态(应用运行状态或预览页面)才能触发生效。 配置事件触发时的响应动作。 单击事件名称后的,在弹出的“事件编辑”页面,可配置该事件触发时的响应动作。 图2 配置事件示例 “事件编辑”弹窗说明 如下图所示,其中标签1“新建动作”按钮,可为当前事件添加响应动作,标签2为当前事件已配置的动作列表,可在列表中操作列对其再次编辑或删除。 图3 事件编辑弹窗 预置动作说明 图4 动作列表示例 如上图所示,当单击“新建动作”按钮后,可展现当前事件可配置的动作列表。 表2 预置动作列表 动作类别 动作名称 详细说明 默认 页面跳转 跳转至其他页面,配置参数说明: 页面类型:设置待跳转的页面是当前应用中的标准页面、高级页面或外部页面。 高级页面、标准页面、外部页面:选择高级页面、标准页面或输入外部页面的地址。 动作参数:通过页面宏传递参数,可暂且不关注。 页面打开方式:设置跳转页面的打开方式,可选项包含当前浏览器窗口打开或新窗口打开。 自定义 自定义动作 自定义动作可通过代码,实现响应动作的逻辑。 //var flag=true //{widgetxxx}.flag=flag; console.log('测试自定义动作'); BPM动作 提交实例 详细介绍,请参见BPM如何与页面交互。 提交任务 转派任务 更改变量 图4中所示的“满月饼图”动作,并非低代码平台预置的动作,而是在“满月饼图”组件中注册的动作,即动作列表中也会展现在画布中所有组件注册的动作,用于配置。组件中如何注册动作,请参见同页面内组件的交互。 配置完成后,单击页面上方的,保存页面。 单击,进入预览页面,查看已配置的事件和动作是否能正常触发。
  • 前提条件 已接入服务实例,具体操作请参考注册Native Service。 已在需要调用原生服务的应用中,添加待调用的原生服务。添加后,在该应用的服务编排中,才可以调用Native服务。 “Internal dependencies”为内部依赖文件夹,导入的BO服务或者Native服务,在打包上层应用时也会随应用打包发布出去。 “External dependencies”为外部依赖文件夹,导入的BO服务或者Native服务,在打包上层应用时不会打包出去。 图1 应用中添加原生服务 若AstroZero开启了根证书校验,请先上传原生服务的根证书,再调用原生服务。关于根证书的更多内容,请参考开启根证书校验。
  • 如何判断我是不是有开发者权限? 用户:如果您的账号可以登录开发环境、沙箱环境或运行环境三种环境中的任一环境,说明您的账号具有开发者权限。用户包含以下3种类型: 租户:通过华为账号登录AstroZero,具有开发者权限。 IAM用户:通过IAM登录方式进入AstroZero,具有开发者权限。 Welink用户:通过 WeLink 扫码登录AstroZero,具有开发者权限。 业务用户:AstroZero中的业务用户不能直接登录AstroZero,仅能访问账号所在的应用,不具有开发者权限。
  • 属性 在属性中,设置轮播组件的位置、边框、连接器等。 图2 属性 基础 组件标题:设置组件的标题。 组件名称:设置组件的名称。 位置 距离左端:组件到页面左侧的距离,单位为px。 距离顶端:组件到页面顶部的距离,单位为px。 宽度:组件的宽度,单位为px。 高度:组件的高度,单位为px。 堆叠顺序:设置组件层叠显示顺序。组件的堆叠顺序默认都是“1”,数字越大,显示越靠前。当需要让组件置底时,可设置堆叠顺序为“0”。 自适应高度:组件的高度是否随宽度改变。 边框:设置组件的边框样式,如全边框或角边框。 背景 样式:设置背景的样式,如普通、居中、拉伸等。 图片链接:背景图片URL。 颜色:设置背景的颜色。 自定义属性列表:显示组件的自定义属性。 图片源设置:图片来源是否取自OBS连接器。 勾选使用连接器,表示取自OBS连接器。当连接器中图片过多时,可能会导致读取图片缓慢,且打包该页面时,由于图片地址为绝对地址,打包安装后,图片地址不可用,需要重新上传图片并进行配置。 不勾选使用连接器,表示图片来源取自平台接口。选择图片后实际存储的是图片id,页面随应用打包时会将图片一起打包,在新环境安装后无需重新上传配置。 连接器设置 选择连接器:选择有存储功能的OBS类型连接器。OBS连接器配置完成后,才可以进行图片的查询、上传等操作,连接器的配置方法请参见对接OBS云对象存储实例。 选择桶:连接器的存储桶。
  • 高级设置 在高级设置中,可设置轮播时长、切换方式等。 图3 高级设置 轮播设置 切换方向:广告图片的轮播切换样式,支持横向滚动切换、右下角滚动切换和纵向滚动切换。 加载自动播放:是否自动轮播。开启后,支持设置图片轮播时间间隔(不大于24秒)。 切换方式:设置图片切换时,展示的样式,如淡出、推出等。 定位标志:设置分页图标样式。 图片管理:对图片进行管理,并支持为图片配置跳转链接。 单击“添加”,在“选择图片/视频”页面,单击目录后的和,可管理图片目录。单击“上传图片/视频”,可上传图片。 选中图片,单击,可删除图片。 单击,可编辑图片跳转链接。
  • 服务编排与模块间调用关系 服务编排将平台提供的部分功能模块进行了封装,并提供了平台其他模块调用服务编排的能力,下面介绍其他模块与服务编排是如何进行相互调用的。 脚本 在服务编排中可以通过配置脚本图元,选择当前应用中的脚本进行脚本的调用。 在脚本中可以通过引入sys库,然后执行sys.invokeFlow({Flow_Name}),进行服务编排的调用。其中,Flow_Name为服务编排的名称。 对象 在服务编排中,可以通过配置记录创建、查询、更新、删除图元,对当前应用中的对象记录进行增删改查的操作,详情请参考如何使用服务编排开发数据的增删改查。 标准页面 在标准页面的模型视图中新建服务模型,能够绑定服务编排,进行服务编排的调用。 BPM 在BPM中可以通过配置“调用服务编排”活动,选择相应的服务编排进行服务编排的调用。 API接口 在新建接口时选择资源类型为“服务编排”,并选择相应的服务编排,即可将服务编排绑定到服务接口上,通过API接口进行服务编排的调用。 BO 在服务编排中调用BO(BO是封装了完整的数据模型、业务逻辑、页面展现的软件单元)进行使用,详情请参考BO图元。 连接器 在服务编排中调用与第三方系统对接的接口,如对接短信发送、 云存储 、系统中已定义的Action等,详情请参考连接器图元。
  • 服务编排基本能力 拖拉拽式编排流程 以往的传统编程,需要进行变量的声明并编写相应逻辑代码进行服务的开发。使用服务编排进行服务开发,能够通过拖拉拽的方式,将配置项创建的变量以及服务编排中提供的各种功能进行编排,并以流程的方式将服务所要实现的功能展现出来。整个开发过程中无需进行代码的编写,简单快捷,并能够图形化展示服务的逻辑。 逻辑处理 服务编排中提供了逻辑处理的图形化元件,包括赋值、循环、跳出循环、决策和等待。通过这些图元能够实现基本的逻辑处理,并图形化展示,便于开发者理解,详情可参考操作步骤中对逻辑处理图元的使用。 对象处理 服务编排中提供了对象处理的图形化元件,包括记录创建、记录查询、记录更新和记录删除。通过这些图元能够对通过平台创建的自定义对象或标准对象进行相应的增、删、改、查操作,简化处理对象数据的流程,提高开发效率,详情可参考如何使用服务编排开发数据的增删改查中对象处理图元的使用。 服务单元组合脚本、原生服务、BO、第三方服务 服务编排中提供了服务单元组合的图形化元件,包括脚本、子服务编排、原生服务、BO和连接器。通过这些图元能够将平台中已开发完成的服务集成到服务编排中,并重新进行组合,快速扩展出更丰富的业务功能。
  • 前提条件 AstroZero提供了默认对接的ROMA Connect服务器,也支持对接通过华为云开通的自有ROMA Connect实例控制台。本章节以AstroZero对接自有ROMA Connect为例进行说明,默认对接的ROMA Connect服务器配置类似。 已在ROMA Connect平台上完成应用创建(创建时,应用的“Key”字符长度必须小于60,否则后续向AstroZero同步时会失败)、函数API创建、API分组创建、API创建、调试、发布和授权操作。关于ROMA Connect的具体操作,请参见使用ROMA Connect集成服务与配置API授权。 例如,如图1所示,已在ROMA Connect平台创建“人员管理”应用。如图2所示,已发布“获取人员信息”API,且该API已授权给“人员管理”应用。 图1 集成应用 图2 授权API 已在ROMA Connect上,设置“app_secret”和“app_route”值为“on”。 修改方法:在ROMA Connect实例控制台的“实例信息”页面,选择“配置参数”。修改“app_secret”和“app_route”的“参数运行值”为“on”。 已参考设置应用中对接的ROMA Connect信息中操作,在AstroZero中设置ROMA Connect实例信息。
  • 样例代码解读 通过以下详细的脚本代码内容解读,对脚本有一个更具体的认识。 一般情况下,编写脚本的大致流程为: 按需引入平台标准库。 图11 引入平台标准库 定义出参、入参结构。 图12 定义入参 图13 定义出参 定义方法以及使用的对象。 图14 定义方法及使用对象 进行数据库操作。 图15 数据库相关操作 以下将通过解读一个脚本样例,带您了解脚本的总体结构框架及编写要求。 import * as decimal from 'decimal'; @action.object({type: "param"}) export class ActionInput { @action.param({type: 'String', required: true, label: 'your name', description: 'please input your name'}) name: string; @action.param({type: 'Number', required: true, min: 1, max: 100, message: 'age must during [1, 100]'}) age: decimal.Decimal; @action.param({type: 'Date', pattern: 'yyyy-MM-dd'}) birthday: Date; @action.param({type: 'String', isCollection: true}) schools: string[]; @action.param({type: 'Boolean'}) married: boolean; @action.param({type: 'MyObject'}) obj: MyObject; } @action.object({type: "param"}) export class MyObject { @action.param({type: 'String'}) something: string; @action.param({type: 'Number'}) otherthing: decimal.Decimal; } @action.object({type: "param"}) export class ActionOutput { @action.param({type: 'String', isCollection: true}) greets: string[]; } @action.object({type: "method"}) export class ActionDemo { @action.method({ label: 'greeting something', description: 'greeting something.', input: 'ActionInput', output: 'ActionOutput' }) public greet(inarg: ActionInput): ActionOutput { console.log('name = ', inarg.name); console.log('age = ', inarg.age); console.log('birthday = ', inarg.birthday); console.log('schools = ', inarg.schools); console.log('married = ', inarg.married); console.log('obj = ', inarg.obj); let out = new ActionOutput(); out.greets = ['hello', 'hi', 'how are you', 'how old are you', 'long time no see']; return out; } } 上述示例脚本主要分为如下三部分: 导入标准库或其他模块。 上例中,第1行表示使用平台提供的decimal库。 import * as decimal from 'decimal'; 除了平台预置的标准库,还可以声明对其他自定义模块的引用。例如,已提前开发了一个脚本cirle,可以用如下方式加载它。 import * as circle from './circle'; 定义输入、输出变量。 脚本可以有多个输入、输出参数,也可以没有。所有的输入或输出参数,必须封装在一个class中,作为实例成员。 本例中,脚本有6个输入参数,被封装为ActionInput。每个参数都必须定义其参数类型,同时还可以定义是否必填、标签、最大值、最小值等可选属性。 @action.object({type: "param"}) export class ActionInput { @action.param({type: 'String', required: true, label: 'your name', description: 'please input your name'}) name: string; @action.param({type: 'Number', required: true, min: 1, max: 100, message: 'age must during [1, 100]'}) age: decimal.Decimal; @action.param({type: 'Date', pattern: 'yyyy-MM-dd'}) birthday: Date; @action.param({type: 'String', isCollection: true}) schools: string[]; @action.param({type: 'Boolean'}) married: boolean; @action.param({type: 'MyObject'}) obj: MyObject; } 因为第6个输入参数“obj”的参数类型为自定义对象,所以还需要给出“ MyObject”的定义。 @action.object({type: "param"}) export class MyObject { @action.param({type: 'String'}) something: string; @action.param({type: 'Number'}) otherthing: decimal.Decimal; } 脚本中有1个输出参数,被封装为ActionOutput。 @action.object({type: "param"}) export class ActionOutput { @action.param({type: 'String', isCollection: true}) greets: string[]; } 定义方法 样例中,ActionDemo是外部调用的class,使用export导出。ActionDemo定义了一个action method,使用action.method装饰,表明调用脚本时从此方法入口。greet是class的实例方法,其输入、输出参数就是前面定义的ActionInput和ActionOutput。在一个脚本文件中,action.method只能使用一次。 @action.object({type: "method"}) export class ActionDemo { @action.method({ label: 'greeting something', description: 'greeting something.', input: 'ActionInput', output: 'ActionOutput' }) public greet(inarg: ActionInput): ActionOutput { console.log('name = ', inarg.name); console.log('age = ', inarg.age); console.log('birthday = ', inarg.birthday); console.log('schools = ', inarg.schools); console.log('married = ', inarg.married); console.log('obj = ', inarg.obj); let out = new ActionOutput(); out.greets = ['hello', 'hi', 'how are you', 'how old are you', 'long time no see']; return out; } } 脚本编辑页面不支持单步调试,样例里的console.log可实现在日志里打印过程输出,方便代码调试。
  • 提供AI代码补全功能 代码补全引擎会从开发者历史创建脚本中,学习其编码习惯,从当前代码脚本中获得代码上下文语法知识。开发者在编写脚本代码过程中,系统根据代码上下文和历史代码,对将要编写的代码进行提示,从而自动构建智能代码补全服务,增强IDE代码补全能力。 AI代码补全功能具体使用方法:开发者在代码编辑器中,编写脚本代码过程中,敲击字符时自动触发代码推荐,选中后按Enter补全。开发者将鼠标移动到待查看详细信息的字段,将字段悬浮窗中的文字选中复制粘贴到代码中。 如果想深入了解AI代码补全功能,请继续阅读以下内容: 常规补全:开发者编码过程中,输入任意字符均会触发的补全提示。 例如:开发者键入“@u”,如下图所示,系统根据意图在代码编辑器中给出最可能使用的方法。 定制补全:低代码平台脚本开发中,提供了内部预置系统级依赖库,供开发者调用。用户也可以在前台页面配置对象数据、系统参数、错误码、事件和工作流后,在脚本中引用这些内容。定制补全是指在脚本开发中引用依赖库和各配置项时,IDE触发的对潜在内容名称的补全提示。 依赖库补全:脚本代码中引入依赖的代码行时,对依赖库的名称进行推荐提示。如下图所示,开发者键入“import * as xxx from”后,提示z开头的依赖库名称。 表名(即对象名)补全:脚本代码引入对象数据的代码行中,推荐提示对象名称。如下图所示,开发者键入“@useObject”后提示m开头的对象名。 表字段提示:脚本代码中引用表字段时,鼠标移动到表名上,悬浮窗会对表名进行提示。如下图所示,开发者鼠标放在表名上,展示所有字段。 错误码补全:脚本中引入数据表的代码行中,对表名称进行推荐提示。如下图所示,开发者键入“setI18nError”后,提示相关错误码名。 错误码内容提示:脚本代码中引入数据表的代码行中,对表名称进行推荐提示。如下图所示,鼠标放在错误码名称上,展示相关描述。 系统参数补全:脚本代码中引入系统参数的代码行中,对参数名称进行推荐提示。如下图所示,开发者键入“sys.getParameter”后,提示相关系统参数。
  • 脚本开发有什么限制 不支持以下正则表达式语法 (?=) // Lookahead (positive), currently a parsing error (?!) // Lookahead (backhead), currently a parsing error \1 // Backreference (\1, \2, \3, ...), currently a parsing error 使用场景限制 触发器目前只能使用ES5 JavaScript语法。 独立的脚本支持TypeScript语法。 Script中只可使用平台封装的标准库API,不能使用Formula公式。 console不兼容特性 console模块目前不支持格式化参数功能。 console.log('在 main 中,a.done=%j,b.done=%j', a.done, b.done); 不支持异步ES 7语法和库,如async/wait。
共100000条