华为云用户手册

  • 脚本启动 在脚本代码中,导入工作流的脚本库,通过下面脚本代码方式启动。 import * as bp from "bp";//......(其他代码)const client = bp.newInstanceClient(); client.start(工作流名称, 工作流版本号, 工作流中定义的变量); 脚本样例如下: import * as bp from 'bp';let client = bp.newInstanceClient();let res = client.start("test", "1.0.1", { "foo": 1, "bar": 3}); 输出样例如下: { "interviewId": "002N000000FdtN6xwgjI", "screen": { "allowBack": false, "allowFinish": true, "allowNext": true, "allowPause": false, "helpText": "", "label": "input phone number", "name": "inputphonenumber", "pausedText": "", "screenFields": [ { "dataType": "text", "defaultValue": "135xxxxxxxx", "fieldType": "InputField", "helpText": "", "isRequired": false, "label": "phone number", "name": "phoneNumber" } ] }
  • 在工作流设计页面启动工作流 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“流程”。 单击对应工作流后的,选择“编辑”。 在工作流设计页面,单击页面上方的,启动该工作流。 在工作流设计页面,可以通过如下两者方式启动。 自定义:将工作流的“开始”图元的开始类型设置为“自定义”启动,不指定事件的起因,即不需要指定触发条件,主要用于接口调用进行启动。 表单:使用表单或页面,启动工作流。选择该项时,需要配置具体的表单、标准页面或高级页面。
  • 接口启动 通过调用工作流的Rest接口“http://AstroZero对外提供的默认域名/u-route/baas/bp/v2.0”,进行启动。 接口URI:POST AstroZero域名/u-route/baas/bp/v2.0/runtime/instances 表1 请求参数 参数 是否必选 参数类型 描述 name 是 String 工作流的名称,在界面处创建工作流时配置的名称。 version 否 String 工作流版本号,为可选参数,因为一个工作流可以存在多个版本。如不带版本号表示运行当前启用的版本。 variables 否 Object 工作流元数据中定义的变量,包括自定义变量和系统变量, key-value形式,key为变量名字,value为变量的值。如果需要在启动工作流前设置工作流的变量,可以填写该参数。如需启动时设置变量,可以在variables中设置系统变量$Flow.BusinessKey;如需设置BP title,可以设置系统变量$Flow.Title。 表2 响应参数 参数 参数类型 描述 resCode String 返回码,如果返回“0”代表请求成功。 resMsg String 返回消息,如果成功状态,通常会返回“Success”,其他情况会返回具体的错误信息。 result Object 在成功请求时会有内容,返回启动工作流之后,工作流实例的运行信息。 例如,创建并启动了一个工作流,工作流名称为“createCloudOK_NEW”,版本号为“1.0.1”,带有4个启动参数。 请求示例 POST AstroZero域名/u-route/baas/bp/v2.0/runtime/instances { "name":"createCloudOK_NEW", "version":"1.0.1", "variables":{ "name":"sun", "memorySize":"15", "storageSize":"15", "expiryDate":"2018-12-12" }} 响应示例 { "resCode":"0", "resMsg":"Success", "result":{ "name":"bpName1", "version":"1.0.1", "id":"002N000000Sy2NphoRbU", "processDefID":"001L000000S8Yi3xG9Gi", "interviewLabel":"BP Label 1", "nextElem":"subProcess", "isTest":true, "state":"Dispatched", "bpStatus":"New", "urgency":0, "taskOutcome":"", "businessKey":"002N000000Sy2NphoRbU", "startTime":"2019-08-27 10:53:04", "endTime":"", "Ext1":"", "Ext2":"", "Ext3":"", "Ext4":"", "Ext5":"", "Ext6":"", "Ext7":0, "Ext8":0, "suspended":false, "isClosed":false }}
  • 在标准页面中与工作流交互 在标准页面的自定义事件中,内置了一些交互的API: 获取变量:context.$工作流.loadVariables(): Promise 提交任务、流程: context.$工作流.submitTask(variables: {[key: string]: any}): Promise 修改变量: context.$工作流.putVariables(variables: {[key: string]: any}): Promise 图2 在标准页面的事件代码中与工作流交互
  • 排他网关 排他网关用来在流程中,实现一组分支的唯一决策。系统将按照“条件顺序”评估流出网关的分支,流程会执行第一个连线条件被评估为true(当多个条件为true时,将执行第一个决策)的分支,并且不再继续评估下面的分支。如果所有分支条件决策都为false且该网关定义了一个默认的连线,那么该默认分支将被执行。如果没有可到达的分支,抛出异常,流程被中断,在工作流设计上应避免这种情况发生。 图1 排他网关配置页面 图2 分支连线配置
  • 工作流开发流程 创建一个工作流的主要流程,如图3所示。 图3 工作流开发流程 如下是开发工作流的主要步骤,可根据以下步骤快速开发工作流。如何创建一个端到端的工作流,请参见简易出差审批应用开发。 表2 开发工作流步骤 步骤序号 相关术语 描述 操作 1 创建工作流 新建:创建空白工作流。 导入既有:将同一租户或平台中已有的工作流以导入的方式创建工作流,方便用户快速继承已有工作流的配置,增加效率。 基于模板:系统预置了一些典型场景的工作流模板,可基于这些模板,快速创建工作流。目前系统内置的模板有以下几类: 通用:基础审批流、多步骤审批流和并行审批流。 HR:请假申请、出差申请、绩效管理、试用期确认和工作交接。 金融:贷款申请、ERP信用提升和商业计划申请。 项目:进度管理、版本管理和发布管理。 根据需要选择不同的方式,创建工作流。 若业务场景贴合已有模板,建议选择“基于模板”来快速创建工作流。快速创建后,只需要创建泳道中配置的工作队列即可使用工作流。 2 (可选)工作流的开始类型 工作流的开始类型,可以从“Star”开始图元下进行配置。开始种类包括如下两种: 自定义:默认为“自定义”,即不指定事件的起因,即不需要指定触发条件,主要用于接口调用进行启动。 表单:使用表单或页面启动工作流。选择该项时,需要配置具体的表单、标准页面或高级页面。 一般选择“自定义”,当工作流由表单或者页面启动时,选择“表单”类型。 选中“Star”开始图元,设置开始类型,一般选择“自定义”。当工作流由表单或者页面启动时,选择“表单”类型。 3 创建或配置工作流变量 创建对象或全局结构体。 在全局上下文中,根据实际情况进行创建。 4 定义泳道并选择图元 一条泳道代表工作流的流程处理中的一种用户角色。 工作流中每个泳道都和队列一一对应。处于不同泳道的图元,分别归属不同的队列中的用户去处理。当图元由系统处理时,泳道中不用配置队列。 工作流编辑器提供了一些图元,作为编排工作流使用。 在工作流开发页面,单击“Add Lane”,添加泳道。根据场景定义泳道。 根据逻辑设计,从工作流编辑器面板区域,拖拽相应类型下的图元至画布中。 5 配置图元 在泳道中,选中图元后,即可根据需要在右侧属性配置区,进行配置。 可以根据需要选择图元,进行配置。 如果使用了“规则”图元,需要提前创建好决策表。 如果使用了“用户任务”图元,且任务界面要用到标准表单,建议提前创建好标准表单。 6 连接图元并指定图元的逻辑关系 根据实际业务场景,需要确定工作流中用到的图元和逻辑顺序。根据逻辑实现,需要在拖入并配置好所有图元后,将图元按照逻辑顺序有序的连接起来。在执行工作流时,系统会根据连线顺序有序执行图元任务,从而实现整个流程运转。 根据逻辑设计有序连接各图元。 7 (可选)配置运行态界面布局 在配置完整个工作流图元及流程后,还可根据需要选择性的配置工作流运行态界面布局。 -
  • 初识工作流 在新版应用设计器中,单击左侧导航栏中的“流程”。单击“工作流”后面的“+”,设置工作流的标签和名称后,单击“添加”,即可进入工作流设计界面。 图1 添加工作流 工作流设计界面由上方按钮区域、左侧面板图元区域、中间画布工作区域和右侧属性配置区域四部分组成。 图2 工作流设计界面 表1 工作流设计界面说明 序号 分类 功能说明 1 按钮区域 功能按钮区域,包括启用(或者禁用)、保存、另存为新版本或者新工作流、运行、操作回退、撤销回退、启用流跟踪器以及切换版本的操作。支持快捷键操作,即可脱离鼠标直接用键盘操作。 2 面板图元区域 工作流的组成图元,详细介绍请参见工作流图元。 3 画布工作区域 工作流设计操作区域,在该区域可对工作流进行具体流程设计、组件放置。 选中图元或者泳道按“Delete”,可进行删除操作。 4 属性配置区域 整个工作流、泳道(Lane)或图元属性设置区域。 当选择工作流中图元时,右侧配置区域为该图元的属性设置区域。 当选择工作流中空白区域时,右侧配置区域为该工作流的设置区域。 当选择泳道左侧标签时,右侧配置区域为该泳道的属性设置区域。
  • 背景信息 根据图元的不同使用场景,工作流图元可以分为以下三类: 事件(Events):驱动流程流转的事件图元,用来表明工作流的生命周期中发生的事件,例如开始、捕获信号等。 网关(Gateways):根据条件,分发的网关图元。网关用来控制流程的执行流向,可理解为决策、判断。 活动(Activities):提供用户交互或系统调用的图元,是工作流的核心图元,可理解为节点或步骤,例如调用脚本、用户需要做的任务。 图1 工作流组成图元
  • 抛出信号 当工作流执行到达“抛出信号”事件时,引擎向系统内部发出一个事件,事件发出后流程沿后续路线继续执行。抛出的信号,可以被“捕获信号”订阅处理。 使用该图元时,需要配置抛出的具体事件,并需要在“输入参数”配置事件参数。 图3 抛出信号的“事件配置”页面 事件:请选择待发送的事件。 分区字段:从事件中选择一个自定义参数用作分区字段,根据该字段值进行路由,相同的值将路由到同一个分区。如果不指定,则默认随机路由到不同分区,从而提升并发处理性能。 目标/源:配置事件的数据,即为事件自定义参数赋值,将“源”取值赋值到“目标”中。
  • 规则6:SELECT语句中聚集函数必须增加别名 SELECT语句中,聚合函数必须使用别名方式存储查询结果,以免因聚合函数返回的结果不一致,导致存在兼容性问题。 错误代码示例 import * as db from 'db';let errorDemo = db.sql().exec("select count(*) from object_demo where object_name = 'HuaWei'") 正确代码示例 import * as db from 'db';let correctDemo = db.sql().exec("select count(*) as count from object_demo where object_name = 'HuaWei'") 推荐代码示例 ***聚合函数示例 ****select count(*) as count_res,select max(*) as max_res,select min(*) as min_res,select avg(*) as avg_res,select sum(*) as sum_res
  • 规则7:SELECT语句中严禁使用“select from...”形式查询语句 严禁使用“select ...”形式查询语句,请指出select的具体字段。 错误代码示例 import * as db from 'db';let errorDemo = db.sql().exec("select from object_demo where object_name = 'test'") 正确代码示例 import * as db from 'db';let correctDemo = db.sql().exec("select id, object_type from object_demo where object_name = 'test'")
  • 创建定时任务 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在“开始”页面,单击“新建定时任务”。 图1 新建定时任务 配置定时任务,单击“保存”。 例如,创建一个定时任务“OfferingOffline”,用于实现从2021-11-25开始,每天零点自动将过期商品下架。其中,将过期商品下架的功能由“OfferingOffline”脚本实现。在创建定时任务之前,需要先开发实现定时任务功能的脚本。如何开发脚本,请参见脚本开发。 图2 配置定时任务 表1 定时任务参数说明 参数 说明 名称 定时任务名称。 例如:OfferingOffline 类型 选择定时任务执行的类型,支持脚本或服务编排。 例如:脚本 服务编排/脚本 选择定时任务执行的脚本或服务编排。 例如:选择已启用的脚本“OfferingOffline”。 输入参数 输入脚本或服务编排的输入参数。 任务首次执行时间 首次执行脚本或服务编排的时间。 例如:2021-11-25 00:00:00 执行次数 定时任务执行次数。 仅执行一次。 按设置的频率执行多次。 例如:按设置的频率执行多次 执行周期 “执行次数”配置为“按设置的频率执行多次”时,需要设置。 例如:1 执行周期单位 “执行次数”配置为“按设置的频率执行多次”时,需要设置执行任务时间的间隔单位。 例如:天 描述 定时任务的描述信息,建议描述其用途。
  • 规则8:SELECT语句中拼接的参数值请谨慎使用入参变量 SELECT语句中,拼接的参数值请谨慎使用入参变量,以免引起SQL注入的风险。 错误代码示例 import * as db from 'db';let errorDemo = "select id,name from object_demo where id = ";errorDemo += input.parameter let errorDemoResult = db.sql().exec(errorDemo) 其中,“input.parameter”为脚本入参。 正确代码示例 import * as db from 'db';let correctDemo = "select id,name from object_demo where id = ?";let correctDemoResult = db.sql().exec(correctDemo, { params: [input.parameter] }) 其中,“input.parameter”为脚本入参。
  • 规则10:SELECT语句中谨慎使用order by SELECT语句中,请谨慎使用order by。如果需要使用order by,请为排序字段增加索引,以提高查询效率。如果无法增加索引,需要关注是否存在查询性能低下的风险。 错误代码示例 import * as db from 'db';let errorDemo = db.sql().exec("select object_name from object_demo where object_id = 'HuaWei' Orde by createdDate") 表“object_demo”中的“createdDate”,并没有创建索引。 正确代码示例 import * as db from 'db';let correctDemo = db.sql().exec("select object_name from object_demo where id = 'HuaWei' Order by createdDate") “object_demo”中的“createdDate”,创建了索引。
  • 规则4:SELECT语句中查询字段不在表的索引库中 如果SELECT语句where条件中,查询字段并未创建索引,请判断该字段是否需要创建索引,以提高代码查询效率。 错误代码示例 import * as db from 'db';let errorDemo = db.sql().exec("select object_name from object_demo where object_id = ?") 表“object_demo”中的“object_id”并没有创建索引。 正确代码示例 import * as db from 'db';let correctDemo = db.sql().exec("select object_name from object_demo where id = ?") 表“object_demo”中的“id”创建了索引。
  • 场景说明 根据对象的数据,生成资源列表数据,用于前台数据呈现,启用本脚本后,可实现数据导入模板使用。 创建脚本前,需要先创建脚本中操作的对象ApprovedResource,其字段如表1所示。 表1 对象说明 字段标签 字段名称 字段类型 取值 读写权限 含义 ownerId ownerId 文本 长度:255 全选 资源拥有者ID ResourceName ResourceName 文本 长度:255 全选 资源名称 Type Type 选项列表 枚举值如下: File Folder 全选 资源类型 SubmitDate SubmitDate 日期/时间 不涉及 全选 资源提交时间 ApproveDate ApproveDate 日期/时间 不涉及 全选 资源审批时间 Status Status 选项列表 枚举值如下: Waiting Submitted Approved 全选 审批状态
  • 编辑脚本 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“逻辑”。 单击脚本后的,选择“编辑”,进入脚本详情页面。 单击对应参数后的,可编辑该参数。 表1 脚本参数说明 参数 参数说明 单击该按钮,可进入脚本的编辑器页签。 如果脚本有多个版本,则进入处于启用状态的脚本编辑器页面。 如果多个版本都未启用,则进入最近版本的脚本编辑器页面。 名称 脚本的名称,在创建脚本时配置的名称。 是否启用 脚本是否已启用。 勾选:表示已启用。 不勾选:表示禁用。 归属APP 该脚本属于哪个应用。 版本 脚本的版本号。 方法名 脚本的方法名。 可见性 脚本是否可见。 允许覆盖 控制该资源是否可以被定制为新版本,或者是否可以被Addon应用导入,若已存在于Addon应用中,是否允许被另存为新版本。 默认允许,当配置为不允许时,说明如下: 在该应用中基于该资源定制新版本时,会报错“XXX不允许定制新版本,请检查基本属性并确认该资产是否允许覆盖”。 Addon应用里不允许导入该资源。 如果已导入到Addon应用中,无法定制新版本。 描述 脚本的描述信息,建议设置为脚本的作用。 创建人 脚本创建人。 创建时间 脚本创建时间。 最近修改人 最近一次修改脚本的用户名。 最后修改时间 最近一次修改脚本的时间。 输入参数 显示脚本的输入参数,包括参数名、参数类型、是否为集合和描述信息。 如果脚本有多个版本,则显示处于启用状态脚本的参数。 如果多个版本都未启用,则显示最近版本脚本的参数。 输出参数 显示脚本的输出参数,包括参数名、参数类型、是否为集合和描述信息。 如果脚本有多个版本,则显示处于启用状态脚本的参数。 如果多个版本都未启用,则显示最近版本脚本的参数。 版本 显示脚本的所有版本。
  • 操作步骤 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“逻辑”。 单击编排后的,进入添加服务编排页面。 按照下图,创建服务编排GetResourveListFlow,单击“添加”。 图1 创建服务编排 创建该服务编排的入参和出参变量。 由于该服务编排封装的是“ResourceListScript”脚本,所以该服务编排的入参和出参的字段类型和字段名与“ResourceListScript”脚本保持一致。 表5 服务编排变量 变量类型 参数名 Data Type Input/Output Type 普通变量Variable ownerId text Input Only limit number Input Only offset number Input Only totalCount number Output Only 结构体变量Struct resource struct Output Only 在服务编排设计页面右侧,选择,在私有结构体页面单击“新增”。 创建输出参数结构体类型变量“resource”前,首先需要创建私有结构体类型。 图2 添加私有结构体类型 设置页面参数。 在“基本信息”中,输入结构体名字、描述信息。 在“结构体成员”中,设置自定义成员变量,包括设置成员变量的名称、数据类型、是否必填、是否是集合、描述信息等。单击“新增”,可增加成员变量。成员变量需要和“ResourceListScript”脚本中定义的出参“resource”成员变量(参见表4)保持一致。 创建私有结构体后,即可创建私有结构体变量。 图3 配置私有结构体 在服务编排设计页面右侧,选择,在全局上下文页面,单击“对象变量”后的。 图4 单击对象变量后的加号 选择“私有结构体”,设置页面参数。 图5 配置私有结构体变量 表6 私有结构体变量参数说明 参数 参数说明 名称 结构体的变量名称,与“ResourceListScript”脚本中定义的出参命名保持一致。 本示例设置为resource。 私有结构体 结构体变量类型。 本示例选择刚创建的结构体类型名称“resourcestruct”。 默认值 变量的默认取值。 本示例不用配置。 描述 变量的描述说明,建议设置为该变量的作用。 是否为数组 是否为数组型变量,即集合变量。 本示例请勾选。 在服务编排设计页面右侧,选择,在全局上下文页面,单击“变量”后的。 单击新增变量后的“...”,选择“设置”。 图6 设置变量 配置普通变量“ownerId”。 图7 配置变量 表7 普通变量参数说明 参数 参数说明 名称 新建变量的名称。 本示例设置为ownerId。 数据类型 变量的数据类型。 默认值 变量的默认取值。 本示例不用配置。 描述 新增变量的描述说明,建议设置为变量的作用。 是否为数组 是否为数组型变量即集合变量。 本示例不用勾选。 参考上述操作,创建表5中其他普通变量。 在服务编排设计页面右侧,选择,按照表5从全局上下文页面中拖拽参数到相应的入参和出参区域,设置服务编排的入参和出参。 图8 设置服务编排的入参和出参 拖拽“基本”下的“脚本”图元至画布中。 单击,如图9所示,设置页面参数。 将服务编排中的变量赋值给脚本中的输入参数,脚本中的输出参数赋值给服务编排中的变量。 图9 配置脚本 表8 脚本配置参数说明 参数 参数说明 脚本 调用的脚本名称,选择“命名空间_ResourceListScript”。 只有在启用状态下同一应用工程内的脚本,才能被服务编排调用。 输入参数/目标 脚本的输入参数名称,直接在下拉框中选择。 输入参数/源 服务编排中的变量,为目标赋值。 请从“全局上下文”中,拖拽之前创建的服务编排输入变量。 输出参数/源 脚本的输出参数名称,直接在下拉框中选择。 输出参数/目标 服务编排中的变量,脚本中的输出参数赋值给服务编排中的变量,请从“全局上下文”中拖拽之前创建的服务编排输出变量。 若有多个输入参数或输出参数,请单击“新增行”,进行添加。 连接所有元素。 单击页面上方的,保存服务编排。
  • 调试过程 单击页面上方的,输入参数后单击“运行”,运行服务编排。 在“输入参数”中,输入如下参数: { "ownerId":"123", "limit":3, "offset":1} 检查输出页签的结果,是否符合预期。 输出如下: { "interviewId": "002N000000P4ApgMJOM4", "outputs": { "resource": [ { "ownerId": "123", "resourceName": "Folder01", "status": "Waiting", "type": "Folder" }, { "ownerId": "123", "resourceName": "File02", "status": "Waiting", "type": "File" }, { "ownerId": "123", "resourceName": "Folder02", "status": "Waiting", "type": "Folder" } ], "totalCount": 100 }} 单击服务编排设计页面右上方的“跟踪”,打开“日志跟踪器”页面。 在“日志跟踪器”页面中,可查看服务编排执行的每一步的详细信息。 图10 查看跟踪日志 单击页面上方的,启用服务编排。
  • 前提条件 已创建名为“Approved Resource”的Object,用于存储资源数据,该对象中需要包含如下字段。 表2 Approved Resource对象说明 字段标签 字段名称(系统自动生成) 字段类型 取值 读写权限 是否加入界面布局 含义 ownerId ownerId__ CS T 文本 长度:255 全选 不勾选 资源拥有者ID ResourceName ResourceName__CST 文本 长度:255 全选 不勾选 资源名称 Type Type__CST 选项列表 枚举值如下: File Folder 全选 不勾选 资源类型 SubmitDate SubmitDate__CST 日期/时间 不涉及 全选 不勾选 资源提交时间 ApproveDate ApproveDate__CST 日期/时间 不涉及 全选 不勾选 资源审批时间 Status Status__CST 选项列表 枚举值如下: Waiting Submitted Approved 全选 不勾选 审批状态 已创建场景描述中的脚本。该脚本根据对象的数据生成资源列表数据,用于前台数据呈现。示例脚本为“ResourceListScript.zip”,单击下载链接可获取该脚本包。该脚本中定义的入参和出参说明,如表3和表4所示。 表3 入参说明 参数 参数类型 说明 ownerId string 资源拥有者ID。 limit number 每页展示的资源条数。 offset number 每页展示第一条资源的偏移量,即从offset+1条资源开始展示。 表4 出参说明 参数 参数类型 说明 resource struct 返回资源数组集合。 approveDate:审批时间,若该记录已审批则返回审批时间。 ownerId:资源拥有者ID。 resourceName:资源名称。 status:资源状态。 Waiting:记录未提交。 Submitted:记录已提交未审批。 Approved:记录已审批。 submitDate:资源提交时间。 type:资源类型。 totalCount number 资源总数(固定100)。
  • 使用说明 在如下两个场景,可以基于已有脚本,创建新脚本: 场景1:在已有脚本基础上新建版本。 因业务需要,脚本要实现的能力变化,此时可以基于原有脚本修改,并保存为脚本的新版本。在此场景下,原有脚本作为老版本自动失效。 场景2:在已有脚本基础上新建脚本。 需要开发的新脚本与已有的某个脚本类似,此时可以基于原有脚本修改,再保存为新的脚本名称。在此场景下,原有脚本仍然有效。新脚本和老脚本也没有关联关系,各自独立。
  • 创建空白脚本 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“逻辑”。 单击脚本后的,进入新增脚本页面。 选择“创建一个新脚本”,设置脚本名称(如httpTest),单击“添加”,进入脚本编辑器页面。 图1 新增httpTest脚本 在脚本编辑器中,将以下脚本代码粘贴到代码编辑区。 import * as http from 'http' // 导入http库let client = http.newClient() // 实例化let resp = client.get("https://www.huawei.com/")// 请求网址console.log(resp.headers) // 打印返回headers 单击页面上方的,保存脚本。 运行测试脚本。 单击编辑器上方的,执行脚本。 在页面底部单击测试窗口右上角的,返回消息头信息。 { Age: [ '10309' ], Cache-Control: [ 'no-store' ], Content-Type: [ 'text/html; charset=utf-8' ], Date: [ 'Thu, 01 Dec 2022 03:41:39 GMT' ], Expires: [ 'Wed, 30 Nov 2022 22:01:57 GMT' ], Pragma: [ 'no-cache' ], Processtime: [ '0.049' ], Server: [ 'PAAS-WEB' ], Set-Cookie: [ 'HMF_CI=596020aa4dbe4b6***42343ba04a; Expires=Sat, 31-Dec-22 03:41:39 GMT; Path=/' ], Strict-Transport-Security: [ 'max-age=31536000' ], Ws-S2h-Acc-Level: [ '1' ], X-Content-Type-Options: [ 'nosniff' ], X-Download-Options: [ 'noopen' ], X-Frame-Options: [ 'SAMEORIGIN' ], X-Powered-By: [ 'ASP.NET' ], X-Via: [ '1.1 PSjsczsxga60:2 (Cdn Cache Server V2.0), 1.1 uzhoudianxin101:13 (Cdn Cache Server V2.0), 1.1 wdx18:10 (Cdn Cache Server V2.0)' ], X-Ws-Request-Id: [ '63882273_wdx18_41265-37840' ], X-Xss-Protection: [ '1; mode=block' ] } 以上步骤已完成了一个简单脚本的编写,如果后续其他脚本、服务编排、编译打包等需要继续使用该脚本,则必须单击页面上方的,启用该脚本。如果未启用,其他组件无法查询到该脚本,查询时会报错该脚本不存在或未启用。 后续在新版本功能中如果需要更新该脚本,可单击编辑器上方的,选择“新建版本”,在新建的版本中更改脚本并保存、测试及启用。单击编辑器上方的,选择对比版本,可将当前版本与历史版本进行比对。
  • 调试服务编排 在服务编排设计器中,选中需要设置断点的图元,单击鼠标右键选择“设置断点”。 设置断点后,选中图元,单击鼠标右键选择“禁用断点”或者“移除断点”,可禁用或移除断点。 目前不支持在等待Wait图元及等待图元之后的所有图元,设置断点。 图3 设置断点 单击服务编排设计器上方的,开始调试服务编排。 在弹出的输入参数页面进行配置,单击“运行”。 如果有输入参数,请输入入参,再单击“运行”。如果该服务编排没有输入参数,请直接单击“运行”。 在服务编排编辑器左侧,可看到调试页面,单击,可执行到下一断点,单击,可停止调试,查看执行到某一断点的参数变化是否符合预期。 图4 调试页面 左侧调试页面参数说明: 变量:展示执行到当前断点,服务编排中的变量取值情况,包括全局变量、某图元的输入输出变量等。 调用堆栈:执行到当前断点时,出现的调用堆栈。 正在调试:正在调试的服务编排名。当执行到子服务编排时,该处显示当前子服务编排名。 断点:展示设置的所有断点,选中某一断点,单击鼠标右键可出现“移除断点”、“移除所有断点”、“启用所有断点”或“禁用所有断点”。也可以单击该区域某一断点,进行启用或禁用该断点。 单击服务编排设计器页面右上方的“跟踪”,打开“跟踪器”页面。 在弹出的页面,可查看服务编排执行的每一步的详细信息。 图5 查看详情信息 关闭跟踪器页签,单击,至执行完最后一个断点,调试结束。 重新设计问题图元及前后逻辑,再次运行服务编排,直至结果符合预期。 单击服务编排设计器页面上方的,启用服务编排。 调试服务编排符合预期后,需要启用服务编排。启用后,服务编排才能在系统中使用。
  • 运行服务编排 在服务编排设计器中,单击页面上方的,保存服务编排。 保存后,系统会对服务编排进行编译。如果有报错或者警告,请单击“确定”,在服务编排编辑器页面修改服务编排。修改后再次保存,直至无报错和警告。 保存成功后,单击页面上方的,运行服务编排。 在弹出的输入参数页面进行配置,单击“运行”。 如果有输入参数,请输入参数后,再单击“运行”。如果该服务编排没有输入参数,可直接单击“运行”。 表1 基本信息参数说明 参数 参数说明 请求头参数 请求消息头的参数配置,“键”为参数名,“值”为参数取值。 单击“请求头参数”前的,会显示映射区域“键”和“值”。若需要多个请求头参数,请单击“添加行”。 responseType('arraybuffer') 表示返回响应的类型。勾选时,表示返回响应是一个包含二进制数据的JavaScript ArrayBuffer。 输入参数 填写该服务编排运行实例的输入参数及取值。 检查输出页签的调试结果,是否符合预期。 图1 调试结果 表2 输出页签 调试结果 取值 查看日志 单击该按钮,可弹出“日志跟踪器”,显示该服务编排实例的运行日志。 结果 调试结果。 成功 '参数名'的值'%!v(BADINDEX)'无效或格式非法 输出 该服务编排的输出内容,检查输出是否和预期一致。 若输出结果符合预期,单击服务编排设计器页面上方的,启用服务编排。 若发现输出结果不符合预期,单击服务编排设计器页面右上方的“跟踪”,打开“跟踪器”页面,查看详细信息。 在“跟踪器”页面,查看服务编排执行的每一步的详细信息。检查哪一步的输出不符合预期,并按照调试服务编排进行调试。 图2 日志跟踪器
  • 如何使用等待图元 在逻辑中,拖拽“等待”图元至画布中。 选中等待图元,单击,设置基本信息。 表1 基本信息参数说明 参数 参数说明 标签 图元的标签,用于在页面展示。系统会自动填入该值,格式为Wait序号,序号从“0”开始,表示同类型图元序号。 名称 该图元的标识,请确保在当前服务编排中唯一。 描述 该图元的描述信息。 单击,在“等待”页面进行配置。 图1 Wait配置及Pass分支条件配置 图2 Unpass分支条件配置 图3 Timeout分支条件配置 表2 条件分支配置参数说明 参数 参数说明 可编辑的事件 所有的判断条件。 可通过单击“新增”,来增加判断条件分支。 默认:默认输出,当其他所有条件均不满足情况下,进入该分支。 例如,新增如下三个判断条件: Pass:应聘者被录用。应聘通过时,Boolean类型参数“result”赋值为全局常量“{!$GlobalConstant.True}”,表示结果为真,即应聘通过。 Unpass:应聘者没有被录用。应聘失败时,Boolean类型参数“result”赋值为全局常量“{!$GlobalConstant.False}”,表示结果为假,即应聘拒绝。 Timeout:超时事件。基于该服务编排执行时间,超时30分钟未返回是否录用。 事件/时间 当订阅的是自定义事件时,需要选择“事件”。 当订阅的是系统预置的标准事件“Absolute Time Alert”,即定时器发送的系统事件时,需要选择“时间”。 本示例中,需要配置如下: Pass:请选择“事件”。 Unpass:请选择“事件”。 Timeout:请选择“时间”。 事件 请选择需要订阅的事件,当订阅的是自定义事件时,该参数才会显示。 事件条件 该分支的条件。单击“新增行”,可进行添加。当订阅的是自定义事件时,该参数才会显示。 分支条件中的字段,为创建该事件时设置的自定义参数,值可从右侧全局上下文中选择拖入。 定义需要满足的其他条件 勾选“定义需要满足的其他条件”后,可根据事件变量外的其他变量设置追加条件。 可视 勾选“定义需要满足的其他条件”后,该参数才会显示。当选择“可视”时,可配置追加条件的判断条件。单击“新增”,可新增判断条件。条件显示为“资源”、“比较符”、“值”。 默认选择“可视”。 公式 勾选“定义需要满足的其他条件”后,该参数才会显示。可采用公式设置追加条件。 选择连接条件 当选择“可视”并设置多条判断条件时,需要设置选择连接条件“或”或者“且”。 或:表示满足多条判断条件的其中一条,便可进入该分支。 且:表示必须同时满足多条判断条件,才可进入该分支。 输出 如果需要在服务编排中,使用事件的参数,将其参数赋值到事件变量中方便服务编排引用。 当订阅的是自定义事件时,该参数才会显示。 默认不需要。 基准 基准时间。当订阅的是系统预置的定时器发送事件时,该参数才会显示。 可从全局上下文拖拽日期/时间类型变量,也可设置为某个具体时间,或者设置为本服务编排执行时间。 例如,在本节中设置为本服务编排执行时间,即{!$Flow.CurrentDateTime}。 偏移时间 偏移时间,例如“30”。当订阅的是系统预置的定时器发送事件时,该参数才会显示。
  • 添加目录 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“逻辑”。 在右侧的编排中,可查看该应用拥有或依赖的所有服务编排。 图1 查看服务编排 单击编排后的,进入添加目录页面。 设置目录名称,单击“保存”。 目录创建后,您可以执行如下操作。 单击目录后的,可新建服务编排。 单击目录后的,可新建子目录。目录创建后,可直接拖拽服务编排到目录中。 单击后,选择“编辑”,可修改目录名称。 单击后,选择“移动”,可移动页面、数据、逻辑、流程等到其他应用。 单击后,选择“删除”,可删除目录。删除目录前,请确保当前目录为空。
  • 如何使用BO图元 在BO中,拖拽所需的BO图元至画布中。 选中BO图元,单击,设置基本信息。 表1 基本信息参数说明 参数 参数说明 标签 图元的标签,用于在页面展示。系统会自动填入该值,格式为BO名序号,序号从“0”开始,表示同类型图元序号。 名称 该图元的标识,请确保在当前服务编排中唯一。 描述 该图元的描述信息。 单击,在“BO”页面进行配置。 图1 配置BO图元 表2 BO图元配置参数说明 参数 参数说明 服务版本 BO中自定义API的版本号。 API类型 API类型。 操作方法 BO中已自定义好的API接口,该API接口类型必须是“服务编排”,才可在服务编排中调用。 入参/目标 当选择具体操作方法(API)后,API的输入参数将会显示在入参的目标列。 入参/源 服务编排中的变量,需要和目标的参数类型保持一致。该源会将服务编排中的变量,赋值给调用API的输入参数。 出参/源 当选择具体操作方法(API)后,API的输入参数将会显示在出参的源列。 出参/目标 服务编排中的变量,需要和输出参数的类型保持一致。API中的输出参数赋值给服务编排中的变量,供服务编排使用。
  • 如何使用赋值图元 在逻辑中,拖拽“赋值”图元至画布中。 选中赋值图元,单击,设置基本信息。 表1 基本信息参数说明 参数 参数说明 标签 图元的名称,用于在页面展示。系统会自动填入该值,格式为Assignment序号,序号从“0”开始,表示同类型图元序号。 名称 该图元的标识,请确保在当前服务编排中唯一。 描述 该图元的描述信息。 单击,在“赋值”页面进行配置。 图1 配置赋值图元 表2 赋值图元配置参数说明 参数 参数说明 变量 可以是任意变量,例如普通变量、结构体变量、系统变量等。 操作符 操作符,目前支持普通赋值(=),变量追加(+=)与变量相减(-=)。 值 可以是普通变量、结构体变量、系统变量,也可以新建变量获取值,或根据类型填写常量。 常量填写提示: 文本类型,需要用双引号括起来,例如"abc"、"He said Hi."。 数字和货币类型,支持带符号、小数点的合法数字表达形式,例如123.5、 -12、12.3。 日期类型格式为YYYY-MM-DD,例如2020-10-01。 日期时间类型格式为YYYY-MM-DD hh:mm:ss,例如2020-10-01 12:00:00。 布尔类型,只能是true或false。 任意类型,支持所有基本类型的格式。
  • 如何使用Native服务图元 在Native服务中,拖拽所需的Native服务图元至画布中。 选中Native服务图元,单击,设置基本信息。 表1 基本信息参数说明 参数 参数说明 标签 图元的标签,用于在页面展示。系统会自动填入该值,格式为原生服务名+序号。序号从“0”开始,表示同类型图元序号。 名称 图元的标识,请确保在当前服务编排中唯一。 描述 图元的描述信息。 单击,在“Native服务”页面进行配置。 图1 配置Native服务图元 表2 Native服务图元配置参数说明 参数 参数说明 操作方法 原生服务中已自定义好的API接口。 入参/目标 当选择具体操作方法(API)后,API的输入参数将会显示在入参的目标列。 入参/源 服务编排中的变量,需要和目标的参数类型保持一致。该源会将服务编排中的变量,赋值给调用API的输入参数。 出参/源 当选择具体操作方法(API)后,API的输入参数将会显示在出参的源列。 出参/目标 服务编排中的变量,需要和输出参数的类型保持一致。将API中的输出参数赋值给服务编排中的变量,供服务编排中使用。
  • 如何使用决策图元 在逻辑中,拖拽“决策”图元至画布中。 选中决策图元,单击,设置基本信息。 表1 基本信息参数说明 参数 参数说明 标签 图元的标签,用于在页面展示。系统会自动填入该值,格式为Decision序号,序号从“0”开始,表示同类型图元序号。 名称 该图元的标识,请确保在当前服务编排中唯一。 描述 该图元的描述信息。 单击,在“决策”页面进行配置。 图1 配置决策图元 表2 决策图元配置参数说明 参数 参数说明 可编辑的结果 所有的判断条件。 可通过单击“新增”,新增判断条件分支,界面右侧区域配置分支条件。 默认:默认输出,当其他所有条件均不满足情况下,进入该分支。 可视 当选择“可视”时,可配置分支的判断条件。单击“新增”,可新增判断条件,条件显示为“资源”、“比较符”、“值”。 资源:从全局上下文拖拽变量或者直接输入“{!变量名}”。 比较符:从下拉框中选择。 值:从全局上下文拖拽变量或者直接输入“{!变量名}”,也可以是常量。 公式 可采用公式设置该分支条件。 公式中的变量,可从全局上下文拖拽变量或者直接输入变量。 选择连接条件 当选择“可视”并设置多条判断条件时,需要设置选择连接条件“或”或者“且”。 或:表示满足多条判断条件的其中一条,便可进入该分支。 且:表示必须同时满足多条判断条件,才可进入该分支。
共100000条