华为云用户手册

  • 操作步骤 鼠标放在App下的Logic文件夹旁会出现加号,单击加号,选择“事件流”。 您需要联系运维开启事件流License权限。开启后,才会有新建事件流的入口。 单击“新建”,进入“事件流”页面。 在“事件流”页面右侧单击“设置”,进行数据配置。 图2 设置页面 表1 参数说明 参数名称 参数说明 窗口长度 流处理的数据采集时间间隔,单位为分钟。建议时间间隔不要配置过小,否则系统频繁的建表和执行SQL语句,会影响系统性能。例如:配置为“1”表示spark streaming每隔1分钟去kafka获取事件数据。 在“事件流”页面右侧单击“图元”,拖拽“输入源”中Kafka图标至左侧画布区域,并配置基本信息,单击“保存”。 输入源中Kafka图标表示数据来自Kafka。 图3 数据来源Kafka基本信息页面 表2 数据来源Kafka基本信息页面参数说明 参数名称 参数说明 标签 该数据源Kafka的显示标签名。长度不超过64个字节。 名称 该数据源Kafka的名称,系统自动生成。 事件 需要订阅的事件。 例如:配置为温度监测事件“temperature”。 从外部接收 是否从外部Kafka接收事件。 若关闭该开关,表示从与AppCube相连的Kafka接收事件;若打开该开关,表示从外部Kafka接收事件,需要配置“Kafka集群地址”和“订阅主题”。 Kafka集群地址:数据源Kafka集群地址。 多个节点服务器地址可用“,”间隔,格式为“Kafka节点1的ip:节点1端口号,Kafka节点2的ip:节点2端口号,...”。 获取Kafka的IP和端口号方法:可以通过登录每台Kafka节点服务器,查看“${KAFKA_HOME}/config”目录下“server.properties”中“listeners”取值获取。例如:10.136.104.56:9092 订阅主题:获取的事件数据来源,即来自于kafka集群的哪个Topic。 例如:__BINGO_PROD_SYS_TOPIC 该章节示例中关闭该开关,使用与AppCube相连的Kafka。 从“图元”中拖拽“投影”图标至左侧画布区域数据源Kafka下方,并在弹出的“添加投影器”页面配置基本信息。单击“保存”。 图4 “添加投影器”页面 表3 “添加投影器”页面参数说明 参数名称 参数说明 标签 该投影的显示标签名。长度不超过64个字节。 名称 该投影的名称,系统自动生成。 输入字段 订阅事件的所有事件参数。 请从中选择需要的参数单击,选中的参数会出现在“输出字段”中。 输出字段 从订阅事件中的事件参数进行筛选后,用到的事件参数。 从“图元”中拖拽“过滤”图标至左侧画布区域投影下方,并在弹出的“添加过滤器”页面配置基本信息和过滤条件。单击“保存”。 图5 设置过滤条件 表4 过滤条件页面参数说明 参数名称 参数说明 标签 该Filter的显示标签名。长度不超过64个字节。 名称 该Filter的名称,系统自动生成。 条件设置 过滤条件。 字段:上一步筛选后的事件参数。 比较符:操作符,下拉选择。 值:字段值。 例如:上图中的配置表示提取温度大于60度的事件。 单击“新增行”可以新增条件。 (可选)从“图元”页面中拖拽“分组”图标至左侧画布区域过滤器下方,并在弹出的“添加分组器”页面配置基本信息和分组条件。单击“保存”。 图6 “添加分组器”页面配置 表5 分组条件页面参数说明 参数名称 参数说明 标签 该GroupBy的显示标签名。长度不超过64个字节。 名称 该GroupBy的名称,系统自动生成。 分组设置 分组条件。 例如上图中配置表示按照相同位置的大于60度的温度取温度平均值。 在“图元”页面右侧拖拽输出源中的Kafka图标至左侧画布区域最下方,设置spark streaming输出事件和输出事件数据的接收方。单击“保存”。 您可拖拽多个Sink中的Kafka图标,设置多个事件接收方。 图7 数据接收方配置 表6 数据接收方配置参数说明 参数名称 参数说明 标签 数据接收方Kafka的显示标签名。长度不超过64个字节。 名称 数据接收方Kafka的名称,系统自动生成。 事件 spark streaming输出的事件。并设置订阅事件和输出事件的参数对应关系。 这里配置为高温报警事件“fire_alarm”。温度监测事件“temperature”的“position”对应高温报警事件“fire_alarm”中的“positionalarm”,温度监测事件的“temperature”对应高温报警事件“fire_alarm”中的“temperaturealarm”。 发送到外部 是否发送到外部Kafka。 若关闭该开关,表示发送到与AppCube相连的Kafka;若打开该开关,表示发送到外部Kafka,需要配置“Kafka集群地址”和“订阅主题”。 Kafka集群地址:接收事件的Kafka集群地址。 多个节点服务器地址可用“,”间隔,格式为“Kafka节点1的ip:节点1端口号,Kafka节点2的ip:节点2端口号,...”。 获取Kafka的IP和端口号方法:可以通过登录每台Kafka节点服务器,查看“${KAFKA_HOME}/config”目录下“server.properties”中“listeners”取值获取。 例如:10.136.14.56:9092 说明:接收事件的kafka集群不需要一定配置为和AppCube相连。 订阅主题:接收事件数据的kafka Topic。 例如:__BINGO_PROD_SYS_TOPIC 该章节示例中关闭该开关,使用与AppCube相连的Kafka。 事件属性/属性、值 配置输出事件与接收事件中已定义参数的对应关系。 单击“新增”可添加多行。 单击页面右上方保存按钮。设置该“事件流”基本参数。 图8 该“事件流”基本参数页面 表7 “事件流”基本参数 参数名称 参数说明 标签 该“事件流”的显示标签名。长度不超过64个字节。 名称 该“事件流”的名称,系统自动生成。 描述 描述信息。 单击页面上方图标启用“事件流”。
  • 背景信息 首先,您需要理解以下概念: kafka:是由Apache开发的一个开源流处理平台,是分布式发布、订阅消息系统。它主要用于处理活跃的流数据。一般kafka部署为集群模式。 Topic:用来区分kafka集群中不同类型消息的主题。例如应用程序A订阅了Topic1,应用程序B订阅了Topic2而没有订阅Topic1,那么发送到Topic1中的数据将只能被应用程序A读到,而不会被应用程序B读到。 spark streaming:大规模流式数据处理工具,第三方工具。
  • 初识工作流 在新版应用设计器中,单击左侧导航栏中的“流程”。单击“工作流”后面的“+”,设置工作流的标签和名称后,单击“添加”,即可进入工作流设计界面。 图1 添加工作流 工作流设计界面由上方按钮区域、左侧面板图元区域、中间画布工作区域和右侧属性配置区域四部分组成。 图2 工作流设计界面 表1 工作流设计界面说明 分类 功能说明 按钮区域 功能按钮区域,包括锁定、解锁、启用(或者禁用)、保存、另存为新版本或者新工作流、运行、操作回退、撤销回退、启用流跟踪器以及切换版本的操作。支持快捷键操作,即可脱离鼠标直接用键盘操作。 面板图元区域 工作流的组成图元,详细介绍请参见工作流图元。 画布工作区域 工作流设计操作区域,在该区域可对工作流进行具体流程设计、组件放置。 选中图元或者泳道按“Delete”,可进行删除操作。 属性配置区域 整个工作流、泳道(Lane)或图元属性设置区域。 当选择工作流中图元时,右侧配置区域为该图元的属性设置区域。 当选择工作流中空白区域时,右侧配置区域为该工作流的设置区域。 当选择泳道左侧标签时,右侧配置区域为该泳道的属性设置区域。
  • 使用SOAP服务调用SOAP协议接口 当系统需要调用第三方提供的SOAP协议接口时,可以通过配置SOAP Service来实现。SOAP Service是第三方系统提供的Soap服务,是一组模块化的SOAP接口(SOAP Action),系统可以通过配置第三方提供的SOAP服务的URL进行调用。Action是对第三方接口的一个元数据描述,将第三方接口转换成AppCube可识别的定义,方便AppCube调用第三方接口。 创建SOAP Service 创建并启用SOAP Action 父主题: 如何调用第三方接口
  • 使用Rest服务调用Rest协议接口 当系统需要调用第三方提供的Rest协议接口时,可以通过配置Rest Service来实现。Rest Service是第三方系统提供的Rest服务,是一组模块化的Rest接口(Rest Action),系统可以通过配置第三方提供的Rest服务的URL进行调用。Action是对第三方接口的一个元数据描述,将第三方接口转换成AppCube可识别的定义,方便AppCube调用第三方接口。 创建Rest Service(自定义连接器) 创建并启用Rest Action 父主题: 如何调用第三方接口
  • 脚本中调用连接器 您可以在脚本中调用连接器实现调用IEF的接口,脚本样例如下: export interface IEFClient { /* @param projectID */ getProjectNode(projectID: string): IdentifierInfo /* @param projectID */ getProjectDevice(projectID: string): IdentifierInfo /* @param projectID @param nodeID */ getNode(projectID: string, nodeID: string): IdentifierInfo /* @param projectID @param deviceID */ getNodeDevice(projectID: string, deviceID: string): IdentifierInfo /* @param nodeID @param topic @param msg */ getMSG(nodeID: string, topic: string, msg: string): IdentifierInfo} 这里以新建一个脚本实现查询边缘节点列表为例进行举例说明。 鼠标放在App下的Logic文件夹旁会出现加号,单击加号,选择“脚本”。 选择“创建一个新脚本”,输入基本信息,单击“保存”。 编辑代码如下: import { Decimal } from 'decimal';import { Error } from 'error';import * as ief from 'ief';export class Input { @action.param({ type: "String", required: true, description: "type" }) project_id: string; // @action.param({ type: "String", required: true, description: "the operation value 2" }) // node_id: string;}export class Output { @action.param({ type: "Object", required: true }) result: Object;}export class Calculator { @action.method({ input: "Input", output: "Output", description: "do a operation" }) run(input: Input): Output { let output = new Output(); let cli = ief.newClient("ief_test"); output.result = cli.getProjectNode(input.project_id); //console.log(output.result); return output; }} 其中ief.newClient("ief_test")中“ief_test”为连接器的名称。 单击代码编辑页面上方保存图标,保存脚本。 运行测试脚本。 单击编辑器上方执行图标。 在页面底部“输入参数”页签输入请求参数项目ID,单击测试窗口右上角图标。 { "project_id":"XXXXXXXXXXX"} 检查输出,显示出边缘节点列表,表示执行脚本成功。 单击代码编辑页面上方图标,启用脚本。
  • Script中调用连接器 您可以在脚本中调用连接器实现与MSG SMS 的对接,这里以新建一个脚本实现发送短信为例进行举例说明。 鼠标放在App下的Logic文件夹旁会出现加号,单击加号,选择“脚本”。 选择“创建一个新脚本”,输入基本信息,单击“保存”。 编辑代码如下: //导入该脚本所依赖的标准库文件。msgsms是系统预置的标准库。import * as sms from 'msgsms'; @action.object({type: "method"}) export class ActionDemo { @action.method({ label: 'greeting something', description: 'greeting something.', input: 'ActionInput', output: 'ActionOutput' }) public greet(){ console.log('`````````````````````test new sms`````````````````````') let client = sms.newClient("MSGSMS_Test") let res = client.sendByName("Test1","130XXXXXXXX","[\"6612\"]") console.log(res) console.log('`````````````````````test new sms end`````````````````````') } } 其中sms.newClient("MSGSMS_Test")中“MSGSMS_Test”为连接器的名称。client.sendByName("Test1","130XXXXXXXX","[\"6612\"]")中携带的是模板名称、接收者号码和模板参数。 单击代码编辑页面上方保存图标,保存脚本。 运行测试脚本。 单击编辑器上方执行图标。 在页面底部单击测试窗口右上角图标。 检查接收者是否收到短信。 收到短信表示成功调用连接器。 单击代码编辑页面上方图标,启用脚本。
  • 配置流程介绍 触发器以图形表示的方式将业务流程呈现给用户,触发器配置好后,用户不必手动执行这些操作,系统会自动执行。在开始配置触发器业务前,您需要了解相关概念、配置流程等信息。 图1 配置流程图 新建触发器,设定该触发器关联的对象,触发器名称等信息。 进入该触发器编辑页面,配置规则条件。 根据不同的条件设定各个Action动作。 (可选)添加规则条件,设定各Action动作。 启用创建的触发器。 测试流程,确保该触发器符合预期场景。 父主题: 触发器
  • 调用连接器 您可以在脚本中调用连接器实现用户登录微信公众号,这里以新建一个脚本为例进行举例说明。 若想获取系统预置的接口说明,请单击脚本主要用什么语言和库。 在微信客户端的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参数对应的授权作用域权限。 在AppCube上,鼠标放在App下的Logic文件夹旁会出现加号,单击加号,选择“脚本”。 选择“创建一个新脚本”,输入基本信息,单击“保存”。 编辑代码如下: import * as wechat from 'wechat';let connectorID = "whchat"let code = "xxxxx" // 该code值从步骤1获取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"}
  • 添加目录 登录新版应用设计器。 在左侧导航栏中,选择“逻辑”。 在右侧的触发器中,可查看该应用拥有的所有触发器。 单击触发器后的,进入添加目录页面。 设置目录名称,单击“保存”。 目录创建后,您可以执行如下操作。 单击目录后的,可新建触发器。 单击目录后的,可新建子目录。目录创建后,可直接拖拽触发器到目录中。 单击后,选择“编辑”,可修改目录名称。 单击后,选择“移动”,可移动页面、数据、逻辑、流程、触发器等到其他应用。 单击后,选择“删除”,可删除目录。删除目录前,请确保当前目录为空。
  • 异常处理 当数据源类型选择的是ROMA Connect,配置完数据接入后,MQS平台收不到消息,业务设置的EventTrigger没有拉起Flow。现象、原因分析以及解决方法如下: 问题现象:ROMA Connect消息轨迹是灰色的,可能是MQS服务地址配置错误或者没有配置。解决方法为:检查iotgateway容器的“roma-server”参数是否配置,若没有配置,请配置该参数或联系运维添加正确的“roma-server”地址(端口为“9776”),确认网络正常以及MQS服务器正常,兼容客户端版本。 问题现象:ROMA Connect消息轨迹是红色的,则可能是MQS的source定义错误。解决方法为:在ROMA Connect平台查看应用ID和对应的密钥是否一致,查看该应用是否订阅了主题。配置错误时会导致鉴权失败。 问题现象:ROMA Connect消息轨迹是绿色的, 表示MQS接收成功,并成功发送到Kafka,AppCube也收到了对应的消息,但是可能没成功拉起Flow。解决方法为:查看iotgateway的“flume.log”日志,确认MQS是否接收成功,通过“kafka-console-cumer”确认消息是否转换成功,通过AppCube的日志跟踪功能或者AppCube后台日志确认(日志关键字为“OnEvent”)平台是否收到事件。如果没有对应的服务编排或者脚本日志,可以确定Flow未拉起,联系华为工程师解决。
  • 操作步骤 在开发环境修改数据接入的任意配置数据(包括所有图元的配置信息),在打包时,可配置是否覆盖新环境中的同名数据接入配置。具体配置可参考应用打包发布。 鼠标放在App下的Logic文件夹旁会出现加号,单击加号,选择“数据接入”。 单击“新建”,进入“数据接入”创建页面。 从页面右侧“图元”的输入源中拖拽OneNET图标至左侧画布区域,并配置外部数据源基本信息,单击“保存”。 Source中不同的图标表示不同的第三方数据源,支持以下几种数据源。 OneNET 图1 OneNET配置信息页面 图2 OneNET元数据定义页面 表1 数据来源OneNET基本信息页面参数说明 参数名称 参数说明 标签 该数据源OneNET的显示标签名。长度不超过64个字节。 名称 该数据源OneNET的名称,单击参数值后系统可根据“标签”取值自动生成。 协议 通信协议。 Token 数据签名,即令牌,由OneNET提供。 报文加密 对传输过来的报文内容是否进行加密,勾选表示加密。如果设置为加密的,则需配置“Aeskey”。 Aeskey 解密密钥,由OneNET提供。 元数据 源数据的元数据定义。如果为空的{},您只能传送原始数据,无法使用拦截器对数据进行处理。 定义好的元数据将会显示在右侧区域中。 单击“格式化Json”,可对元数据进行Json格式化处理。 元数据定义示例如下: { "notifyType": "STRING", "requestId": "STRING", "timestamp": "STRING", "eventTime": "datetime", "deviceId": "STRING", "gatewayId": "STRING", "deviceService": { "name": "STRING" }, "service": { "serviceType": "STRING", "serviceId": "STRING", "body": "OBJECT", "data": { "battery_low": "number", "light": "STRING" } }} 数据接入对接中移物联OneNET平台的认证,是按照中移物联给出的对接标准,需根据配置的Token(令牌)、报文中的随机数、报文内容拼接后获取MD5摘要,并和报文中的摘要做比对,如果一致则认为报文是正常的报文。目前中移物联只支持MD5算法获取数据摘要。参见OneNET平台开发文档。 同时,对于报文内容来说,OneNET平台支持对报文内容进行加密后上报。AppCube要使用跟OneNET平台一致的加密算法进行解密,获取的加密向量要跟OneNET平台一致。因此,使用了Aeskey(解密密钥)的前16位作为加密向量。 设备接入 IoTDA(该产品之前名为“Ocean Connect”) 图3 设备接入 IoTDA配置信息页面 表2 数据来源设备接入 IoTDA基本信息页面参数说明 参数名称 参数说明 标签 该数据源设备接入 IoTDA的显示标签名。长度不超过64个字节。 名称 该数据源设备接入 IoTDA的名称,单击参数值后系统可根据“标签”取值自动生成。 数据格式 设备上报数据的格式。 数据传输的协议支持http或者https,由IoTDA决定。 Access Key 单击“生成AK/SK”,该值会自动生成。请将生成的Access Key保存到本地,开发人员通过该值在设备侧生成鉴权属性“authorization”。 Secret Key 单击“生成AK/SK”,该值会自动生成。请将生成的Secret Key保存到本地,开发人员通过该值在设备侧生成鉴权属性“authorization”。 元数据 源数据的元数据定义。如果为空的{},您只能传送原始数据,无法使用拦截器对数据进行处理。 定义好的元数据将会显示在右侧区域中。 单击“格式化Json”,可对元数据进行Json格式化处理。 元数据定义示例如下: { "notifyType": "STRING", "requestId": "STRING", "timestamp": "STRING", "eventTime": "datetime", "deviceId": "STRING", "gatewayId": "STRING", "deviceService": { "name": "STRING" }, "service": { "serviceType": "STRING", "serviceId": "STRING", "body": "OBJECT", "data": { "battery_low": "number", "light": "STRING" } }} 上报的合法数据示例如下: { "notifyType": "deviceDataChanged", "requestId": "45678", "timestamp":"1900012929922992", "eventTime":"20151212T121212Z", "deviceId":"8b3979fc-b072-433b-b3f6-673072e1bc04", "gatewayId":"XXX", "deviceService":{"name":"buttery"}, "service": { "serviceType": "", "serviceId": "", "data":{ "battery_low":444, "light":"99", "authorization":"Bingo bDTKFSGi:ZwGnN+bb*****************************TjFRMA=" } }} 其中“authorization”值根据AK/SK、上报URL和Body数据生成。 π平台 图4 π平台配置信息页面 表3 数据来源π平台基本信息页面参数说明 参数名称 参数说明 标签 该数据源的显示标签名。长度不超过64个字节。 名称 该数据源的名称,单击参数值后系统可根据“标签”取值自动生成。 字段 请填写输入源的数据字段,不同的字段以逗号进行分隔,例如“id,name,age”。 协议 数据传输的协议。 Access Key 单击“生成AK/SK”,该值会自动生成。请将生成的Access Key保存到本地,并将该值填写到对应的 物联网平台 中。 Secret Key 单击“生成AK/SK”,该值会自动生成。请将生成的Secret Key保存到本地,并将该值填写到对应的物联网平台中。 ROMA Connect 图5 ROMA Connect配置信息页面 表4 数据来源ROMA Connect基本信息页面参数说明 参数名称 参数说明 标签 该数据源的显示标签名。长度不超过64个字节。 名称 该数据源的名称,单击参数值后系统可根据“标签”取值自动生成。 APP ID MQS平台应用ID。应用ID能够引用一个本平台定义的系统参数,引用位置不限制。示例:{!roma_app_prefix}other_roma_app_id。 密钥 MQS平台应用请求密钥。 主题 MQS主题。主题能够引用一个本平台定义的系统参数,引用位置不限制。示例:{!roma_topic_prefix}other_roma_topic。 标签 设置订阅消息的标签,可以指定消费某一类型的消息。默认*表示消费所有类型的消息,可以写多个,用“||”隔开,例如“tag1 || tag2 || tag3”。 通道加密 数据是否加密。若勾选,表示MQS数据传输采用TLS协议。 消费位置 若勾选,停止数据接入任务,后续重新运行数据接入时,停止和重新运行期间ROMA Connect发来的消息会被完全丢弃。若停止与运行数据接入之间时间间隔在十分钟之内,消息可能不会丢失。 注意:存在数据丢失风险,请谨慎勾选。 默认不勾选。 元数据 源数据的元数据定义。如果为空的{},您只能传送原始数据,无法使用拦截器对数据进行处理。 定义好的元数据将会显示在右侧区域中。 单击“格式化Json”,可对元数据进行Json格式化处理。 元数据定义示例如下: { "notifyType": "STRING", "requestId": "STRING", "timestamp": "STRING", "eventTime": "datetime", "deviceId": "STRING", "gatewayId": "STRING", "deviceService": { "name": "STRING" }, "service": { "serviceType": "STRING", "serviceId": "STRING", "body": "OBJECT", "data": { "battery_low": "number", "light": "STRING" } }} Kafka 图6 添加Kafka 表5 数据来源Kafka基本信息页面参数说明 参数名称 参数说明 标签 该数据源Kafka的显示标签名。长度不超过64个字节。 名称 该数据源Kafka的名称,单击参数值后系统可根据“标签”取值自动生成。 连接外部Kafka AppCube支持从平台内部Kafka或者外部Kafka采集数据,从内部Kafka采集的数据不能再输出到内部Kafka中。勾选该项,表示从外部Kafka采集数据,则需要配置“Kafka集群地址”和“订阅主题”;默认不勾选,表示从平台内部Kafka采集数据。 Kafka集群地址 当勾选“连接外部Kafka”时,该参数才会出现。表示Kafka集群地址,多个节点服务器地址可用“,”间隔,格式为“Kafka节点1的ip:节点1端口号,Kafka节点2的ip:节点2端口号,...”。 获取Kafka的IP和端口号方法:可以通过登录每台Kafka节点服务器,查看“${KAFKA_HOME}/config”目录下“server.properties”中“listeners”取值获取。 例如:10.10.10.1:9091,10.10.10.2:9092 订阅主题 当勾选“连接外部Kafka”时,该参数才会出现。表示采集数据所属的Kafka主题。 主题是消息存储和发布的类名,通过主题您可以分类传输和处理事件。 开启SASL_SSL 当勾选“连接外部Kafka”时,该参数才会出现。开启SASL_SSL后,访问外部Kafka需要提供用户名和密码进行认证,且数据会加密传输。需要根据外部Kafka服务端的实际情况配置。 默认不勾选。 用户名 当勾选“开启SASL_SSL”,该参数才会出现。表示访问外部Kafka需要的用户名。 密码 当勾选“开启SASL_SSL”,该参数才会出现。表示访问外部Kafka需要的密码。 元数据 当勾选“连接外部Kafka”时,会出现“元数据定义”页签,选择该页签,配置源数据的元数据定义。如果为空的{},您只能传送原始数据,无法使用拦截器对数据进行处理。 定义好的元数据将会显示在右侧区域中。 单击“格式化Json”,可对元数据进行Json格式化处理。 元数据定义示例如下: { "notifyType": "STRING", "requestId": "STRING", "timestamp": "STRING", "eventTime": "datetime", "deviceId": "STRING", "gatewayId": "STRING", "deviceService": { "name": "STRING" }, "service": { "serviceType": "STRING", "serviceId": "STRING", "body": "OBJECT", "data": { "battery_low": "number", "light": "STRING" } }} 事件 当不勾选“连接外部Kafka”时,该参数才会出现。表示从平台内部Kafka采集数据时,数据所关联的具体事件。 5G消息 图7 5G消息配置信息 图8 5G消息元数据定义 表6 数据来源5G消息配置参数说明 参数名称 参数说明 标签 该数据源的显示标签名。长度不超过64个字节。 名称 该数据源的名称,单击参数值后系统可根据“标签”取值自动生成。 协议 数据传输的协议。这里所选的协议必须与在5G消息云服务平台选择的传输协议一致。 数据格式 设备上报数据的格式。 APP ID 设备ID。这里填写的APP ID必须与在5G消息云服务平台填写的保持一致。 支持引用变量。变量在应用开发界面左下角“设置”里“系统参数”页签进行设置。 密钥 5G网关请求密钥。 需要引用变量时,请勾选“引用变量”。变量在应用开发界面左下角“设置”里“系统参数”页签进行设置。 元数据类型 该参数在“元数据定义”页签。为元数据类型,说明如下: 上行消息:5G消息云服务平台向业务应用转发的终端用户上行消息。 状态报告通知消息:业务应用通过5G消息云服务平台向用户发送消息后,5G消息云服务平台向业务应用发送的结果状态报告(即回执消息)。 媒体审核通知:业务应用向5G消息云服务平台上传多媒体内容文件后,文件会送运营商的MAAP平台审核,审核后,5G消息云服务平台向业务应用通报媒体文件审核结果。 消息撤回通知:业务应用发送5G消息给使用5G消息云服务的用户,希望撤回消息。业务应用发起撤回动作到5G消息云服务平台,5G消息云服务平台发送到终端用户,撤销成功后返回5G消息云服务平台,5G消息云服务平台发送消息撤回状态通知给业务应用。 在页面右侧拖拽拦截器中适当的图标,对源数据进行数据拦截。配置后单击“保存”。 拦截器中包含以下图标。 投影:数据选择器。可从源数据中选择部分数据进行发送。 图9 投影配置 表7 投影配置参数说明表 参数名称 参数说明 标签 该投影的显示标签名。长度不超过64个字节。 名称 该投影的名称,单击参数值后系统可根据“标签”取值自动生成。 字段选择器 左侧为外部数据源传入的全部元数据,勾选所需数据字段,单击将所选数据移到右侧输出字段中。 赋值:数据赋值器。可将缓存中的对象数据、传入的外部数据源数据、某个常量数据或者数据取表达式值赋值给某参数。 图10 赋值器配置 表8 赋值器配置参数说明表 参数名称 参数说明 标签 该赋值器的显示标签名。长度不超过64个字节。 名称 该赋值器的名称,单击参数值后系统可根据“标签”取值自动生成。 新增字段 被赋值的参数。 源 源数据。支持以下几种类型。 Cache:缓存中的对象数据。需要提前在设置中单击“新增缓存”进行添加。 reference:传入的外部数据源元数据。 formula:数据取表达式值。格式为“XXX(数据源参数)”。 constant:某常量。格式为“常量值”。 在设置中单击“新增缓存”添加缓存对象数据时,设置如下图所示。 图11 “新增缓存”配置 表9 “新增缓存”参数说明 参数名称 参数说明 标签 该Cache的显示标签名。长度不超过64个字节。 名称 该Cache的名称,单击参数值后系统可根据“标签”取值自动生成。 对象 映射的对象名。 高级配置 高级配置,开关打开后需要配置如下参数。 缓存上限:最大缓存记录数。 过期时间:缓存超时时间。 默认不打开,采用系统默认配置。 字段选择器 左侧为该对象的全部字段,勾选所需数据字段,单击将所选字段移到右侧输出字段中。 键 与外部元数据关联的对象字段。 选择源字段 传入的外部数据源元数据中与该对象关联的数据字段。 过滤:数据过滤器。您可通过配置一定的过滤条件对外部元数据进行数据过滤。 图12 过滤器配置 表10 过滤器配置参数说明表 参数名称 参数说明 标签 该过滤器的显示标签名。长度不超过64个字节。 名称 该过滤器的名称,单击参数值后系统可根据“标签”取值自动生成。 条件设置 过滤条件配置。 单击“新增”可添加多个过滤条件。 在页面右侧拖拽通道中“内存通道”图标至左侧画布区域Onenet下方,并配置数据通道的基本信息,单击“保存”。 通道中“内存通道”表示普通的数据通道,当数据较多时可选择“文件通道”图标进行拖拽。 图13 内存通道配置 表11 内存通道配置参数说明 参数名称 参数说明 标签 该内存通道的显示标签名。长度不超过64个字节。 名称 该内存通道的名称,单击参数值后系统可根据“标签”取值自动生成。 高级配置 高级配置,开关打开后需要配置如下参数: 通道容量:通道数据最大条数。 最大传输量:发到单个输出源的数据最大条数。 默认不打开,采用系统默认配置。 在页面右侧拖拽Sink输出源中的图标至左侧画布区域最下方,设置输出事件和输出事件数据的接收方。 当接收方是Kafka时,配置如下。 您可拖拽多个Sink中的Kafka图标,设置多个事件接收方。 图14 数据接收方配置页签 表12 数据接收方配置参数说明 参数名称 参数说明 标签 数据接收方Kafka的显示标签名。长度不超过64个字节。 名称 数据接收方Kafka的名称,单击参数值后系统可根据“标签”取值自动生成。 事件 输出的事件。 发送到外部 是否发送到外部Kafka。若打开该开关,需要配置“Kafka集群地址”和“订阅主题”。 Kafka集群地址:接收事件的kafka集群地址,多个节点服务器地址可用“,”间隔,格式为“Kafka节点1的ip:节点1端口号,Kafka节点2的ip:节点2端口号,...”。 获取Kafka的IP和端口号方法:可以通过登录每台Kafka节点服务器,查看“${KAFKA_HOME}/config”目录下“server.properties”中“listeners”取值获取。 例如:10.136.14.56:9092 说明:接收事件的kafka集群不需要一定配置为和AppCube相连。 订阅主题:接收事件数据的kafka Topic。 例如:__BINGO_PROD_SYS_TOPIC 是否开启SASL_SSL:当发送到外部Kafka时,该参数才会出现。表示是否开启SASL_SSL认证,开启后,访问外部Kafka需要提供用户名和密码进行认证,且数据会加密传输。需要根据外部Kafka服务端的实际情况配置。默认勾选。 默认不打开该开关,表示输出到与AppCube相连的Kafka。 事件属性/作为分区Key 是否将事件中的参数字段作为Kafka的消息头,用于事件分发时发送到不同的Kafka分区。建议选择有区分度的关键字段。 事件属性/属性、值 配置传输的数据与事件中已定义参数的对应关系。 单击“新增行”可添加多行。 当接收方是ROMA Connect,配置如下。 图15 数据接收方ROMA Connect配置页签 表13 ROMA Connect基本信息页面参数说明 参数名称 参数说明 标签 该接收方的显示标签名。长度不超过64个字节。 名称 该接收方的名称,单击参数值后系统可根据“标签”取值自动生成。 APP ID MQS平台应用ID。应用ID能够引用一个本平台定义的系统参数,引用位置不限制。示例:{!roma_app_prefix}other_roma_app_id。 密钥 MQS平台应用请求密钥。 主题 MQS主题。主题能够引用一个本平台定义的系统参数,引用位置不限制。示例:{!roma_topic_prefix}other_roma_topic。 标签 设置订阅消息的标签,可以指定消费某一类型的消息。默认*表示消费所有类型的消息,可以写多个,用“||”隔开,例如“tag1 || tag2 || tag3”。 加密传输 数据是否加密。 单击页面上方保存按钮,设置该“数据接入”基本参数。单击“保存”。 表14 “数据接入”参数说明 参数名称 参数说明 标签 该“数据接入”的显示标签名。长度不超过64个字节。 名称 该“数据接入”的名称,单击参数值后系统可根据“标签”取值自动生成。 描述 描述信息。 单击页面上方图标启用。 单击页面上方图标运行该“数据接入”。 Kafka接收到数据,表示设置成功。 在数据接入编辑页面上方单击停止图标,可停止运行。 在运行成功的提示框中复制数据推送地址,并进行保存。 也可在该数据接入运行后,单击页面上方复制数据推送地址。 在第三方外部数据源侧配置AppCube提供的数据推送地址,具体操作请参考第三方文档。 可选,可执行该步骤进行调试或故障定位。在数据接入编辑页面上方单击下载图标,下载日志,查看日志进行定位。 当数据源或者输出源配置信息有误时,可通过下载日志进行定位。 可选,进行消息跟踪。在数据接入编辑页面右侧选择“消息跟踪”页签,单击“启动”,可启动消息跟踪。 可实时查看上报的报文处理情况。 图16 消息跟踪 消息跟踪在一个周期(默认30分钟)后自动关闭。
  • 操作步骤 鼠标放在App下的Logic文件夹旁会出现加号,单击加号,选择“触发器”。 系统出现“增加触发器”弹框,在该页面中填写基本信息,单击“添加”。 “对象”设置为“Employee__ CS T”,设置触发器名称、标签,触发类型配置为“插入或更新记录时”。 图1 新建触发器 单击“添加条件”,进入创建规则条件页面,进行配置,单击“保存”。 参数说明如表1所示。 表1 条件参数说明 参数 参数说明 条件名称 该条件规则的名称。 执行操作条件 进入该条件规则的条件。配置为“当条件满足时”。 设置条件 设定具体条件。字段配置为“name”,操作符配置为等于,类型配置为常量值配置为“"syw"”。 因为具体条件只有一个,所以不用设置与或关系。 条件中当字段是数字、百分比、币种金额类型时,取值不用加“""”;其他字段类型取值请加“""”。 单击“添加操作”,设置满足规则条件后执行的动作,单击“保存”。 图2 创建动作 表2 操作类型说明 参数 参数说明 操作类型 动作类型,设置为“邮件告警”。 操作名称 该动作名称。 电子邮件告警 选择配置好的邮件告警。 单击进行启用。
  • 常见问题 问题:是否有执行触发器设定的操作权限,取决于触发器的创建人还是触发人? 回答:是否有执行触发器设定的操作权限,取决于触发者本人是否有相关权限,和触发器创建人无关。例如某个触发器关联了对象“D__CST”,触发类型是“插入或更新记录时”,触发时执行脚本C,即对象“D__CST”数据有新增或者更新时,会触发该触发器,从而执行脚本C。用户A是触发器的创建人,没有对象“D__CST”的操作权限和脚本C的执行权限,用户B有“D__CST”的操作权限和脚本C的执行权限,当用户B更新“D__CST”对象数据时,会触发该触发器,执行脚本C。
  • 操作步骤 鼠标放在App下的Logic文件夹旁会出现加号,单击加号,选择“触发器”。 填写基本信息,单击“添加”。 对象:选择“Travel_Information_CST”表示将触发器与对象关联。 标签:定义为“TravelProcess”。触发器显示名称。 名称:系统根据Lable取值自动生成“TravelProcess”。系统其它地方调用触发器时所引用的唯一标识。 触发类型:配置了触发器的启动条件。 仅在插入记录时:当系统创建某条记录时。 仅在更新记录时:当系统更新某条记录时。 插入或更新记录时:当系统创建或更新某条记录时(本任务中选择该选项)。 被别的触发器调用时:被其他触发器所调用时。 收到平台事件时:被事件(event)触发。选中该条件时请在“事件”中配置具体事件。 图1 新建触发器 当编辑已有触发器时,为防止编辑时多人篡改,编辑前请单击进行锁定。 单击“添加条件”,进入创建规则条件页面,进行配置,并单击“保存”。 图2 创建规则条件 参数说明如表1所示。 表1 条件参数说明 参数 参数说明 条件名称 该条件规则的名称。 执行操作条件 进入该条件规则的条件。有以下三种类型: 当条件满足时:只有满足以下设定条件时。 当满足条件表达式时:支持手写的规则条件,自定义逻辑。 没有条件,直接执行:无条件进入该分支。 设置条件 当进入该条件规则勾选的是“当条件满足时”时,您需要设定具体条件。通过设定该触发器涉及对象的某个或某些字段取值的与或关系,来控制进入该触发器的条件。 单击“新增”可添加多个字段取值条件。 条件中当字段是数字、百分比、币种金额类型时,取值不用加“""”;其他字段类型取值请加“""”。 支持在条件中引用旧记录字段的取值,可判断字段级变化。 构建公式 当进入该条件规则勾选的是“当满足条件表达式时”时,您需要手写的规则条件。 系统会对输入的规则条件进行简单的校验。 条件 当进入该条件规则勾选的是“当满足条件表达式时”时且设置的多个条件时,多个条件的关系。 满足所有条件(AND):与关系,必须满足所有条件。 满足部分条件(OR):或关系,只要满足条件之一即可。 单击“添加操作”,设置满足规则条件后执行的动作,并单击“保存”。 图3 创建动作 表2 操作类型说明 参数 参数说明 操作类型 操作类型:动作类型,分以下几种: 创建记录:创建一条记录。 更新记录:更新记录。 邮件告警:发送邮件告警。 触发器:调用子触发器。 脚本:调用Script脚本。 服务编排:调用服务编排。 BPM:调用BPM。 发送事件:发送事件。 操作名称 该动作名称。 (可选)若需要设定多个规则或者多个分支动作,请单击“添加条件”、“添加操作”进行配置。 在触发器开发页面单击启用触发器。
  • 脚本中调用 您可以在脚本中调用刚创建的Rest Action,这里以新建一个脚本为例进行举例说明。 鼠标放在App下的Logic文件夹旁会出现加号,单击加号,选择“脚本”。 选择“创建一个新脚本”,输入基本信息,单击“添加”。 编辑代码如下,其中“LT927__test”表示连接器名称,“test1”为3配置的认证信息名称,“LT927__flapRefund”为3配置的动作名称。 // Here's your code.import * as connector from "connector";let client = connector.newClient("LT927__test", "test1");let result = client.invoke("LT927__flapRefund", {});console.log(result) 单击代码编辑页面上方保存图标,保存脚本。 运行测试脚本。 单击编辑器上方执行图标。 在页面底部“输入参数”页签输入请求参数,单击测试窗口右上角图标。检查脚本编辑页面下方“日志”页签打印的日志。
  • 栅格容器 栅格容器用于对页面区域按照行列布局划分,先分为多个分栏,每个分栏再分为多栏。 在页面中拖入一个栅格容器,选择栅格容器页签,右侧显示属性配置面板。单击“新增行”后的或者,可在栅格容器中“分栏”上方或者下方新增分栏(即新增行)。 图5 栅格容器属性面板 选择栅格容器中“分栏”,右侧显示分栏的属性配置面板。 图6 选择分栏 其实,栅格容器相比较分栏组件来说,只是外面嵌套了一层div元素,栅格容器是AppCube较早提供的容器类页面布局,分栏是AppCube后续单独提供的组件。推荐您使用分栏组件完成页面行列布局的划分。
  • 查看运行态报表 报表运行态可以对报表进行进一步的数据筛选和可视化呈现,也是对报表的一种预览和检查。 在报表列表页面单击需要查看运行态的报表后面的运行报表。 单击右上角“显示图表”,可以设置报表的展示样式。 您需要在创建报表时设置分组字段(参考4.b),该界面才会有“显示图表”。 图10 设置报表的展示样式 式样与类型:可以为数据选择合适的图表类型,如柱状图、堆叠图、折线图、饼图、仪表图、漏斗图、散点图等,不同的图表有不同的选项,可以在“设置”页签中配置。 柱状图、堆叠图、折线图的设置页签配置如下: 图例位置:图例的位置。 X轴:选择一个分组字段作为X轴。 X轴标签:X轴显示名称。 次级分组:可以额外地指定一个分组字段作为次级分类,在同一个柱状图上显示,或者作为堆叠图中的堆叠。 Y轴:选择一个公式字段(默认记录计数)作为Y轴。 Y轴标签:Y轴显示名称。 显示参考线:在图中显示一个参考线,以便比较不同分组的Y轴的值。 显示数值:显示每个柱状的数值。 饼图的设置页签配置如下: 图例位置:图例的位置。 值:可以指定一个公式字段(默认位记录计数)。 切片:可以指定一个分组字段。 显示数值:显示每个饼的数值。 仪表图:仪表图是一种相对简单的图表,用于展示一个具体数值,以及该数值在3 段范围内的状态(最小、中等、最差)。仪表图的设置页签配置如下: 测量:可以指定一个公式字段(默认位记录计数)。 最小值:指定一个度量的最小值。 最大值:指定一个度量的最大值。 漏斗图的设置页签配置如下: 值:选择一个公式字段作为数值度量。 着色依据:选择一个分组字段作为分组度量。 显示数值:显示每层的数值。 散点图的设置页签配置如下: X轴:指定一个公式度量。 Y轴:指定一个公式度量。 详情:指定一个分组度量。 显示数值:显示每点的数值。 调色板:可以为图表选择不同的配色方案,以便制作出个性化的图表。 运行报表界面上的操作仅为用户提供一种快速的数据探索的途径,并不会保存到数据库中。 单击齿轮图标,设置展示数据。 可以对数据进行过滤展示。 图11 数据过滤展示 显示细节:显示分组的详细记录信息。 分组汇总:是否显示每个分组的汇总信息。 整体汇总:在表格底部显示汇总信息。
  • 属性值绑定 在列表视图的“属性”页签,单击“数据绑定”中的,绑定数据模型。 模型实例化必须为数组,详情请参见绑定数据模型、增加查询条件、工具栏。 图2 绑定数据模型 向列表视图中拖入栅格容器,将栅格容器设置为6行2列,再向前5行中拖入标签组件,并设置标签属性。 属性值绑定。 选择第一行、第二列中的标签,单击右侧“属性值绑定”的“+”,新增属性值绑定。 其中,“属性”设置为“文本内容”,再单击,添加模型字段,将模型字段绑定到当前标签上。 重复上一步,为其他行的标签组件进行属性值绑定。 在第6行拖入一个按钮,设置为“Handle”。 单击,保存页面,再单击,进行预览 ,预期效果如图3。 进行属性值绑定的标签组件,显示绑定的模型字段内容。 图3 通过属性值绑定获取模型中的数据
  • 选择或上传图片 您可以直接从配置的OBS库或者SFTP库中选择一张已存在的图片,也可以直接从本地上传图片。 在图片组件属性“基本属性”中单击“图片地址”后的齿轮图标,出现“选择图片”弹窗。 在“图片库”中,选择图片库类型。 选择或上传图片。 在当前图片库下,单击某图片,即可选中此图片。如果图片库中还没有图片,可以选择上传一个图片。 单击“上传图片”,在本地选择一张图片,完成后该图片将默认上传到当前图片库。 单击“确定”完成图片选择,返回页面设计视图。
  • 分页 当数据量较多时,可以使用分页组件,快速进行数据切换。 分页组件一般与表格组合使用时,分页组件可以对表格数据进行分页显示、数据切换,系统内置的表格组件中已包含了分页组件。 向页面中拖入一个分页组件,单击“分页”页签,显示属性配置面板。 表1 分页组件属性 属性 说明 配置 默认分页大小 默认每页条数(分页大小)。 数值型,例如:10 每页条数切换的配置 每页条数切换的配置。 数组型,例如:[10,20,30,40] 显示跳转 是否显示跳转,显示后可设置快速跳转到某一页。 例如:打开开关 显示分页 是否显示分页,显示后可设置具体的分页大小。 例如:打开开关 大小 分页显示大小,可选值为small(迷你版)或不填(默认)。 例如:small 简洁版 是否简洁版显示分页样式。 例如:打开开关 AUI风格 是否展示AUI风格。 例如:打开开关 表2 分页组件事件说明 事件名称 说明 数据改变 单击、或切换每页数据显示量()以及输入跳转页后,触发事件的相关业务。 每页条数改变 在切换每页数据显示量()后触发。 父主题: 平台标准组件介绍
  • 模态框 模态框组件作为一个模态对话框的容器,支持向模态框中拖入各种组件,用于在模态框弹出时,用户必须先响应模态框后,才能对其他对象进行操作的场景。 模态对话框功能:当一个模态对话框弹出时,用户想要对模态框以外的应用程序进行操作时,必须先对该对话框进行响应,例如单击“确定”或“取消”按钮等将该对话框关闭。 属性 说明 标题 模态框的标题。 确定按钮文字 模态框的“确定”按钮上的文字。 取消按钮文字 模态框的“取消”按钮上的文字。 显示Loading 开启后,确定按钮显示loading状态。 显示遮罩层 开启后,显示遮罩层。 点击遮罩层关闭 开启后,允许点击模态框外的遮罩层关闭模态框。 关闭后,必须先对该模态框进行响应才能将该模态框关闭,例如单击模态框中的按钮(“确定”、“取消”)以及图标。 可拖动 开启后,该容器可拖动。 不显示底部 开启后,隐藏“确认”和“取消”按钮区域。 显示取消按钮 开启后,显示取消按钮。 确定按钮在前 开启后,确认按钮在前。 确定按钮禁用 开启后,确认按钮被禁用。 如果模态框高度太大,无法正常显示,可在页面的“样式代码”里添加以下样式代码,即先在样式代码里设置滚动条,然后再将高度改小,如图1所示。 .ivu-modal-body {overflow:auto;} 图1 模态框样式 父主题: 平台标准组件介绍
  • 快速开始 在进行标准页面设计前,您需要对开发界面进行全面的了解。 将光标放在应用目录上之后,应用目录右侧会出现“+”,单击“+”,选择“标准页面”,设置页面标签和名称,即可创建一个全新空白的标准页面,页面创建后,自动进入标准页面开发界面, 标准页面中预置了多种组件,可以直接从左侧“组件”区域,将这些组件拖拽到中间“设计视图”上。 图2 标准页面编辑界面(UI Builder) 在配置使用组件前,您可以将光标放在每个组件上后,组件右上角将显示帮助信息的问号图标,单击问号图标,即可进入该组件介绍页面。若需了解更多AppCube预置组件的使用及配置方法,请参见平台标准组件介绍。 图3 组件的帮助图标 在“设计视图”中,选中一个页面组件,可在右侧“属性”页签,设置该组件的绑定数据、样式等属性,如图4所示。在设计视图中选中一个文本框,可以在右侧修改这个文本框的标签名、样式、绑定的数据模型等。 图4 组件属性面板 在“设计视图”中,选中任意组件,可以在右侧“事件”页签,设置组件的关联事件。例如,选择一个“按钮”,然后在按钮的“点击”事件中,添加相应的事件代码,实现在单击按钮后将界面输入保存到数据库中。 图5 编辑组件的关联事件 利用组件导航,快速选中组件。 当选中某个组件时,页面上方会在组件导航上显示它的html标签层级。 因此,在组件数量比较多,位置较为紧密时,您可以直接单击标签层级,快速选择组件,也可以快速切换组件。例如,在上图的组件导航中单击“页面”,可以直接选中页面上的最外层页面组件。 利用组件树,快速选中组件。 在组件数量比较多,位置较为紧密时,您也单击页面右下角的“组件树”,展开组件树,在组件树中,直接单击标签层级,快速选择组件,也可以快速切换组件。 图6 利用组件树快速选中组件
  • 初识标准页面 将光标放在应用目录上之后,应用目录右侧会出现“+”,单击“+”,选择“标准页面”,设置页面标签和名称,即可创建一个全新空白的标准页面,页面创建后,自动进入标准页面开发界面,您可以阅读以下内容初步了解标准页面。 图1 标准页面开发界面 标准页面开发界面由四部分组成,分别是:左侧组件区域、上方按钮区域、中间工作区域和右侧可配置页面元素区域,具体功能说明如下表所示。 表1 界面布局说明 分类 功能说明 按钮区域 页面功能按钮区域,包括获取锁、释放锁、保存、另存为、预览页面、修订记录、操作回退、撤销回退、页面性能分析、布局切换以及发布成高级页面组件的操作。 组件区域 页面的组件区域。设计页面时,需要从组件区域拖拉拽各种组件(按住鼠标拖动)到工作区域中以丰富页面功能。 组件区域由以下两个页签组成: 基本组件:平台预置的各类组件,具体说明如基本组件分类说明所示。若需要了解每个基本组件的详细使用说明,请将鼠标悬浮在基本组件上,基本组件右上会出现问号图标,单击该图标会出现该基本组件的使用说明。平台标准组件介绍介绍了常用的基本组件属性说明。 扩展组件:存放用户自定义的组件,自定义组件由用户在线下开发完成并上传到AppCube,用于丰富页面组件的功能。自定义组件开发过程及上传方法,请参考创建自定义标准组件。 工作区域 工作区域即是编辑页面内容区域以及页面视图区,主要的页面布局设计操作区域,完成对页面具体布局、组件放置等操作。 设计视图:页面默认视图,此视图下,可以在页面内容中,通过拖拉拽的方式对需要在页面布局中展示的组件元素进行编排,所有组件视图化,所见即所得,让您快速构建您需要的页面布局。页面右上角“外层容器”开关,可快速呈现外层容器和范围。 模型视图:该页面所涉及的模型展示视图。 事件视图:该视图下,页面布局中各事件以代码形式展示在工作区域。 样式代码:页面自定义的样式代码。 更多:单击“更多”后,将会展开以下页签。 组件代码:该视图下,页面布局中各组件以代码形式展示在工作区域。 第三方库:该页面加载的第三方库代码。 可配置页面元素区域 页面和组件属性设置区域,在该区域可以对组件属性、事件进行设置,也可以加载第三方库以完成对组件的应用。该区域由以下三个页签组成: 属性:组件的属性展示区域,可在属性面板修改组件属性使页面达到预期效果。在工作区域“设计视图”下选中组件,键盘上按Tab键,可在“属性”页签中切换属性参数项,按Enter键可设置属性值。 事件:进入事件编排器的入口,您可通过系统预置的事件编排器,或者直接通过定义JS代码,来实现页面组件与后台接口之间的交互。 库:加载当前页面所依赖库的入口。页面设计的某些功能需要依赖特定的库来完成,用户可以在该页签下新增或删除某些库。系统默认会提供部分库,若不满足现有需求,也可以根据实际情况加载新的库。
  • 基本组件分类说明 组件包括平台预置基本组件、用户自定义的扩展组件,基本组件具体说明如表2所示。若需要了解每个基本组件的详细使用说明,请将鼠标悬浮在基本组件上,基本组件右上会出现问号图标,单击该图标会出现该基本组件的使用说明。 表2 基本组件分类说明 分类 说明 布局 用于控制页面的布局,即将页面设计几行几列。例如先拖入一个栅格容器,将栅格容器用行列划分成小区域后,再向单元格中拖入其他组件。容器本身可以包含容器,也可以包含其他组件。 表单:元数据表单。根据数据对象可生成表单。可用于制作带数据的交易类页面。 表格:元数据表格,用于展示对象记录。根据数据对象可生成表格。数据对象中的属性映射为表格中的列。用于通过一个表格完成数据对象的增、删、改、查操作场景。 基础容器:基本的布局容器,支持拖拽放置任何组件进去,按照流式布局模式布局(非独占整行组件如按钮组件,从左往右排列,占满整行即换行;独占整行组件如标题组件,则默认独占一行)。 分栏:容器组件,相当于行,内部可分多栏(列)。可将页面划分为两栏或者多栏,每一栏都可以拖入其他组件。 折叠面板:用于对页面的某些区域进行折叠和展开,可放下多个折叠页组件。 页签:用于制作多页签页面时使用,可放下多个页签组件,实现多页签效果,可在不同的页签内放置内容,通过点击标签切换显示不同的内容。 列表视图:用于灵活组合列表项的内容,并且根据实例化数据动态展示。使用时需要在List View上绑定数据模型。数据类型为数组。如果要使用分页,分页组件需放在List View Container内。 模态框:弹框样式布局,使用数据绑定实现双向绑定,通过控制模型的值true、false来显示、隐藏对话框。 表单 输入框:文本输入框,关联对象文本(text)类型,可编辑一行的文本控件,包含标签。控件内的标签将其与输入组件区分开。适用于普通文本输入。 多行输入框:多行文本输入区域,关联对象文本区(Text Area)类型,多行可编辑的文本控件。适用于多行文本输入。 日期选择框:用于日期选择或输入,关联对象日期(Date)类型、日期/时间(Date/Time)类型,可以选择或输入日期,支持年、月、日期等类型,支持选择范围。 数字输入框:数字(Number)类型的输入框,关联对象数字类型。 复选按钮:该控件允许用户从多个选项中进行多种选择。 单选按钮:用于有一组可选项的单项选择,或者切换某个选项的选中状态,以实现从一组互斥的选项组中选择一项。 下拉框:下拉框的可选值为对象的SingleSelect类型字段的不同Picklist取值,也可以是自定义json数据。如果Picklist和自定义json数据同时存在,以Picklist的取值为准。 级联选择框:提供按层级选择的选择框,可对选择框的数据进行校验,可以对数据进行搜索。 开关:滑动开关,可关联对象的复选框(Boolean)类型字段。允许用户选择“真”(选取)或“假”(不选取)值。 上传:文件选择上传和拖拽上传控件,可以通过绑定数据模型,上传文件列表会保存在绑定的模型中。 自动完成:带有提示的文本输入框。 弹出对话框:单击后会弹框的组件,需要自定义实现代码。 多语言选择框:多语言切换组件,关联对象多语言(mutillang)类型。 评分:评分、评价组件。 关联选择框:一个搜索的选择框,关联对象的查找关系(lookup)或主从关系(masterdetail)类型,可以通过搜索来匹配下拉的选项,匹配成功的选项会展开在下拉列表中。 基本 按钮:通过编排事件实现Button,触发业务逻辑使用。 按钮卡:包含多个按钮(两个或更多)的整体面板。该组件可用于构建多项菜单,用于在视图之间导航。 标签:用于显示页面信息的静态文本。 图标:用于辅助相关文字进行展示,也可当做按钮点击使用,常配合其他组件一起使用。 标题:用于添加具有标题意义的文字,可以通过选择属性“标题类型”的值来控制添加的标题的文字大小。 链接:链接地址,用于链接、跳转,一般常用来打开新页面或作为文字性按钮使用。 图片:用于上传图片,可以从OBS或者SFTP选择或上传图片。 面包屑:是项目中常用的一种组件。结构大致是“首页/菜单1/菜单2/菜单3”。 滑块:滑块是一个可以利用鼠标在其上面进行滑动的条状组件,一般使用在进度条,区域划分等地方。当鼠标在轨道上点击时,滚动球会移动到当前鼠标点击的位置,单击过的地方会以蓝色显示,未单击的地方是灰色。 分页:用于多条数据展示时可设置分页展示,每页展示固定数据条数。 高级 选项树:树形结构选择设置。适用于要展示的数据为树形结构。 步骤条:步骤进度条。可设置总步骤数和每一步的展示名称。 时间轴:一般绑定数据服务使用,动态的展示时间轴的内容。 走马灯:在满足设置的条件可切换显示灯。 可收缩面板:弹性伸缩布局,可左右伸缩的容器。 滚动容器:由于屏幕尺寸限制,当页面内容已经超出屏幕的范围时,需要拉动滚动条,在有限的屏幕中浏览更多内容。 代码块:用于代码块展示。 选择卡:可从某一卡片区域选中到另一卡片区域。 栅格容器:用于控制页面的布局,即将页面设计几行几列,先设置元素在页面中纵向排列,然后在每一行中又可设置元素横向排列。 标签栏:只有页面布局模式为手机模式时,才会显示该组件。为底部导航组件,单击标签栏中的选项可切换本应用中不同的页面。
  • 按钮 按钮一般在用户单击触发业务逻辑时使用,按钮组件提供单击触发事件能力。 向工作区域中拖入一个按钮组件,单击按钮页签,显示可配置属性页面。 表1 按钮组件属性说明 参数名 说明 显示名称 按钮展示名称。 支持国际化配置,在配置按钮展示名称时,可选择已有多语言、创建或更新多语言。此处创建的多语言会保存在租户的多语言库中。 类型 按钮类型。 大小 按钮大小。 鼠标悬停时展示 鼠标悬停时展示的文字。 支持国际化配置,在配置鼠标悬停展示文字时,可选择已有多语言、创建或更新多语言。此处创建的多语言会保存在租户的多语言库中。 形状 按钮形状。 选择图标 系统预置的按钮图标。 图标位置 按钮图标展示位置。 加载中状态 按钮是否显示为加载中状态。 配置完按钮属性后,需要在“事件”页签定义该按钮的实现方法,即进行事件编排,事件编排有两种方式,请根据实际情况进行编排,具体请参见事件编排器说明。 父主题: 平台标准组件介绍
  • 面包屑 面包屑组件,是项目中常用的一种组件。结构大致是“首页/菜单1/菜单2/菜单3”。 向工作区域中拖入一个面包屑组件(在“基本”区域中),单击面包屑组件页签,显示可配置属性页面。 表1 面包屑组件属性说明 参数名 说明 配置菜单 单击“设置”,弹出“配置菜单”界面,界面参数说明如图1和表2所示。 分隔符 菜单名之间的分隔符。 跳转 单击面包屑组件的菜单标签,是否开启自动跳转。 默认为开启。若不开启跳转,可在“事件”页签定义跳转的实现方法,即进行事件编排。 图1 “配置菜单”界面 表2 “配置菜单”参数说明 参数名 说明 图标 配置某具体菜单的图标。 文本内容 配置某具体菜单的显示名称。 URL类型 该菜单跳转页面的URL类型,分“常量”和“选择页面”两种选项。 地址 当“URL类型”为“常量”时,需要配置跳转页面的具体URL地址;当“URL类型”为“选择页面”时,需要选择系统中创建的具体跳转页面。 链接目标 跳转后页面显示形式,分以下几种。 新窗口:在新窗口页显示跳转页面。 当前框架:在当前框架显示跳转页面。 父框架:在父框架区域显示跳转页面。 整个窗口:在当前整个窗口显示跳转页面。 在“配置菜单”界面单击“新增”或“删除”可创建或者删除相应菜单。单击可调整菜单顺序。 父主题: 平台标准组件介绍
  • 通过自定义JS代码编排事件 您可以不使用事件编排器的内置动作,直接手动编写JS代码,实现按钮的事件逻辑。系统支持在手动编写JS代码时,进行代码联想提示;系统封装了一些常用功能的接口,并将其中典型接口做成模板,您可以从左侧拖动相关模板至右侧事件定义区域,直接使用。 选择按钮组件,在右侧“事件”页签下,单击“点击”后的加号,进入“添加动作”页面。 在左上角选择“自定义动作”,在右侧事件定义区域输入实现事件逻辑的JS代码,也可从左侧拖动相关模板至右侧事件定义区域,单击“创建”。 图3 自定义JS代码 代码如下: //获取当前组件var _component = context.$component.current;//获取当前表单var _form = context.$component.form;// 重置表单_form.resetFields(); 或者单击自定义JS代码区域右上侧的,最大化自定义JS代码页面,编辑代码。 内置的JS事件说明及使用方法,请参考如何通过JS代码实现页面与后台接口间的交互。 单击页面上方保存按钮,保存页面。
  • AI代码补全功能 功能描述:开发者在JS代码编写过程中,键入特定的字符,界面会进行提示,从而自动构建智能代码补全服务,增强IDE代码补全能力。 使用方法:开发者在JS代码编辑器中编写代码过程中,敲击字符时自动触发代码推荐,选中后按Enter补全。 下面对AI代码补全功能进行详细介绍: 事件内置API补全:开发者键入“context”后提示事件代码内可调用的API。 模型名称补全:开发者键入“context.$model.ref”后提示当前页面中的模型。 服务编排名称补全:开发者键入“context.flow”后提示当前租户下的服务编排。 脚本名称补全:开发者键入“context.script”后提示当前租户下的脚本。 服务名称补全:开发者键入“context.service”后提示当前租户下的 API服务 ,选择API服务名称后自动补全服务地址。 华为OneMobile API补全:开发者键入“xm”后提示华为OneMobile小程序中的API。 WeLink API补全:开发者键入“HWH5”后提示WeLink小程序中的API。
  • 通过内置动作编排事件 系统预置了多种常用的事件交互动作,您可以根据需要直接使用来实现页面或组件之间的交互。 以下通过编排一个重置功能按钮为例,介绍通过内置动作编排事件,本示例主要是通过内置动作“重置表单”实现该功能,即重置表单数据。“提交表单”是指将页面数据提交到表单中,和重置表单配置类似,不再单独介绍。 选择按钮组件,在右侧“事件”页签下,单击“点击”后的加号,进入“添加动作”页面。 在左上角选择“内置动作”,单击“重置表单”,选择需要重置的表单,单击“创建”。 单击页面上方保存按钮,保存页面。 单击预览页面,在表单中输入数据,然后单击“重置”按钮,可预览按钮的事件效果。
共100000条