启动AstroZero工作流
启动工作流是执行工作流实例的具体操作,启用工作流是将工作流从不可用或未激活状态转变为可用或激活状态的过程。本章节主要向您介绍启动AstroZero中工作流的三种方式,请注意区分。
在工作流设计页面启动工作流
无需编写任何代码,只需要单击工作流设计页面的运行按钮,即可启动工作流。
- 参考登录AstroZero新版应用设计器中操作,登录应用设计器。
- 在左侧导航栏中,选择“流程”。
- 将鼠标放在对应的工作流上,单击,选择“编辑”。
- 在工作流设计页面,单击页面上方的,启动该工作流。
在工作流设计页面,可以通过如下两种方式启动工作流。
- 自定义:将工作流“开始”图元的开始类型设置为“自定义”启动,不指定事件的起因,即不需要指定触发条件,主要用于接口调用进行启动。
图1 自定义方式
- 表单:使用表单或页面,启动工作流。选择该项时,需要配置具体的表单、标准页面或高级页面。
图2 表单方式
- 自定义:将工作流“开始”图元的开始类型设置为“自定义”启动,不指定事件的起因,即不需要指定触发条件,主要用于接口调用进行启动。
接口启动工作流
通过调用工作流的Rest接口“http://AstroZero对外提供的默认域名/u-route/baas/bp/v2.0”,进行启动。
接口URI:POST AstroZero域名/u-route/baas/bp/v2.0/runtime/instances
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
是 |
String |
工作流的名称,在界面处创建工作流时配置的名称。 |
version |
否 |
String |
工作流版本号,因为一个工作流可以存在多个版本。如不带版本号,表示运行当前启用的版本。 |
variables |
否 |
Object |
工作流元数据中定义的变量,包括自定义变量和系统变量。为key-value形式,其中key为变量名,value为变量的值。如果需要在启动工作流前设置工作流的变量,可以填写该参数。如果需要启动时设置变量,可以在variables中设置系统变量$Flow.BusinessKey;如果需要设置工作流的title,可以设置系统变量$Flow.Title。 |
参数 |
参数类型 |
描述 |
---|---|---|
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 } }
在脚本中启动工作流
在脚本代码中,通过导入工作流的脚本库,来启动工作流。
- 参考创建空白AstroZero脚本中操作,创建一个空白脚本。
- 在脚本代码中,导入工作流的脚本库,通过脚本代码启动工作流。
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" } ] }