华为云用户手册

  • 跳出循环图元参数配置 选中拖拽到画布中的跳出循环图元,单击,在“基本信息”页面进行配置。 表1 基本信息参数说明 参数名 参数说明 如何配置 标签 仅用于展示。系统会自动填入该值,格式为Flow序号。序号从“0”开始,表示同类型图元序号。 系统自动填充。 名称 该图元的标识,请确保在当前服务编排中唯一。 系统自动填充。 描述 该图元的描述信息。 选填项,建议填写图元的作用。 单击,在“跳出循环”页面的“循环”下拉框中选择当前服务编排中需要中断的循环。 图2 配置跳出循环图元
  • 如何查多条数据 可通过配置记录查询图元,输出对象的多行数据列表。 例如,应用中已创建设备对象“CNAME1__Equipment__ CS T”,且已有如下两条数据记录,通过在服务编排中配置记录查询图元,查询出该对象数据记录中所有的设备名称。实现步骤如下: 先创建服务编排。 在应用开发工作台,将光标放在“Logic”目录上,目录右侧显示操作图标,单击“+”,在弹窗菜单中,选择“服务编排”,弹出创建服务编排对话框。 在对话框中,输入服务编排的“标签”为“queryEquipment”,单击“标签”的输入框后,系统将自动生成名称为“queryEquipment”,再单击“添加”。 图4 添加服务编排 表4 服务编排基本信息 参数名 参数说明 本示例需要填写的值 创建一个新的服务编排 创建一个新的服务编排流程。 保持默认,选中“创建一个新的服务编排”。 使用已有的服务编排 基于已有的服务编排创建。方便用户快速继承已有服务编排的配置,增加效率。 不设置。 标签 服务编排用于展示的名称。 queryEquipment 名称 服务编排在系统内的唯一标识。 系统会自动在该名称前添加命名空间__。当其他功能调用服务编排时,调用的是服务编排的“名称”,而不是标签。 创建之后不支持修改。 queryEquipment 说明: 实际创建的服务编排名为:CNAME1__queryEquipment 类型 服务编排的类型。 Autolaunched Flow:自启动Flow,在接口调用后会立即执行服务编排模型定义的逻辑。 Event Trigger:事件触发的服务编排,则会在事件触发时才会开始执行服务编排模型定义的逻辑。当选择该类型时,您需要配置具体的事件以及条件规则。 保持默认类型:Autolaunched Flow 定义服务编排的变量。由于本任务需要查询出对象的多行数据列表,您需要先创建对象类型的数组型变量,用于进行输出。 在服务编排编辑器页面右侧选择。在全局上下文页面单击“对象变量”后的加号。 设置对象变量,保持默认“记录”类型,设置参数名称为“Equipment”(您也可自定义为其他名称),对象中选择要查询的具体对象“CNAME1__Equipment__CST”,勾选“数组”表示该变量为数组型变量即集合变量,单击“保存”。 新增并配置记录查询图元。 从左侧图元列表中,拖拽“基本”下“记录查询”图标至画布中,松开鼠标左键。 该图元用于根据条件查询对象记录。 选中记录查询图元,单击,如下图所示配置该图元。 表5 普通类型记录查询参数说明 参数名 参数说明 如何配置 对象 查询的具体对象名。 从下拉框中选择对象“CNAME1__Equipment__CST”。 剔重 若查询记录有重复值,是否需要删掉重复记录只保留一条记录。 默认不勾选,表示不删掉重复记录。 保持默认。 条件 单击“新增行”,可设置查询数据的条件。 保持默认。 (排序)排序字段/顺序 将查询结果根据某个字段可进行升序或者降序排序。 保持默认。 记录行的偏移量 分页,跳过前n条记录,从第n+1条记录开始。 从全局上下文拖拽数值变量或者直接输入“{!数值变量名}”,也可以是常量。 保持默认。 记录行的最大数目 分页,每页最多显示的记录数。 从全局上下文拖拽数值变量或者直接输入“{!数值变量名}”,也可以是常量。 保持默认。 记录行的总数 限定查询出来的总记录数。 从全局上下文拖拽数值变量或者直接输入“{!数值变量名}”,也可以是常量。 保持默认。 (输出)源/目标 输出结果。单击“新增行”进行添加。 “源”为需要查询的字段,查询结果需要保存到设置的变量中,“目标”为设置的变量。 单击“新增行”进行添加。“源”配置为需要查询的设备名称字段“name”,可从下拉框中选择,“目标”从全局上下文拖拽对象变量的“name”字段,拖拽后,“目标”取值为“Equipment[0].name”。 无记录时配置空值 当根据条件查询无记录时,则变量为空值。 默认为勾选。 保持默认。 将目标“Equipment[0].name”中的“0”修改为通配符“*”。 如果不改为通配符,只能查询出一条数据。 在画布上,把鼠标放在起点图元上,从“+”拖动鼠标,在起点图元和记录查询图元间增加连线。连接开始和记录查询图元。 鼠标在画布空白处点一下,单击右侧,设置服务编排的出参,从全局上下文里的对象变量中拖入。 单击服务编排界面上部的保存图标,保存服务编排。 测试服务编排能否正常执行。 单击服务编排编辑器上方执行图标。 不用输入测试数据,直接单击“运行”。 执行成功,界面上会返回设备对象中的全部设备名称数据,样例如下: 图5 返回样例 启用服务编排:测试成功,单击服务编排编辑器上方启用图标,启用服务编排。 如果服务编排创建完成后,未启用默认是属于编辑状态,不能被页面或者其他服务调用。
  • 记录查询图元参数配置 单击拖拽到画布中的记录查询图元,单击,在“基本信息”页面进行配置。 表1 基本信息参数说明 参数名 参数说明 如何配置 标签 仅用于展示。系统会自动填入该值,格式为RecordSelect序号。序号从“0”开始,表示同类型图元序号。 系统自动填充,可自定义。 名称 该图元的标识,请确保在当前服务编排中唯一。 系统自动填充,可自定义。 描述 该图元的描述信息。 选填项,建议填写图元的作用。 使用快速查询模式 是否启用快速查询模式。 若勾选该参数,表示为快速模式。仅配置查询条件即可,查询结果自动保存在对象变量中,如果对象变量不是数组,则仅保存第一条符合条件的记录;如果对象变量为数组,则保存所有返回的记录。 不勾选,表示为普通模式。根据条件查询对象记录,需要指明要查询的对象名,查询条件,需要查询的字段列表,查询结果需要保存到设置的变量中。 默认不勾选。 选中单选按钮。 单击,在“记录查询”页面进行配置。 若上一步勾选“使用快速查询模式”,则需要指定一个预先定义的对象变量或者对象变量数组,并将该对象变量或对象变量数组拖拽到“变量”输入框中,并设置条件以及选择排序方式,即可实现根据条件和排序方式将查询结果保存在对象变量中。例如,如下图所示,根据条件查询对象数据,并将查询结果保存在对象变量“Account”中。 图2 快速查询模式 表2 快速查询模式参数说明 参数名 参数说明 如何配置 变量 预先定义的对象变量或者对象变量数组。 查询结果自动保存在对象变量或者对象变量数组。如果对象变量不是数组,则仅保存第一条符合条件的记录;如果对象变量为数组,则保存所有返回的记录。 从全局上下文拖拽或者直接输入对象变量或对象变量数组。 无记录时配置空值 当根据条件查询无记录时,则变量为空值。 默认为勾选。 勾选或者去掉勾选。 条件 选中对象后,该条件区域“字段”列会出现该对象的字段。单击“新增行”,可设置查询数据的条件。 在“字段”中选择要进行判断的对象字段,在“比较符”中选择相应的比较符,“值”则可从全局上下文拖拽变量或者直接输入“{!变量名}”。 (排序)排序字段/顺序 使查询结果根据某个字段进行升序或者降序排序。 从下拉框选择。 若上一步未勾选“使用快速查询模式”,则需要指定对象并在条件中设置指定对象部分字段的值,根据条件查询符合条件的对象记录,并赋值到设置的变量上。例如,如下图所示,查询“Account”对象“name”为“Lily”的记录,并将查询得到的对象id赋值到"var_record_id"变量上。 图3 普通查询模式 表3 普通查询模式参数说明 参数名 参数说明 如何配置 对象 查询的具体对象名。 从下拉框中选择。 剔重 若查询记录有重复值,是否需要删掉重复记录只保留一条记录。 默认不勾选,表示不删掉重复记录。 勾选或者去掉勾选。 条件 选中对象后,该条件区域“字段”列会出现该对象的字段。单击“新增行”,可设置查询数据的条件。 在“字段”中选择要进行判断的对象字段,在“比较符”中选择相应的比较符,“值”则可从全局上下文拖拽变量或者直接输入“{!变量名}”。 (排序)排序字段/顺序 使查询结果根据某个字段进行升序或者降序排序。 从下拉框选择。 记录行的偏移量 分页,跳过前n条记录,从第n+1条记录开始。 从全局上下文拖拽数值变量或者直接输入“{!数值变量名}”,也可以是常量。 记录行的最大数目 分页,每页最多显示的记录数。 从全局上下文拖拽数值变量或者直接输入“{!数值变量名}”,也可以是常量。 记录的总行数存入变量 查询出来的总记录数存入变量中。 从全局上下文拖拽数值变量或者直接输入“{!数值变量名}”。 (输出)源/目标 输出结果。单击“新增行”进行添加。 “源”为需要查询的字段,查询结果需要保存到设置的变量中,“目标”为设置的变量。 “源”为需要查询的字段,可从下拉框中选择,“目标”可从全局上下文拖拽变量或者直接输入变量名。 无记录时配置空值 当根据条件查询无记录时,则变量为空值。 默认为勾选。 勾选或者去掉勾选。
  • 决策图元参数配置 选中拖拽到画布中的决策图元,单击,在“基本信息”页面进行配置。 表1 基本信息参数说明 参数名 参数说明 如何配置 标签 仅用于展示。系统会自动填入该值,格式为Decision序号。序号从“0”开始,表示同类型图元序号。 系统自动填充。 名称 该图元的标识,请确保在当前服务编排中唯一。 系统自动填充。 描述 该图元的描述信息。 选填项,建议填写图元的作用。 单击,在“决策”页面进行配置。 图2 配置决策图元 表2 决策图元配置参数说明 参数名 参数说明 如何配置 可编辑的结果 所有的判断条件。 可通过单击“新增”新增判断条件分支,界面右侧区域配置分支条件。 默认:默认输出,当其他所有条件均不满足情况下,进入该分支。 新增的分支名为decision序号,序号从“0”开始,可直接修改分支名。 可视 当选择“可视”时,可配置分支的判断条件。单击“新增”,可新增判断条件。条件显示为“资源”、“比较符”、“值”。 默认选择“可视”。 资源可从全局上下文拖拽变量或者直接输入“{!变量名}”,比较符可从下拉框中选择,值可从全局上下文拖拽变量或者直接输入“{!变量名}”,也可以是常量。 公式 可采用公式设置该分支条件。 公式中的变量可从全局上下文拖拽变量或者直接输入变量。 选择连接条件 当选择“可视”并设置多条判断条件时,需要设置选择连接条件“或”或者“且”。 或:表示满足多条判断条件的其中一条,便可进入该分支。 且:表示必须同时满足多条判断条件,才可进入该分支。 从下拉框选择“或”或者“且”。
  • 操作步骤 创建数组变量“TestList1”、“TestList2”和普通变量“test_var”。 在服务编排编辑器页面右侧选择。在全局上下文页面单击“变量”后的加号。 单击新增变量后的“...”,选择“设置”。 设置数组变量“TestList1”,数据类型为文本。 图2 数组变量“TestList1” 参考上述步骤设置数组变量“TestList2”和普通变量“test_var”,普通变量不用勾选“是否为数组”。 图3 数组变量“TestList2” 图4 普通变量“test_var” 单击拖拽到画布中的循环图元,单击,在“基本信息”页面进行配置。 表1 基本信息参数说明 参数名 参数说明 如何配置 标签 仅用于展示。系统会自动填入该值,格式为Loop序号。序号从“0”开始,表示同类型图元序号。 系统自动填充。 名称 该图元的标识,请确保在当前服务编排中唯一。 系统自动填充。 描述 该图元的描述信息。 选填项,建议填写图元的作用。 单击,在“循环”页面进行配置。 图5 配置循环图元 表2 循环图元配置参数说明 参数名 参数说明 如何配置 循环数组 表示进行循环的具体数组。 从全局上下文中拖拽或者输入集合变量。 该场景请从全局上下文拖拽数组变量“TestList1”,表示对数组“TestList1”进行循环。 循环变量 表示将每次循环取出来的元素赋值给该变量。 从全局上下文中拖拽或者输入变量。 该场景请从全局上下文拖拽普通变量“test_var”,表示将每次循环取出来的元素赋值给变量“test_var”。 排序 循环取出的顺序,可选择升序或者降序从数组中依次取出。 从下拉框选择“升序”或者“降序”。 进行赋值操作,将“test_var”的值加到数组“TestList2”后面。 拖拽“逻辑”下“赋值”图标至画布中,松开鼠标左键。 单击,在“基本信息”页面进行配置。“标签”和“名称”配置为“AddToList2”。 如下图所示,设置页面参数,从全局上下文拖拽数组变量“TestList2”到变量中,从全局上下文拖拽普通变量“test_var”到值中。将“test_var”的值加到数组“TestList2”后面。 图6 添加Assignment定义 将循环和赋值连线,在连线类型选择“下一个取值”。 图7 添加连线 清空“test_var”并闭环。 拖拽“逻辑”下“赋值”图标至画布中,松开鼠标左键。 单击,在“基本信息”页面进行配置。“标签”和“名称”配置为“testvar_Tonull”。 单击,设置页面参数。从全局上下文拖拽普通变量“test_var”到变量中,从全局上下文拖拽全局常量“$GlobalConstant.Null”到值中。清空“test_var”。 图8 清空test_var页面 在服务编排编辑器页面右侧选择,按照下图从全局上下文页面中拖拽参数到相应的入参和出参区域,设置服务编排的入参和出参。 连线并单击,保存服务编排。 单击,在“输入参数”中输入参数后运行服务编排。 在“输入参数”中输入如下参数: { "TestList1": [ "1", "2", "3" ]} 检查输出页签的结果是否符合预期。 { "interviewId": "002N000000YfbbgBStmq", "outputs": { "TestList2": [ "1", "2", "3" ] }}
  • 等待图元参数配置 选中拖拽到画布中的等待图元,单击,在“基本信息”页面进行配置。 表1 基本信息参数说明 参数名 参数说明 如何配置 标签 仅用于展示。系统会自动填入该值,格式为Wait序号。序号从“0”开始,表示同类型图元序号。 系统自动填充。 名称 该图元的标识,请确保在当前服务编排中唯一。 系统自动填充。 描述 该图元的描述信息。 选填项,建议填写图元的作用。 单击,在“等待”页面进行配置。 图2 Wait配置及Pass分支条件配置 图3 Unpass分支条件配置 图4 Timeout分支条件配置 表2 条件分支配置参数说明 参数名 参数说明 如何配置 可编辑的事件 所有的判断条件。 可通过单击“新增”来增加判断条件分支。 默认:默认输出,当其他所有条件均不满足情况下,进入该分支。 例如需要新增如下三个判断条件: Pass:应聘者被录用。应聘通过时Boolean类型参数“result”赋值为全局常量“{!$GlobalConstant.True}”,表示结果为真,即应聘通过。 Unpass:应聘者没有被录用。应聘失败时Boolean类型参数“result”赋值为全局常量“{!$GlobalConstant.False}”,表示结果为假,即应聘拒绝。 Timeout:超时事件。基于该服务编排执行时间超时30分钟未返回是否录用。 新增的分支名为event序号,序号从“0”开始,可直接修改分支名。 事件/时间 当订阅的是自定义事件时,您需要选择“事件”;当订阅的是系统预置的标准事件“Absolute Time Alert”,即定时器发送的系统事件时,您需要选择“时间”。 本示例中需要配置如下: Pass:请选择“事件”。 Unpass:请选择“事件”。 Timeout:请选择“时间”。 选中单选按钮。 “事件”和“时间”两者择一。 事件 请选择需要订阅的事件。当订阅的是自定义事件时,该参数才会显示。 从下拉框选择。 事件条件 该分支的条件。单击“新增行”可进行添加。当订阅的是自定义事件时,该参数才会显示。 分支条件中的字段为创建该事件时设置的自定义参数,值可从右侧全局上下文中选择拖入。 分支条件中的字段从下拉框选择该事件的自定义参数,值可从全局上下文拖拽变量或者直接输入“{!变量名}”,也可以是常量。 定义需要满足的其他条件 勾选“定义需要满足的其他条件”后,您可根据事件变量外的其他变量设置追加条件。 勾选或者不勾选。 可视 勾选“定义需要满足的其他条件”后,该参数才会显示。当选择“可视”时,可配置追加条件的判断条件。单击“新增”,可新增判断条件。条件显示为“资源”、“比较符”、“值”。 默认选择“可视”。 资源可从全局上下文拖拽变量或者直接输入“{!变量名}”,比较符可从下拉框中选择,值可从全局上下文拖拽变量或者直接输入“{!变量名}”,也可以是常量。 公式 勾选“定义需要满足的其他条件”后,该参数才会显示。可采用公式设置追加条件。 公式中的变量可从全局上下文拖拽变量或者直接输入变量。 选择连接条件 当选择“可视”并设置多条判断条件时,需要设置选择连接条件“或”或者“且”。 或:表示满足多条判断条件的其中一条,便可进入该分支。 且:表示必须同时满足多条判断条件,才可进入该分支。 从下拉框选择“或”或者“且”。 输出 如果您需要在服务编排中使用事件的参数,将其参数赋值到事件变量中方便服务编排引用。 当订阅的是自定义事件时,该参数才会显示。 默认不需要。 从全局上下文拖拽或者输入事件变量,事件变量必须和所选的事件相同。 基准 基准时间。 当订阅的是系统预置的定时器发送事件时,该参数才会显示。 可从全局上下文拖拽日期/时间类型变量,也可设置为某个具体时间,或者设置为本服务编排执行时间。 例如,在本节中设置为本服务编排执行时间,即{!$Flow.CurrentDateTime}。 偏移时间 偏移时间,例如“30”。当订阅的是系统预置的定时器发送事件时,该参数才会显示。 直接输入整数。 偏移单位 偏移时间的单位。当订阅的是系统预置的定时器发送事件时,该参数才会显示。 可从下拉框选择“天”、“小时”或“分钟”。 例如,设置基于该服务编排执行时间超时30分钟未返回是否录用。
  • 前提条件 已在BO中自定义封装好API,具体操作请参考如何开放API接口。 打开需要调用BO服务的应用开发工作台,单击“Internal dependencies”或“External dependencies”旁的“+”,选择“BO服务”,添加要调用的BO服务。 添加后在该应用的服务编排中才可以调用BO服务。 “Internal dependencies”为内部依赖文件夹,导入的BO服务或者Native服务,在打包上层应用时也会随应用打包发布出去;“External dependencies”为外部依赖文件夹,导入的BO服务或者Native服务,在打包上层应用时不会打包出去。 图1 应用中添加BO服务
  • BO图元参数配置 选中拖拽到画布中的BO图元,单击,在“基本信息”页面进行配置。 表1 基本信息参数说明 参数名 参数说明 如何配置 标签 仅用于展示。系统会自动填入该值,格式为BO名+序号。序号从“0”开始,表示同类型图元序号。 系统自动填充。 名称 该图元的标识,请确保在当前服务编排中唯一。 系统自动填充。 描述 该图元的描述信息。 选填项,建议填写图元的作用。 单击,在“BO”页面进行配置。 图3 配置BO图元 表2 BO图元配置参数说明 参数名 参数说明 如何配置 服务版本 BO中的自定义API的版本号。 在BO开发页面中,单击左下角的“服务”新建API时,需要指定版本号,且接口区分“公共接口”和“私有接口”。 “公共接口”页面创建接口是提供REST接口给第三方系统或者内部系统调用;“私有接口”页面创建接口是提供SDK接口给内部系统调用。 从下拉框选择。 系统会将BO中所有自定义API的版本值集中放置在该下拉框取值下。 API类型 API类型,分为REST或SDK。 单击选择“REST”或者“SDK”。 操作方法 BO中已自定义好的API接口,该API接口类型必须是“服务编排”,才可在Flow中调用。 从下拉框选择。 在BO开发页面,单击左下角的“服务”,在“公共接口”页签可查看该BO对外提供的API接口。 入参/目标 当选择具体操作方法(API)后,API的输入参数将会显示在入参的目标列。 系统会将选择的API的所有入参自动显示在目标列。当没有入参时,不显示。 入参/源 服务编排中的变量,需要和目标的参数类型保持一致。该源会将服务编排中的变量赋值给调用API的输入参数。 可从全局上下文拖拽变量或者直接输入“{!变量名}”给目标赋值。 出参/源 当选择具体操作方法(API)后,API的输入参数将会显示在出参的源列。 系统会将选择的API的所有出参自动显示在目标列。当没有出参时,不显示。 出参/目标 服务编排中的变量,需要和输出参数的类型保持一致。API中的输出参数赋值给服务编排中的变量,供服务编排使用。 可从全局上下文拖拽或者直接输入变量。
  • 前提条件 已在原生服务中配置好API,具体操作请参考配置API。 已接入服务实例,具体操作请参考注册Native Service。 打开需要调用原生服务的应用开发工作台,单击“Internal dependencies”或“External dependencies”旁的“+”,选择“Native服务”,在“添加Native服务”页面添加要调用的原生服务。 添加后在该应用的服务编排中才可以调用Native服务。 “Internal dependencies”为内部依赖文件夹,导入的BO服务或者Native服务,在打包上层应用时也会随应用打包发布出去;“External dependencies”为外部依赖文件夹,导入的BO服务或者Native服务,在打包上层应用时不会打包出去。 图1 应用中添加原生服务
  • Native服务图元参数配置 选中拖拽到画布中的Native服务图元,单击,在“基本信息”页面进行配置。 表1 基本信息参数说明 参数名 参数说明 如何配置 标签 仅用于展示。系统会自动填入该值,格式为原生服务名+序号。序号从“0”开始,表示同类型图元序号。 系统自动填充。 名称 该图元的标识,请确保在当前服务编排中唯一。 系统自动填充。 描述 该图元的描述信息。 选填项,建议填写图元的作用。 单击,在“Native服务”页面进行配置。 图3 配置Native服务图元 表2 Native服务图元配置参数说明 参数名 参数说明 如何配置 操作方法 原生服务中已自定义好的API接口。 从下拉框选择。列表中方法是之前在Service中配置的方法。 进入原生服务,在原生服务配置界面选择“导航”。 在“API设计”页签查看该原生服务对外提供的API接口。API要处于已发布状态。 发布原生服务后如果需要修改API,需要在API配置界面单击取消发布后进行修改,修改后再保存并发布。 已经发布的API可能在服务编排中已经使用,如果修改API导致不兼容,请同步修改引用该API的服务编排。 入参/目标 当选择具体操作方法(API)后,API的输入参数将会显示在入参的目标列。 系统会将选择的API的所有入参自动显示在目标列。当没有入参时,不显示。 入参/源 服务编排中的变量,需要和目标的参数类型保持一致。该源会将服务编排中的变量赋值给调用API的输入参数。 可从全局上下文拖拽变量或者直接输入“{!变量名}”给目标赋值。 出参/源 当选择具体操作方法(API)后,API的输入参数将会显示在出参的源列。 系统会将选择的API的所有出参自动显示在目标列。当没有出参时,不显示。 出参/目标 服务编排中的变量,需要和输出参数的类型保持一致。API中的输出参数赋值给服务编排中的变量,供服务编排中使用。 可从全局上下文拖拽或者直接输入变量。
  • 基于预留扩展点进行定制 此处以“createOrder”接口为例来说明,基线“createOrder”接口中预留了一个扩展点。 这个扩展点是一个空的子服务编排“AfterSaveOrder”,将这个子服务编排另存一个定制版本“AfterSaveOrder_0419”,实现新的业务逻辑。子服务编排另存为定制版本的操作方法请参考另存版本后进行定制。 在此方式下,定制内容在基线接口预留节点中,该接口还是属于基线接口,可以随版本升级使用。 图2 定制示例
  • 是否可以多人编辑服务编排 当多人编辑已有服务编排时,为防止多人篡改,AppCube提供了一套保护机制。 假设A用户打开X服务编排,编辑前单击锁定服务编排,A用户进行编辑,此时B用户也打开X服务编排,B用户的服务编排编辑器将自动进入锁定模式。 保持A用户对X流程的编辑设计权限。A用户编辑完成后,需要单击进行解锁或者单击启用按钮进行自动解锁。 当A用户锁定X流程后,系统会只读模式锁定B用户对X流程的操作,B用户的服务编排编辑器页面会有提示“该资源已经由A用户锁定,点击此处强制获得编辑权”。B用户如果按照提示强制获得编辑权,A用户的X流程编辑器画面会自动锁定。 当多人编辑已有BPM、触发器、标准页面或状态机时,AppCube提供的保护机制是相同的,后续不再分别介绍。 父主题: 服务编排
  • 另存版本后进行定制 此处以“testFlow”服务编排为例进行说明,基于基线“1.0.1”版本另存一个“1.0.2”的定制版本。 在App下的Logic文件夹下单击“testFlow”服务编排。 单击进行禁用操作。 单击编辑器上方按钮。“另存为”页面“类型”中选择“新版本”,另存为新版本,服务编排名称与之前版本相同。单击“保存”。 系统默认当前页面为新版本“1.0.2”服务编排编辑器页面。 图1 另存为新版本 参数名 参数说明 如何配置 标签 仅用于展示。 直接填写。 名称 系统自动显示具体名称。不可变动,和基础版本的服务编排名称保持一致。 不可变动,和基础版本的服务编排名称保持一致。 类型 另存为的类型。 新版本:另存为新版本。适用于新建的服务编排,基础服务编排仍可使用。 新服务编排:是将原服务编排重新另存并命名,新保存后为另一服务编排,与选择“新版本”场景不同,适用于新建的服务编排,基础服务编排仍可使用。 在下拉框里选择“新版本”。 服务编排类型 服务编排的类型。系统自动显示类型。在创建基础服务编排时配置的类型。不可更改。 Autolaunched Flow:自启动Flow,在接口调用后会立即执行Flow模型定义的逻辑。 Event Trigger:事件触发的Flow,则会在事件触发时才会开始执行Flow模型定义的逻辑。 不可变动,和基础版本的服务编排类型保持一致。 展示标签 服务编排实例的展示标签。系统自动填充为“标签值{!$Flow.CurrentDateTime}”。 当环境中有该服务编排实例正在运行时,该参数值将会在服务编排管理页面的“服务编排运行实例”页签下“标签”列进行显示。 系统会自动填充。 描述 服务编排描述信息。 选填项,建议填写服务编排的作用。 是否私有 私有的服务编排不能通过Rest API或者自定义API(公共接口)进行调用。 勾选表示私有;不勾选表示不是私有。 在“1.0.2”版本服务编排编辑器页面进行定制修改。修改后单击保存按钮进行保存。 例如在新版本中新增一个定制的script图元,通过script实现新的业务逻辑。 其他图元依然沿用基线服务编排,不做任何改造。 单击图标,运行服务编排,保证服务编排运行结果符合预期。 单击服务编排编辑器页面上方图标,启用新版本服务编排。 在此方式下,当基线版本升级时,系统默认启用和使用服务编排的定制版本。升级造成的基线服务编排原有图元变化,定制服务编排可继承。升级造成的基线服务编排新增图元,定制服务编排无法继承。
  • 调试服务编排 在服务编排编辑页面,选中需要设置断点的图元,单击鼠标右键选择“设置断点”。 设置断点后,选中图元,单击鼠标右键选择“禁用断点”或者“移除断点”可禁用或者移除断点。 目前不支持在等待Wait图元以及等待图元之后的所有图元设置断点。 图1 设置断点 单击服务编排编辑器上方的,开始调试服务编排。 在弹出的输入参数页面进行配置,如果有输入参数,请输入入参,单击“运行”;如果该服务编排没有输入参数,直接单击“运行”。 在服务编排编辑器左侧,可看到调试页面,单击可执行到下一断点,单击可停止调试,查看执行到某一断点的参数变化是否符合预期。 图2 调试页面 左侧调试页面说明如下: 变量:展示执行到当前断点,服务编排中的变量取值情况,包括全局变量、某图元的输入输出变量等。 调用堆栈:执行到当前断点时出现的调用堆栈。 正在调试:正在调试的服务编排名。当执行到子服务编排时,该处显示当前子服务编排名。 断点:展示设置的所有断点,选中某一断点,单击鼠标右键可出现“移除断点”、“移除所有断点”、“启用所有断点”、“禁用所有断点”选项。可单击该区域某一断点,进行启用或者禁用该断点操作。 单击服务编排编辑器页面右上方“跟踪”,打开“跟踪器”页面。 可在弹出的页面查看Flow执行的每一步的详细信息。 关闭跟踪器页签。单击,至执行完最后一个断点,调试结束。 重新设计问题图元以及前后逻辑。再次运行服务编排,直至结果符合预期。 调试服务编排符合预期后,您需要启用服务编排,使得服务编排在系统中可用。单击服务编排编辑器页面上方图标,启用服务编排。 只有保存服务编排后编译结果没有错误的服务编排才可以被启用。
  • 运行服务编排 单击服务编排编辑器上方的,保存服务编排。 保存后,系统会对服务编排进行编译。如果有报错或者警告,请单击“确定”,在服务编排编辑器页面修改服务编排。修改后再次保存,直至无报错和警告。 单击服务编排编辑器上方的,执行服务编排。 在弹出的输入参数页面进行配置,如果有输入参数,请输入入参,单击“运行”;如果该服务编排没有输入参数,直接单击“运行”。 表1 基本信息参数说明 参数名 参数说明 如何配置 请求头参数 请求消息头的参数配置,“键”为参数名,“值”为参数取值。 单击“请求头参数”前的展开按钮,显示映射区域“键”和“值”。若需要多个请求头参数,请单击“添加行”;没有话不需要配置。 直接输入。 例如若需要用其他用户测试,请配置键“access-token”,在值中输入其他用户的access-token鉴权值。 responseType('arraybuffer') 表示返回响应的类型。勾选时,表示返回响应是一个包含二进制数据的JavaScript ArrayBuffer。 单击“请求头参数”前的展开按钮,该参数才会显示。 默认不勾选。 勾选或者不勾选。 输入参数 填写该Flow运行实例的输入参数以及取值。 手动填入。 必选参数必须输入,可选参数可根据需要添加。多行之间用“,”分隔。 例如在“输入参数”中输入如下参数: { "equipmentSn": "001", "fullAddress": "BeiJing DongchenQu"} 检查输出页签的调试结果是否符合预期。 表2 输出页签 调试结果 取值 处理建议 查看日志 单击该按钮,可弹出“日志跟踪器”,显示该Flow实例的运行日志。 单击该按钮,查看Flow执行的每一步的详细信息。 结果 调试结果。 成功 '参数名'的值'%!v(BADINDEX)'无效或格式非法 检查输入参数的设置是否正确。 输出 该Flow的输出内容。检查输出是否和预期一致。 如果结果为成功,则显示输出。 不涉及 若输出结果符合预期,单击服务编排编辑器页面上方图标,启用服务编排。 若发现输出结果不符合预期,单击服务编排编辑器页面右上方“跟踪”,打开“跟踪器”页面,查看详细信息。 可在“跟踪器”页面查看Flow执行的每一步的详细信息。检查哪一步的输出不符合预期,按照调试服务编排进行调试。
  • 在标准页面中与BPM交互 在标准页面的自定义事件中内置了一些交互的API : 获取变量:context.$bpm.loadVariables(): Promise 提交任务、流程: context.$bpm.submitTask(variables: {[key: string]: any}): Promise 修改变量: context.$bpm.putVariables(variables: {[key: string]: any}): Promise 图2 在标准页面的事件代码中与BPM交互
  • 开发一个业务场景脚本实例 本小节创建的业务场景脚本相对于开发一个简单脚本实例,具有更为复杂的业务逻辑。 本脚本实例实现的业务场景:根据对象的数据生成资源列表数据,用于前台数据呈现,启用本脚本后,可实现数据导入模板使用。 创建脚本之前,需要先创建脚本中操作的对象ApprovedResource,其字段如表1所示。 表1 对象说明 字段标签 字段名称 字段类型 取值 读写权限 含义 ownerId ownerId 文本 长度:255 全选 资源拥有者ID ResourceName ResourceName 文本 长度:255 全选 资源名称 Type Type 选项列表 枚举值如下: File Folder 全选 资源类型 SubmitDate SubmitDate 日期/时间 不涉及 全选 资源提交时间 ApproveDate ApproveDate 日期/时间 不涉及 全选 资源审批时间 Status Status 选项列表 枚举值如下: Waiting Submitted Approved 全选 审批状态
  • 如何定制已有脚本 您可以全新创建一个脚本,也可以根据业务需要修改已有脚本,如使用如何通过模板进行数据导入的BulkInsert脚本为例。 在以下两种场景下,您需要修改已有脚本: 场景1:在已有脚本基础上新建版本。业务需要,脚本要实现的能力变化,此时您可以基于原有脚本修改,并保存为脚本的新版本。在此场景下,原有脚本作为老版本自动失效。 场景2:在已有脚本基础上新建脚本。您需要开发的新脚本与已有的某个脚本类似,此时您可以基于原有脚本修改,再保存为新的脚本名称。在此场景下,原有脚本仍然有效。新脚本和老脚本也没有关联关系,各自独立。 场景1:在已有脚本基础上新建版本: 根据已有的“BulkInsert”版本1.0.1的脚本 ,开发“BulkInsert”版本1.0.2的脚本。 在应用开发工作台Logic目录下,单击“BulkInsert”脚本。 单击编辑器上方的另存为图标,选择“新建版本”,单击“保存”。 图5 另存为“BulkInsert”脚本 图6 保存新建版本 编辑新脚本版本的内容,修改后单击页面上方,保存修改。 图7 修改版本后保存与启用 测试脚本,确保其运行结果符合预期后,再单击启用脚本。 场景2:在已有脚本基础上新建脚本: 根据已有的“BulkInsert”脚本 ,开发“BulkInsertOther”。 在应用开发工作台Logic目录下,单击“BulkInsert”脚本。 单击编辑器上方的另存为图标,选择“新建脚本”,输入新脚本名“BulkInsertOther”,单击“保存”。 图8 新建脚本 编辑新脚本的内容,修改后单击上方图标,进行保存。 测试脚本,确保其运行结果符合预期后,再单击启用脚本。
  • 流跟踪器简介 与服务编排类似,BPM也有一个流程执行历史的查看器,称为“日志跟踪器”。通过跟踪流程的每一步的输入和输出,确定流程的执行结果是否符合预期。 打开某个BPM,单击编辑器上方的“运行”按钮,运行BPM。模拟符合与BPM进行交互。 交互完成后,需要确认步骤操作的结果是否符合预期。单击BPM编辑器页面右上方“跟踪器”,打开“日志跟踪器”页面。 在“日志跟踪器”页面查看BPM执行的每一步的详细信息,例如查看变量传递是否符合预期。 图1 日志跟踪器 日志跟踪器界面分为两部分,即搜索框和流程日志跟踪记录表格。 搜索框: 图2 搜索框 流程切换:用户可以根据时间筛选曾启动过的流程,每个流程的跟踪信息只保存半个小时。 搜索框:根据流程跟踪信息进行搜索。 下载:将当前完整的流程日志以文件形式下载到本地,保存或查看。 表格:日志跟踪器表格记录了BPM流程流转的日志。其中包含时间戳、所属模块的类型、所属模块的名字、具体操作的图元类型、图元名称以及该操作的描述,模块在执行子流程时,会切换为子流程的类型和名称。 若不符合预期,则重新返回BPM修改,重复步骤 1 。
  • 常见错误 变量赋值错误? 请检查输入参数的类型与定义是否匹配,必要时进行类型转换。 变量结构错误? 请检查输入参数的结构(属性名、取值类型)与目标结构是否一致。当出现大段JSON报错信息时,可借助JSON Viewer或在线JSON格式化工具进行对比。 没有走指定分支?流程意外终止? 由于流程的结束时隐含的,当没有下一步的内容时流程即结束。因此,在排他网关里如果没有设置默认分支,当所有分支的条件都不满足时,流程即进入结束状态。
  • 快速开始 在低代码应用开发页面,您可以通过新建、导入既有和基于模板三种方式,快速创建一个BPM。 图5 新建BPM的三种方式 如下是开发BPM的主要步骤,您可以根据以下步骤快速开发BPM。如何创建一个端到端的BPM,请参见简易出差审批应用开发。 表2 开发BPM步骤 步骤序号 相关术语 描述 操作 1 创建BPM 新建:创建空白BPM。 导入既有:将同一租户或平台中已有的BPM以导入的方式创建BPM。方便用户快速继承已有BPM的配置,增加效率。 基于模板:使用内置的BPM模板,快速创建BPM系统预置了一些典型场景的BPM模板,目前系统内置的模板有以下几类: 通用:基础审批流、多步骤审批流、并行审批流 HR:请假申请、出差申请、绩效评估、试用期确认、工作交接 金融:贷款申请、ERP信用提升、商业计划申请 项目:进度管理、版本管理、发布管理 您可以根据需要选择不同方式,创建BPM。 若业务场景贴合已有模板,建议选择“基于模板”来快速创建BPM。快速创建后,您只需要创建泳道中配置的工作队列即可使用BPM。 2 (可选)BPM的开始类型 BPM的开始类型可以“Star”开始图元下进行配置,开始种类分以下两种: 自定义:默认为“自定义”,即不指定事件的起因,即不需要指定触发条件。主要用于接口调用进行启动。 表单:使用表单或者页面启动BPM。选择该项时,您需要配置具体的表单、标准页面或者高级页面。 一般选择“自定义”,当BPM由表单或者页面启动时,选择“表单”类型。 选中“Star”开始图元,设置开始类型,一般选择“自定义”,当BPM由表单或者页面启动时,选择“表单”类型。 图6 选择开始类型 3 创建或配置BPM变量 创建对象或全局结构体。 在全局上下文中,根据实际情况进行创建。 4 定义泳道并选择图元 一条泳道代表了BPM流程处理中的一种用户角色。 BPM中每个泳道都和队列一一对应。处于不同泳道的图元,分别归属不同的队列中的用户去处理。当图元由系统处理时,泳道中不用配置队列。 BPM编辑器提供了一些图元,作为编排BPM使用。 在BPM开发页面单击“Add Lane”,添加泳道。根据场景定义泳道。 根据逻辑设计,从BPM编辑器面板区域拖拽相应类型下的图元图标至画布区域中,松开鼠标左键。 5 配置图元 在泳道中,选中图元后,即可根据需要在右侧属性配置区,进行配置。 您可以根据需要选择图元,进行配置。 如果使用了“规则”图元,您需要提前创建好决策表。 如果使用了“用户任务”图元,且任务界面要用到标准表单,建议您提前创建好标准表单。 6 连接图元并指定图元的逻辑关系 根据实际业务场景,需要确定BPM中用到的图元和逻辑顺序。根据逻辑实现,需要在拖入并配置好所有图元后,将图元按照逻辑顺序有序的连接起来,在执行BPM时,系统会根据连线顺序有序执行图元任务,从而实现整个流程运转。 根据逻辑设计有序连接各图元。 7 (可选)配置运行态界面布局 在配置完整个BPM图元及流程后,您还可根据需要选择性的配置BPM运行态界面布局。配置后要保存BPM。 -
  • 实现投票 在上一节中,通过将结果触发方式选择为“等待所有投票完成触发投票结果”实现了会签功能,本节将介绍如何通过用户任务实现投票功能。 需要先将操作投票任务的用户加入到一个工作队列或组(公共组)中。 图1 在工作队列中添加用户成员 图2 在公共组中添加用户 “当前泳道”方式是通过指定泳道的工作队列实现的。 “名称和表达式”方式是通过设置“参与者”类型为“组”,并指定组(公共组)实现的。 通过“当前泳道”或“名称和表达式”的方式,将需要进行投票操作的用户加入到用户任务的接收人中,再将“审批类型”选择为“会签:每个分配人都需要审批”,将结果触发方式选择为“当最小百分比满足时立即触发投票结果”,并自定义“投票结果门槛”。 图3 当前泳道方式 图4 名称和表达式方式 通过以上配置,将在处理任务的用户数量达到需要处理任务的总用户数量的对应百分比后,将得票最高的结果赋值到“$BP.TaskOutcome”系统变量中,实现投票功能。 父主题: 深入了解用户任务
  • 初识BPM 在某个应用开发工作台中,将光标放在应用目录上之后,应用目录右侧会出现“+”,单击“+”,选择“BPM”,在“添加工作流”弹窗中,输入BPM的标签和名称后,单击“添加”,即可进入BPM设计界面。 图1 创建BPM 图2 添加工作流 BPM设计界面由上方按钮区域、左侧面板图元区域、中间画布工作区域和右侧属性配置区域四部分组成。 图3 BPM设计界面 表1 BPM设计界面说明 序号 分类 功能说明 1 按钮区域 功能按钮区域,包括锁定、解锁、启用(或者禁用)、保存、另存为新版本或者新BPM、运行、操作回退、撤销回退、启用流跟踪器以及切换版本的操作。支持快捷键操作,即可脱离鼠标直接用键盘操作。 2 面板图元区域 BPM的组成图元,详细介绍请参见BPM图元。 3 画布工作区域 BPM设计操作区域。在该区域可对BPM进行具体流程设计、组件放置。 选中图元或者泳道按“Delete”可进行删除操作。 4 属性配置区域 整个BPM、泳道(Lane)或者图元属性设置区域。 当选择BPM中图元时,右侧配置区域为该图元的属性设置区域。 当选择BPM中空白区域时,右侧配置区域为该BPM的设置区域。 当选择泳道左侧标签时,右侧配置区域为该泳道的属性设置区域。
  • 实现会签 配置用户任务时可以选择两种审批类型,分别是“或签:任一个分配人均可审批”和“会签:每个分配人都需要审批”。 若您选择了“或签:任一个分配人均可审批”,则只需要接收人中的某一用户完成了审批,即可推动任务流程,走向下一个任务。 若您选择了“会签:每个分配人都需要审批”,则需要接收人中的用户群体满足您设置的审批条件才可推动任务流程,走向下一个任务。 通过并行审批可以快速的实现会签功能,您可以将结果触发方式选择为“等待所有投票完成触发投票结果”,在这种投票触发方式下,将需要所有被分配了当前任务的用户完成相应的任务后才能推动BPM流程,即实现了会签功能。 父主题: 深入了解用户任务
  • 当前泳道 “用户任务”图元接收人类型设置为“当前泳道”,将泳道和工作队列绑定,则处于该泳道的用户任务图元,由该泳道对应工作队列中的成员去处理。工作队列中的成员可以是多个用户、业务用户、公共组中成员、角色或带有下属的角色中成员。配置过程如下: 参考管理队列,创建工作队列,将处理任务的用户或者业务用户加入工作队列中。例如创建派单员工作队列“Dispatcher”。 图2 创建工作队列 如图3所示,“用户任务”的接收人类型选择“当前泳道”,您可以将任务分配给“当前泳道角色的任意成员”或“当前泳道中的上一个任务被分配的人员”。 图3 用户任务中设置当前泳道接收 如图4所示,单击左侧泳道区域,在“泳道配置”中设置派单员工作队列“Dispatcher”。 处于该泳道的用户任务图元,则由工作队列“Dispatcher”中的成员去处理。 图4 设置泳道
  • 用户和业务用户 在进行任务分配时,AppCube平台提供了两种用户可以进行任务的分配,分别是用户和业务用户。 用户(User):是租户帐号或子帐号开发者,用来管理应用和业务用户。购买AppCube的租户帐号默认拥有所有权限,是管理员用户,可添加子帐号并为其配置需要的权限。 业务用户(即PortalUser):是访问在AppCube中开发的业务应用的用户帐号。即业务应用的使用者。 您可以在BPM中通过用户任务图元,在用户任务配置页面的“接收人”模块,通过以下三种方式将任务分配给用户或业务用户。 当前泳道。 流程发起人的主管 名称和表达式。 基于规则。 图1 接收人类型
  • 名称和表达式 “用户任务”图元接收人类型设置为“名称和表达式”时,通过以下三种方式分配该任务的参与者:“表达式”、“用户”和“组”。这时泳道中的工作队列配置不起作用。 图5 名称和表达式 用户:在“取值”中选择接收该任务的用户,不包括业务用户。 组:在“取值”中选择公共组,则该任务由公共组的成员去处理。公共组的成员可以是用户、业务用户、其他公共组的成员、角色或带有下属的角色中成员。关于如何创建工作组,请参考管理公共组。 表达式:当您将“参与者”配置为“表达式”时,实际是一个变量。在“取值”中可设置变量的值,变量值支持以下几种: 用户的用户名或用户ID,其中用户名前需要加“user:”前缀。 业务用户的用户名或业务用户ID,其中业务用户名前需要加“puser:”前缀。 公共组名称或者公共组ID,其中公共组名称前需要加“group:”前缀。 角色名称或者角色ID,其中角色名称前需要加“role:”前缀。 例如分配任务接受者为用户名为“PortalUser1”的业务用户、用户名为“User1”的用户、用户ID为“10XX000000XXXXXXX”的用户、公共组名称为“group1”和角色名称为“role1”的合集,则取值为“"puser:PortalUser1,user:User1,10XX000000XXXXXXX,group:group1,role:role1"”。多个取值之间用英文逗号“,”分隔,取值外加英文双引号。
  • 基于规则 “用户任务”图元接收人类型设置为“基于规则”时,您可以将全局上下文中的变量拖入到条件输入框中,当条件输入框中的变量或条件为true时,将会把任务分配给选择框中配置的用户。您可以通过以下方式配置接收任务的用户: 当前用户:把任务分配给执行当前用户任务的用户。 上级经理:把任务分配给执行当前用户任务的用户的上级经理。 特定的用户:把任务分配给选择框中选择的用户。 队列:把任务分配给选择框中选择的工作队列中的所有用户。 用户属性:根据用户对象的某一字段进行任务的分配。 变量:根据输入框中的用户ID或用户名将任务分配给相应的用户。 图6 基于规则
  • 如何对接口鉴权 通过Rest连接器只需简单配置即可实现方便快捷的调用第三方接口。但是为了保证接口调用安全,调用第三方系统开放的Rest接口,通常需要进行鉴权。目前Rest连接器集成了几种通用的鉴权方式。 鉴权协议支持OAuth、简单消息头和JWT(JSON Web Tokens)三种,此外还支持HTTPS双向认证鉴权。 OAuth鉴权模式 简单消息头鉴权 JWT鉴权模式 HTTPS双向认证鉴权 父主题: 集成开发
  • OAuth鉴权模式 使用OAuth客户端模式鉴权,AppCube服务会根据填写的OAuth的服务端地址、Client ID和Client Secret。在发送请求前后台自动获取第三放服务端的access_token, 并在发送请求时携带此access_token,服务端根据携带的access_token进行鉴权。 在创建或修改Rest服务时,可以设置鉴权信息。 图1 鉴权设置操作入口 图2 OAuth鉴权模式示例配置 父主题: 如何对接口鉴权
共100000条