华为云用户手册

  • 设置高级页面基本信息 高级页面创建后,支持设置高级页面的基本信息,如名称、路径名称、标题等。 参考登录AstroZero新版应用设计器中操作,进入应用设计器。 在应用设计器的左侧导航栏中,选择“界面”。 将鼠标放在对应的高级页面上,单击,选择“设置”。 在“基本信息”页签中,修改所需参数,单击“保存”。 表2 设置高级页面基本信息参数说明 参数 说明 名称 高级页面的名称,即创建高级页面时设置的名称,可根据实际需求进行修改。命名要求如下: 长度范围为1~100个字符。 必须以字母开头,由字母、数字或单下划线组成,且单下划线不能连续。 路径名称 路径名称和高级页面名称保持一致,可根据实际需求进行修改。命名要求如下: 长度范围为1~100个字符。 必须以字母开头,由字母,数字或单下划线组成。 标题 高级页面的标题,即创建高级页面时设置的标签,可根据实际需求进行修改。 描述 根据实际需求,在输入框中输入高级页面的描述信息。 关键字 用于和接口进行交互。 拉伸 勾选后,高级页面宽度会扩展至100%,以适应整个浏览器或设备的可视宽度,同时组件内容的宽度也会根据容器的宽度进行调整。默认为不勾选。 缩放和拖移 发布后的高级页面中,组件是否支持用户缩放或拖动。 默认为不勾选。 页面是否可定制修改 在扩展应用中,是否支持从依赖的应用中,将该高级页面导入。 默认为不勾选。 浏览器缓存有效期(天) 间隔多少天刷新一次浏览器缓存。
  • 管理页面级数据源、全局状态 页面组件之间,可以通过配置事件和动作进行信息交互。当页面组件较多,且需要进行信息交互时,频繁的给每个组件去定义事件或动作就比较繁琐了。此时,可以通过定义全局状态,来实现页面级所有组件中数据信息的更新。 AstroZero低代码平台高级页面支持设置全局状态,通过页面级内存方式共享数据,即采用集中式存储管理页面所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。简单的理解就是全局状态,可理解为页面中所有组件的共享状态,不管组件在页面的哪个位置或层级,任何组件都能获取状态或触发状态改变的动作。全局状态相当于全局变量,属性是私有的,需要在组件的js文件中,使用预置的“this.$mstore.dispatch”方法,来修改状态数据。 思考:什么情况下,应该使用全局状态? 解惑:当页面组件构成比较简单,组件间不需要频繁的进行信息交互时,不需要设置全局状态。反之,则建议使用全局状态,通过设置并使用全局状态,可以帮助您管理页面所有组件的共享状态。 参考登录AstroZero新版应用设计器中操作,登录应用设计器。 在左侧导航栏中,选择“界面”。 在高级页面中,单击对应的页面,进入高级页面开发界面。 在页面右上角,单击,定义全局状态。 定义全局状态使用JavaScript编程语言,不支持TypeScript。全局状态结构固定以MStore命名,每个页面仅包含一个全局状态实例,方便在组件调试的过程中,轻易的获取整个当前页面状态的快照。全局状态的结构定义由以下三部分组成: state:定义页面所有组件的初始状态数据,即页面中所有组件共享状态的初始数据源。 mutations:状态变更的唯一方法是提交mutation。mutation以声明的方式,将state变化映射到视图,每次state的变更都需要定义一个mutation。mutation使用对象风格的提交方式,整个对象都作为载荷(payload)传给mutation函数,mutation都是同步事务。 actions:通过actions执行状态数据变更,用于衔接state和mutation。Action可以包含任意异步操作,通常用于绑定状态和组件,可以调用服务。 在页面的组件js文件中,使用预置的“this.$mstore.dispatch()”方法,修改状态数据。
  • 克隆高级页面 页面创建完成后,支持将高级页面克隆到当前应用中。例如,应用A中存在两个或多个功能类似的高级页面,此时可基于已创建的高级页面克隆出一个新页面,基于克隆后的页面进行修改,减少重复创建的操作。 参考登录AstroZero新版应用设计器中操作,进入应用设计器。 在应用设计器的左侧导航栏中,选择“界面”。 将鼠标放在对应的高级页面上,单击,选择“克隆”。 输入高级页面的名称和唯一标识,单击“确认”。 克隆成功后,自动进行克隆后的高级页面。
  • 为高级页面设置水印 高级页面创建后,支持为高级页面添加水印。水印可以用于标识页面的所有者、状态或其他相关信息,建议不要过多的设置水印,可能会影响页面的美观。 参考登录AstroZero新版应用设计器中操作,登录应用设计器。 在左侧导航栏中,选择“界面”。 将鼠标放在对应的高级页面上,单击,选择“设置”。 在“水印”页签,参照表1设置参数,单击“保存”。 图1 水印设置 图2 设置后效果 表1 新增水印参数说明 参数 说明 启用水印 是否给该页面启用水印。 重复渲染 当需要设置满页面水印时,开启该项。 水印内容 设置水印文本内容。 水印长度 水印矩形框的长度。 水印宽度 水印矩形框的宽度。 水平起始位置 当关闭“重复渲染”时,才可设置,表示单个水印在页面的水平起始位置。 垂直起始位置 当关闭“重复渲染”时,才可设置,表示单个水印在页面的垂直起始位置。 字体颜色 水印字体的颜色。 字体大小 水印字体的大小。 旋转角度 水印的旋转角度,取值范围-180~180,即逆时针或者顺时针旋转180度。 透明度 水印的透明度设置。
  • 请求示例 对一个BPM实例修改或设置,设置其中两个开发者自定义的参数值,将变量cpuNumber的值改为1, custVar1的值改为value1。被操作的BPM实例ID是“002N000000Q3QW4IMAOO”。 PUT https://AstroZero 域名 /u-route/baas/bp/v2.0/runtime/instances/002N000000Q3QW4IMAOO/variables { "cpuNumber":1, "custVar1":"value1" }
  • URI PUT AstroZero域名/u-route/baas/bp/v2.0/runtime/instances/{instance_id}/variables 表1 路径参数 参数 是否必选 参数类型 描述 instance_id 是 String 参数解释: 对应一个具体BPM实例的标识,可通过调用查询BPM实例接口查看(响应消息中的“id”)。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。
  • 服务编排相关 初始化Flow API:context.flow(flowName) 入参:flowName表示Flow名称。 出参:Flow 示例: // 初始化Flow let _flow = context.flow("flowName") 设置Flow版本号 API:_flow.version(version: string) 入参:version表示flow版本号。 出参:Flow。 示例: // 设置Flow版本号 _flow.version("0.0.1") 运行Flow API:flow.run(params: Object) 入参:params,输入参数,如下示例: { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 适用于一次调用,Flow即完成的场景 // 运行Flow _flow.run({ param1: 'param1' }).then(function (res) { // TODO: Youre business logic }) 启动Flow API:_flow.start(params: Object) 入参:params,输入参数,如下示例: { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 以下适用于多步操作的业务场景 _flow.start({ param1: 'param1' }).then(function (res) { // TODO: Youre business logic }) 执行Flow下一步 API:_flow.next(interviewID: string, params: Object) 入参:interviewID为Flow运行实例ID,params为输入参数。 { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 下一步 _flow.next("{{ interviewID }}", { param1: 'param1' }).then(function (res) { // TODO: Youre business logic }) 返回Flow上一步 API:_flow.back(interviewID: string, params: Object) 入参:interviewID为Flow运行实例ID,params为输入参数。 { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 上一步 _flow.back("{{ interviewID }}", { param1: 'param1' }).then(function (res) { // TODO: Youre business logic }) 正常完成Flow API:_flow.finish(interviewID: string, params: Object) 入参:interviewID表示Flow运行实例ID;params:输入参数,如下示例: { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 完成Flow _flow.finish("{{ interviewID }}", { param1: 'param1' }).then(function (res) { // TODO: Youre business logic }) 恢复Flow运行 API:_flow.resume(interviewID: string, params: Object) 入参:interviewID表示Flow运行实例ID;params:输入参数,如下示例: { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 恢复Flow _flow.resume("{{ interviewID }}", { param1: 'param1' }).then(function (res) { // TODO: Youre business logic }) 删除Flow实例 API:_flow.terminate(interviewID: string, params: Object) 入参:interviewID表示Flow运行实例ID;params:输入参数,如下示例: { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } } 出参:Promise。 示例: // 删除Flow _flow.terminate("{{ interviewID }}", { param1: 'param1', param2: { param21: 'param21', param22: 'param22' } }).then(function (res) { // TODO: Youre business logic })
  • 服务请求 调用服务的API API:context.service('{{url}}').run(_inputParams) 入参:“url”为服务接口的URL,在APP或者BO视图下单击“服务”,可查看到封装Flow、脚本或者对象操作接口的URL。“_inputParams”为输入参数。 示例: var _inputParams = {}; // 调用服务 context.service('{{ url }}').run(_inputParams).then(function(response) { // TODO: Your business logic });
  • BPM相关(原子级) context.$bp和context.$bpm的区别在于后者保证了操作的原子性。例如,调用context.$bp.submitTask (variables:object)数据提交成功时,会有弹框提示且点击“确定”按钮会自动关闭当前页面。而调用context.$bpm.submitTask (variables:object)提交时,只会提交任务而不会有后续的弹框提示等操作;并且当不在BPM上下文环境中提交任务时(即当BPM实例没有运行时提交任务),会有相关提示信息。 推荐使用context.$bpm。 获取参数信息 API:context.$bpm.loadVariables() 入参:无。 出参:参数对象。 示例: context.$bpm.loadVariables().then(function (data) { context.$model.ref("loanRequestData").setData(data.result.LoanRequestData); context.$model.ref("statusUpdates").setData(data.result.Status); context.$model.ref("negotiateCount").setData(data.result.NegotiateCount); }); 设置BPM中的变量 API:context.$bpm.putVariables (variables:object, instId: string) 入参:“variables”为参数对象,必选;“instId”为实例ID,可选。 出参:执行结果。 示例: context.$bpm.putVariables({ LoanRequest: "test" }); 数据提交到BPM API:context.$bpm.submitTask (variables:object) 入参:“variables”为参数对象,必选。 出参:无。 示例: var data = context.$model.ref("loanRequestData").getData(); context.$bpm.submitTask({ LoanRequest: data });
  • 模型相关 获取data model= model_1实例的数据。 API:$model.ref("model_1").getData() 设置data model= model_1实例的数据,入参data和model_1定义结构一致,当改变整个模型数据时使用。 API:$model.ref("model_1").setData(data) 设置data model= model_1实例的字段值,只改变已有模型数据某个字段值时使用。 API:$model.ref("model_1").setValue(field, value)
  • Tab页相关 仅支持平台的运行态使用,可使用portal框架暴露的API来实现,平台运行态会暴露一个 bingo 全局变量供使用,标准页面由于在 iframe 内,需要使用 window.parent.bingo 访问: 打开tab页,返回tabId。 API:openTab(name, url) 切换tab页。 API:switchTab(tabId) 关闭指定Tab页。 API:removeTab(tabId) 当前Tab页。 API:getCurrentTab() 默认Tab页。 API:getDefaultTab() 打开指定Tab。 API:open({type:'Tab', id: tabId}) 打开指定Tab。 API:openTabByMenuName(menuName) 返回上一个路由。 API:back()
  • BPM相关(非原子级) 获取参数信息 API:context.$bp.loadVariables() 入参:无。 出参:参数对象。 示例: context.$bp.loadVariables().then(function (data) { context.$model.ref("loanRequestData").setData(data.result.LoanRequestData); context.$model.ref("statusUpdates").setData(data.result.Status); context.$model.ref("negotiateCount").setData(data.result.NegotiateCount); }); 设置BPM中的变量 API:context.$bp.putVariables (variables:object, instId: string) 入参:“variables”为参数对象,必选;“instId”为实例ID,可选。 出参:执行结果。 示例: context.$bp.putVariables({ LoanRequest: "test" }); 数据提交到BPM API:context.$bp.submitTask (variables:object) 入参:“variables”为参数对象,必选。 出参:无。 示例: var data = context.$model.ref("loanRequestData").getData(); context.$bp.submitTask({ LoanRequest: data });
  • 其他 启动定时任务 API:context.timerTask(_timerHandler, _timeout, _executionCondition); 入参:分别是定时执行的业务逻辑、任务时间间隔、执行条件。 示例: // 任务间隔时间,毫秒 var _timeout = 1000; // 定时执行业务逻辑 var _timerHandler = function() { // TODO: Your business logic }; // 执行条件 var _executionCondition = function() { return true; }; // 启动定时任务 context.timerTask(_timerHandler, _timeout, _executionCondition);
  • 页面类 获取当前页面 API:context.$page.current 当前页面绑定的数据模型 API:context.$page.getModel() 页面URL参数 API:context.$page.params.paramName 示例: // 假设当前页面URL为:https://localhost:8080/besBaas/page#/std_1?a=1&b=2, 则获取URL参数方式如下: let paramA = context.$page.params.a let paramB = context.$page.params.b 在新的导航条打开页面 API:context.$page.open(url: string, queryString: string) 入参:url表示页面地址。queryString表示查询参数(URL参数),格式为“key=value”,多个参数用“&”符号连接。 示例: context.$page.open('https://localhost:8080/besBaas/page#/std_2', 'a=1&b=2') 在当前导航条打开页面 API:context.$page.load(url: string, queryString: string) 刷新当前页面 API:context.$page.reload() 在新的导航条打开标准页面 API:context.$page.openStdPage(pageName: string, queryString: string) 入参:pageName表示页面名称。queryString表示查询参数(URL参数),格式为“key=value”,多个参数用“&”符号连接。 示例: context.$page.openStdPage('std_2', 'a=1&b=2') 在当前导航条打开标准页面 API:context.$page.loadStdPage(pageName: string, queryString: string) 在新的导航条打开高级页面 API:context.$page.openAdvPage(pageName: string, websiteName:string, queryString: string) 入参:pageName表示页面名称。websiteName表示为高级页面的站点名称,queryString表示查询参数(URL参数),格式为“key=value”,多个参数用“&”符号连接。 在当前导航条打开高级页面 API:context.$page. loadAdvPage (pageName: string, websiteName:string, queryString: string) 关闭当前页面 API:window.close() 图2 关闭页面语句
  • 对象操作 获取对象 API:context.object(objectName) 入参:objectName,对象名称。 出参:对象。 示例如下: let _object = context.object("objectName") 查询对象所有数据 API: _object.query().then(function (response) { // TODO: Your business logic }) 查询满足条件数据 例如,查询满足name = 'test' 条件的对象数据,代码如下: let _condition = {conjunction: 'AND', conditions: [{ field: 'name', operator: 'eq', value: 'test' }] } _object.query({condition:_condition}).then(function (response) { // TODO: Your business logic }) 统计满足条件的对象数据数量 API:_object.count(_condition) 其中,“_object”为对象名称。 入参:_condition,查询条件,可选。 出参:Promise。 示例: // 统计所有数据 _object.count().then(function (response) { // TODO: Your business logic }) // 统计满足条件数据 _object.count(_condition).then(function (response) { // TODO: Your business logic }) 查询满足条件数据, 且只查询部分字段 let _fields = 'id,name' _object.query({condition:_condition}, _fields).then(function (response) { // TODO: Your business logic }) 查询满足条件数据, 且只查询部分字段, 支持分页和排序 例如,根据name字段降序排序,跳过前10条记录分页,每页最多显示10条数据。示例代码如下: let _fields = 'id,name' let _options= {'skip': 10,'limit': 10,'orderby': [{'field': 'name','order': 'desc'}]} _object.query({condition:_condition}, _fields, _options).then(function (response) { // TODO: Your business logic }) 通用对象数据查询 API:_object.query({condition:_condition}, fields: string) 入参:_condition,查询条件,可选,参考如下结构。 { conjunction: 'AND', // 条件连接符,AND 或 OR conditions: [ { field: 'name', // 条件字段 operator: 'eq',// 条件比较符 value: 'test' // 条件值 }, { condition: { // 嵌入条件 conjunction: 'OR', conditions: [ { field: 'status', operator: 'eq', value: '1' }, { field: 'status', operator: 'eq', value: '2' } ] } } ] } 以上示例表达内容为:name = 'test' && ( status = '1' || status = '2') fields:查询字段(只返回指定的字段),多个字段以逗号分割,可选。 出参:Promise。 插入对象数据,支持批量操作 API:_object.insert(data: Object[]) 入参:data,待插入数据,对象数组。 出参:Promise,返回新插入数据的记录ID。 示例: let data = [{ name: 'test', label: 'test' }] _object.insert(data).then(function (response){ if (response && '0' === response.resCode) { let _id = response.result[0].id}}) 根据记录ID更新对象数据 API:_object.updateByID(_id: string, data: Object) 入参:id表示记录ID,data表示对象更新内容。 出参:Promise。 示例: let _id = '{{ id }}' // 根据记录ID更新数据 _object.updateByID(_id, { label: 'test2' }).then(function (response) { // TODO: Your business logic }) 根据记录ID查询对象数据 API:_object.queryByID(_id: string) 入参:id表示记录ID。 出参:Promise。 示例: let _id = '{{ id }}' // 根据记录ID查询单条数据 _object.queryByID(_id).then(function (response) { // TODO: Your business logic }) 根据记录ID删除对象数据 API:_object.deleteByID(_id: string) 入参:id表示对象记录ID。 出参:Promise。 示例: let _id = '{{ id }}' // 根据记录ID删除数据 _object.deleteByID(_id).then(function (response) { // TODO: Your business logic }) 根据记录ID批量查询对象数据 API:_object.batchQueryByIDs(_ids: string, fields: string) 入参:ids表示记录ID,多个ID以逗号分割。fields表示查询字段,多个字段以逗号分割,可选。 出参:Promise。 示例: _object.batchQueryByIDs('id1,id2,id3').then(function (response) { // TODO: Your business logic }) 根据记录ID批量删除对象数据 API:_object.batchDeleteByIDs(_ids: string) 入参:ids表示记录ID,多个ID以逗号分割。 出参:Promise。 示例: _object.batchDeleteByIDs('id1,id2,id3').then(function (response) { // TODO: Your business logic }) 批量插入或更新对象数据 API:_object.batchUpsert(data: Object[]) 入参:data,待插入或更新的数据对象,包含id时表示进行更新。 出参:Promise。 示例: let data = [{id: '1538033158273005', label: 'test'}, {name: 'test', label: 'test'}] _object.batchUpsert(data).then(function (response) { // TODO: Your business logic })
  • 表单类 获取当前表单 API:context.$component.form 如果当前组件为表单,则直接返回。否则,根据组件上下文向上查找最近的表单组件。 根据组件Key值获取表单 API:context.getFormByKey(_formKey: number) 入参:表单组件的Key值,类型为number。 校验整个表单 API:_form.formValidate() _form为已获取的表单组件,返回promise。 API:_form. formValidateUnPromise 非promise,返回true/false。 表单的单字段校验: API:_form.validateField(prop, callback) 参数prop为需校验的属性,参数callback为检验完回调函数,返回错误信息。 示例: _form.validateField("name",function(errorMsg){ console.log("validate field", errorMsg) }); 表单重置 API:_form.resetFields() _form为已获取的表单组件。 表单提交 API:_form.formSave() _form为已获取的表单组件。API内部实现已先进行表单校验,校验成功后进行提交保存操作。
  • 表格类 获取当前表格 API:context.$component.table 如果当前组件为表格,则直接返回。如果当前组件有关联的表格,则返回对应的表格(如表格查询条件、分页等)。否则,根据组件上下文向上查找最近的表格组件。 获取查询条件 API:_table.getCondition() _table为已获取的表格组件,返回表格绑定的查询条件。 设置查询条件 API: // 先获取条件,再进行赋值 var condition = _table.getCondition(); // 字段满足单个条件,默认操作是contains condition.queryInfo = { "fieldName": "1" } // 字段满足单个条件,使用自定义操作 condition.queryInfo = { "fieldName": { operator: "contains", value: "1" } } // 字段满足多个条件 condition.queryInfo = { "fieldName": [{ operator: "contains", value: "1" }, { operator: "contains", value: "2" }] } // 分页条件 condition.pageInfo: { "pageSize": 10, "curPage": 1 } 其中,“_table”为已获取的表格组件。 入参:表格查询条件。 执行查询 API:_table.doQuery() 其中,“_table”为已获取的表格组件。 初始化行数据 API:_table.rowInit() 其中,“_table”为已获取的表格组件,初始化一条新的行数据,此方法执行后,数据并未添加到表格。 添加行数据 API:_table.addrow(newRowData: object) 其中,“_table”为已获取的表格组件,此方法将初始化好的行数据添加到表格,此方法执行后,数据仅在前端表格保存,并未持久化到后端。 入参:行数据。 获取表格当前选中的行数据 API: _table.getSelectedData() 其中,“_table”为已获取的表格组件。 删除表格行数据 API:_table.doDelete(rows: array) 其中,“_table”为已获取的表格组件。 入参:表格行数据列表。 示例: // 当前表格 let _table = context.$component.table // 获取当前选中的行 let rows = _table.getSelectedData() // 删除选中行 _table.doDelete(rows) 获取表格修改的数据(新增、修改、删除) API:_table.getOperatedData() 其中,“_table”为已获取的表格组件。 保存表格数据 API:_table.doSave(operatedData: object) 其中,“_table”为已获取的表格组件,此方法将当前表格做的修改操作进行持久化操作。 入参:修改的表格数据。 示例: // 当前表格 let _table = context.$component.table // 获取修改的数据 let operatedData = _table.getOperatedData() // 提交表格修改 _table.doSave(operatedData)
  • 脚本操作 初始化Script API:context.script(scriptName) 入参:scriptName,表示Script名称。 出参:Script 示例: // 初始化脚本 let _script = context.script('{{ scriptName }}') 运行Script API:_script.run() 入参:无。 出参:Promise。 示例: // 初始化脚本 let _script = context.script('{{ scriptName }}') // 运行脚本 _script.run().then(function(response) { // TODO: Your business logic })
  • 组件类 获取当前组件 context.$component.current 根据KEY获取组件 API:context.$component.get(_compKey: number) 入参:组件KEY,类型为number。 出参:Component。 示例如下: let _compKey = 1546395654403000 let _component = context.$component.get(_compKey) 根据名称获取组件 API:context.$component.get(_compName: string) 示例如下: let _compName = 'input_1' let _component = context.$component.get(_compName) 获取组件绑定的模型 API:_component.getDataModel() _component为当前操作的组件。 示例如下: let _component = context.$component.current let _model = _component.getDataModel()
  • 验证 单击界面上方的,进入预览页面,查看页面的展示效果,并验证以下功能: 在界面上单击“新增设备”,查看是否跳转到“编辑设备”页面,如未跳转,请检查事件代码中页面名称前缀是否是实际空间名。 检查“编辑设备”页面的“设备品牌”下拉框,“省市区”级联框的选项是否正确。 选项正确,则说明自定义模型、页面组件与模型绑定关系、以及页面on-load事件是正确的。 检查“编辑设备”页面(HW__editEquipment)的设备录入功能是否正确。 填写“设备名称”、“设备编码”等信息, 单击“保存”。 检查“设备管理”页面(HW__equipmentManage)是否包含新插入的数据。 如果查询结果页面显示新增数据,则说明新增功能以及页面的事件代码正确。 如果操作不成功,可以在页面事件脚本中增加debugger,使用Chrome 开发者工具 来调试定位问题。 检查“编辑设备”页面(HW__editEquipment)的设备修改功能是否正确。 单击一条记录后面的编辑按钮,查看是否跳转到“编辑设备”页面。 修改“设备名称”、“设备编码”等信息, 单击“保存”。 检查“设备管理”页面(HW__equipmentManage)当前设备记录是否更新。 如果查询结果页面显示更新数据,则说明修改功能以及页面的事件代码正确。 检查“设备管理”页面(HW__equipmentManage)的设备删除、查询、重置功能是否正确。 选中空白行或其他行,单击“删除”,验证删除功能是否正常,如果不能删除,请检查操作列“删除”按钮事件代码。 在查询区域分别输入“设备名称”、“地址”,单击“搜索”或“重置”验证查询电梯设备信息功能,如果不能查询或重置,请检查操作列按钮的事件代码。
  • 操作步骤 参考登录零代码工作台中操作,登录AstroZero零代码工作台。 在全部应用中,单击应用后的“...”,选择“编辑”,进入编辑应用页面。 单击表单栏左侧的,进入表单设计页面。 在“表单填报”页面,单击表单填报页后的,新建表单填报页,名称设置为“填报链接”。 选择新建的填报页面(填报链接),单击页面最右侧的“填报设置”,“填报模式”选择“单次填报”,设置“开始时间”和“截至时间”,并勾选“允许在截止时间前修改原提交记录”。 填报模式包括单次填报、多次填报和周期填报。其中,单次填报和多次填报用于限制用户填写次数,周期填报一般应用于每日打卡、填写周报等场景。 图1 设置新建填报页 单击“保存”,返回应用设计页面。 在页面左下方,单击新建的填报页面(填报链接),单击“分享”,并填写上报信息。 在数据统计页面,可查看到填写的信息,返回再次提交一份,可以看到统计页面仅保留一份最新的记录。
  • 审批 在流程设计页面,单击,选择“审批”。 图3 审批 设置审批参数。 图4 基础设置 审批人:设置审批人,默认为流程发起人。单击“指定人员”,可指定特定的用户或者动态审批人(流程发起人或者从表单中指定某个引用字段)作为审批人。 勾选“审批后抄送结果”后,审批通过或拒绝,都会将结果反馈给抄送人。 审批方式(多人审批):选择多个审批人时,需要设置审批方式。 或签:只需要审批人中的某一个用户完成了审批,即可推动任务流程,走向下一个任务。 会签:所有审批人都同意后,才可推动任务流程,走向下一个任务。 审批标题:设置审批页面的标题。 节点按钮:设置审批通过或拒绝时的界面按钮显示名称,按钮显示名称支持多语言配置。 开启暂存功能后,在发起流程页面,单击“暂存”,可暂存表单中数据。 图5 字段权限设置 可见:是否可见,当需要给审批人隐藏表单某些字段时,设置为不可见。 可编辑:是否可编辑。 摘要:是否将表单中的字段,作为摘要进行展示。 图6 高级设置 审批设置 开启批量操作:开启后在批量处理时,将忽略必填内容(必填字段、审批意见)等操作,请谨慎使用。 拒绝后,允许回退到指定节点:从当前节点向上回溯,回到上一审批节点或流程发起节点。设置回退节点后,在我的待办审批任务时,支持批量拒绝任务。 节点限时处理:为节点设置截止时间,到期后触发自动处理。 节点限时处理:设置节点处理截至时间,支持自定义时间、指定日期时间和指定表单内日期时间字段。 自动提醒:是否开启自动提醒,默认为关闭。 在节点处理截至时间当时、之前或之后发送提醒。 提醒内容:输入提醒内容,如请及时处理待办任务。 被提醒人:默认为节点责任人。 自动提交:是否开启自动提交,默认为关闭。 开启后,可以设置在节点处理截至时间当时、之前或之后自动提交。
  • 身份认证 KooMessage 提供的身份认证可以分为控制台和云服务两个层面: 控制台层面 您可以使用华为云用户名与密码登录,实现用户的认证与鉴权,未授权的不能访问。 云服务层面 您可通过开放的API网关,实现智能信息、智能信息基础版(视频短信)、服务号等能力的访问和集成,具体操作和描述请参考KooMessage服务的《API参考》。 KooMessage调用接口支持Token认证鉴权,请参考认证鉴权。
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的IaaS、PaaS和SaaS类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。 华为云租户的安全责任在于对使用的IaaS、PaaS和SaaS类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、 虚拟主机 和访客虚拟机的操作系统,虚拟防火墙、API网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 功能 图1 智能信息服务号核心功能 核心功能 品牌认证及展示 实现对企业品牌、Logo多途径曝光及展示,可提升企业的社会认知度并加强客户的识别留存。 自定义菜单 通过主菜单、子菜单自定义服务营销入口,可实现: 直达服务页面。 直接拨打客服电话。 根据营销需求快速、灵活自定义菜单。 直达快应用/H5/MINI card营销活动、服务等页面。 自定义短信下挂按钮 通过短信下挂按钮,自定义营销入口,可实现: 根据营销需求快速、灵活自定义按钮。 跳转H5、Deeplink、快应用或MINI card推荐下载。 打开应用服务跳转 可跳转企业的公司官网、APP、快应用、H5页面、MINI card、快服务等应用。 企业主页展示 包含企业Logo、企业简介、服务营销菜单、客服通道、快应用入口。 多样化自定义营销入口 作为更丰富的自定义服务&营销入口,可实现: 快应用&快服务集约化入口。 直达核心服务或重点营销活动。 私域流量,自主经营。
  • 功能 图1 智能信息功能 核心功能 通过富媒体展示效果,可实现与用户应用交互、内容访问、信息查询、智能客服等实时互动。 支持视频、高清图片、文字等多种媒体元素;支持浏览器内置访问、LBS、APP、快应用、服务号、快捷支付等应用交互能力,有效帮助企业客户与用户实现智能、快速、精准的营销互动沟通与服务。 基于运营商短信和手机终端,将传统文本信息无缝升级为具备互动能力的多媒体智能信息,具备码号不变、展示丰富、交互多样、效果可视和高效触达等优点。 通过手机增强技术提供可交互的富媒体内容和素材,通过用户数据分析能力为不同消费者提供精准的个性化营销策略,并有效串联起企业数据分析及管理、营销策略制定、获客、销售转化、客户运营、营销效果分析等营销需求的完整实现链路,实现最终消费者的精准营销触达。 可选择叠加智能信息服务号(业界也称之为短信服务号),对于不支持智能信息解析的手机终端,可选择降级为智能信息基础版(业界也称之为视频短信)或普通短信触达用户。
  • 特点 支持市场主流各终端类型。 当前支持华为(含荣耀)、小米、OPPO、VIVO等540多种型号手机终端,共计7亿以上手机终端。 支持丰富的模板样式。 当前共支持20种以上的模板,分为营销类和通知类模板,适配多样化营销场景。 图2 智能信息模板示例 未来会扩展新的模板,支持更多的应用场景。 支持个性化动态参数设置。 通过智能信息模板动态参数,如文字、链接等动态参数,进行自定义个性化推送,帮助商家实现千人千面运营,并提升运营效果。 图3 动态参数模板示例 支持多样化交互方式。 支持卡片、按钮能力和便捷的交互方式,构建一键直达服务。10种交互方式可以有效缩短用户路径,实现意见直达客户。 图4 智能信息交互方式 支持多维度数据回传。 丰富的商家数据结构帮助实现精细化运营。 图5 智能信息数据维度及应用场景 支持商品提前曝光+一键跳转。有效缩短用户路径,实现点击率提升5-10倍。 图6 智能信息缩短用户路径
  • 优势 传统短信营销场景下,存在以下问题和挑战。 终端信息拦截 重度营销信息拦截严重,大量营销成为无效投入。 消息置信度差 用户担心链接含病毒或为诈骗链接,不点击,无法实现引流。 展示效果单一 用户对文字内容阅读兴趣度低,信息传达的价值点有限。 交互方式繁琐 链接只能跳转H5,不能直接跳转APP落地页,转化链路长转化率低。 智能信息为企业带来全新体验和营销升级,具备以下优势。 强触达 营销内容放到富媒体卡片,优化文本短信文案,消息到达率达95%。 强品牌 服务号Logo+品牌解析,突出品牌,增强信任。 强点击 富媒体卡片突出产品营销内容,点击率提升10倍。 强交互 卡片、按钮和底部菜单支持10种交互方式,按需快捷引流。 全可视 发送、渲染、曝光、点击全路径数据可视,支撑营销ROI优化。
  • 计费规则 用户开通KooMessage服务后,默认开通移动按需、电信按需、联通按需或三网按需。 用户创建模板时,在备注字段(remarks)中说明单运营商通道(特指移动、联通或电信)或三网通道。 华为云审核模板后,给出模板最终绑定的通道类型(和用户所在行业及经营内容、模板内容等相关)。 用户使用模板发送短信时,根据模板绑定的通道计费。 用户使用单通道发送短信时,不管用户是否购买三网套餐包,都按照单通道按需计费。 用户购买三网套餐包后,三网通道发送短信优先使用套餐包扣费。 用户使用三网套餐包和按需规格商品,商务条款在没有特别约定的情况下,默认需要满足移动号码占比不低于75%的条件,华为云会定期统计比例,移动号码低于该占比则华为云有权利追究违约罚款。 用户使用三网套餐包和三网按需规格商品,如果移动号码占比低于75%,可在合同中约定移动号码的占比比例及违约赔偿条款,并由华为云销售代表按照比例评估最终的价格。 具体价格详情,请参见:价格详情和价格计算器。
  • 计费方式 智能信息基础版按照发送成功的短信条数计费。 按照发送的通道划分为四种类型: 智能信息基础版(三网通道):三网通道发送短信,移动、联通、电信号码均可发送,要求移动号码发送量占比不低于75%。当前包含两种计费模式:按需计费和按需套餐包,优先扣除按需套餐包额度,超出部分按需计费。 智能信息基础版_移动(移动通道,单通道类型之一):移动单通道发送短信,支持移动号码发送,当前仅支持按需计费。 智能信息基础版_联通(联通通道,单通道类型之一):联通单通道发送短信,支持联通号码发送,当前仅支持按需计费。 智能信息基础版_电信(电信通道,单通道类型之一):电信单通道发送短信,支持电信号码发送,当前仅支持按需计费。
共100000条