流程操作说明
流程操作服务主要包括创建、打开、提交、退回等一系列流程流转操作
接口交互说明
流程执行过程中可能存在前端交互场景,需用户选择流程节点或办理人;
后端依据执行返回结果封装信息推送至前端,由前端展示交互操作页面;
用户完成操作后重新提交流程,循环执行该逻辑,直至流程处理成功。

说明
1、除流程的创建和打开操作之外,其他流程操作主要通过json数据对象actionData进行交互
2、使用者可在js中做全局变量json对象进行控制,在调用提交等操作后,返回json可赋值给actionData,进行选择路由或选择办理人后,给actionData对象进行赋值,然后再调用流程操作接口
第一次提交
接口调用说明
| 属性 | 值 |
|---|---|
| HTTP 方法 | POST |
| 请求地址 | http://127.0.0.1:8080/demo/horizon/workflow/rest/flow/support/action.wf |
请求参数
{
"accessToken": "",
"workId": "HZ28858f8137db82018137ebd76b0032",
"trackId": "HZ28858f8137db82018137ebd76b0033",
"title": "项目合同申请",
"comment": "同意",
"actionData": {
"operate": "submit",
"operateClazz": "com.horizon.wf.action.ActionSubmit",
"operateFlag": 0
}
}| 参数 | 是否必须 | 描述 |
|---|---|---|
| accessToken | 是 | 调用接口凭证,唯一用户标识 |
| workId | 是 | 流程实例 id |
| trackId | 是 | 流程路径 id |
| title | 否 | 实例标题,待办标题,为空时默认为流程名称 |
| comment | 否 | 审批意见 |
actionData 数据参数:
| 参数 | 是否必须 | 描述 |
|---|---|---|
| operate | 是 | 提交操作标识,固定值 submit |
| operateClazz | 是 | 提交操作类路径 |
返回状态说明
返回 0:提交成功
返回结果示例:
{
"nextNodeId": "Line2~Node2",
"nextNodes": [
{
"authors": {
"SecondAuthor": {
"authorFlowVar": "",
"authorId": "SecondAuthor",
"authorName": "协办",
"freeArea": "",
"isDefUser": "false",
"isFree": "true",
"isSelect": "true",
"isUser": "false",
"selectType": "checkbox"
},
"Author": {
"authorFlowVar": "",
"authorId": "Author",
"authorName": "主办",
"freeArea": "",
"isDefUser": "false",
"isFree": "true",
"isSelect": "false",
"isUser": "false",
"selectAuthor": "U_HZ28821856ef63420156ef6342a20002/D_HZ28821856ef63420156ef6342a20001",
"selectAuthorName": "用户01(测试部门0)",
"selectType": "radio"
},
"Reader": {
"authorFlowVar": "",
"authorId": "Reader",
"authorName": "读者",
"freeArea": "",
"isDefUser": "false",
"isFree": "true",
"isSelect": "true",
"isUser": "false",
"selectType": "checkbox"
}
},
"isDone": "false",
"isSelect": "true",
"memo": "",
"nodeGroup": "",
"nodeId": "Node2",
"nodeKey": "Line2",
"nodeName": "合同管理员审批",
"nodeStatus": "0",
"selectId": "Line2~Node2",
"selectName": "提交(合同管理员审批)",
"timeLimit": "0",
"timeLimitType": "1"
}
],
"operate": "submit",
"operateClazz": "com.horizon.wf.action.ActionSubmit",
"operateFlag": "0",
"operateMsg": "提交成功",
"operateStatus": "success",
"reOpen": "false",
"status": 0,
"trackId": "HZ28811c9e6811be019ecf98b0f70cc0",
"workId": "HZ28811c9e6811be019ecf98b0f70cbf"
}结果参数说明:
| 参数 | 类型 | 描述 |
|---|---|---|
| nextNodeId | String | 下一节点 id |
| nextNodes | List | 需要选择的节点列表 |
| operate | String | 提交操作标识 |
| operateText | String | 操作显示名称 |
| operateFlag | String | 操作标记 -1:显示关闭,0、1:正常提交 |
| operateMsg | String | 返回操作信息 |
| status | int | 流程操作状态码(0:成功、1:无法获取下一节点、2:提示选择节点、3:办理人为空、4:需要选择人员、5:流程结束、6:子流程未结束、7:流程暂停、8:流程异常终止、9:其他错误提示、16:协办人提交、17:不满足合并节点的离开规则、22:进入规则调用错误、23:离开规则调用错误、24:该节点类型不支持相应的操作、25:启用规则调用错误、26:节点激活失败) |
| workId | String | 流程实例 id |
nextNodes 参数说明:
| 参数 | 类型 | 描述 |
|---|---|---|
| authors | Map | 下节点办理人 map 中 key 为 SecondAuthor、Reader 和 Author,value 为 Author/SecondAuthor/Reader 对象参数 |
| isDone | String | 是否已经走过 |
| isSelect | String | 是否已选择 |
| memo | String | 备注信息 |
| nodeGroup | String | 节点分组,单节点时无值,当前节点有分支节点时,值为上一节点 id |
| nodeId | String | 节点 id |
| nodeKey | String | 节点主键 |
| nodeName | String | 节点名称 |
| nodeStatus | String | 节点状态,限定值:0(成功)、1(选择办理人)、2(选择节点)、3(未找到办理人)、4(未找到下一节点) |
| selectId | String | 需要选择的节点 id |
| selectName | String | 需要选择的节点名称 |
| timeLimit | String | 节点办理时限 |
| timeLimitType | String | 办理时限类型,限定值:0(自然日)、1(工作日) |
authors 中 Author/SecondAuthor/Reader 参数说明:
| 参数 | 类型 | 描述 |
|---|---|---|
| authorFlowVar | String | 流程变量 |
| authorId | String | 办理人 id 固定值 Author/SecondAuthor/Reader |
| authorName | String | 办理人名称:主办,协办,读者 |
| freeArea | String | 自由选择时的范围,对应办理人右侧:办理人为空时,允许选择的范围,格式D;G |
| isDefUser | String | 流程定义列表中选择 |
| isFree | String | 是否自由选择,对应办理人右侧:办理人为空时,允许选择 |
| isSelect | String | 是否允许选择办理人 |
| isUser | String | 是否只允许选择人员 |
| selectAuthor | String | 节点已选择办理人 id |
| selectAuthorName | String | 节点已选择办理人名称 |
| selectType | String | 人员选择类型,限定值:radio(单选)、checkbox(多选) |
| initAuthor | Map | 节点初始化办理人,可选择的办理人;key:others、groups、depts,value:List |
initAuthor value 说明:
[
{
"userFromIconSkin": "D",
"iconSkin": "U",
"userFromName": "测试部门0",
"name": "用户02",
"userFromId": "HZ28821856ef63420156ef6342a20001",
"id": "HZ28821856ef63420156ef6342a20003",
"title": "用户02"
}
]返回 2:请从列表中选择节点
返回结果示例:
{
"nextNodeId": "",
"nextNodes": [
{
"authors": {},
"isDone": "false",
"isSelect": "false",
"nodeGroup": "Node1",
"nodeId": "Node2",
"nodeKey": "Line2",
"nodeName": "任务2",
"nodeStatus": "2",
"selectId": "Line2~Node2",
"selectName": "路由2(任务2)"
},
{
"authors": {},
"isDone": "false",
"isSelect": "false",
"nodeGroup": "Node1",
"nodeId": "Subflow8",
"nodeKey": "Line11",
"nodeName": "子流程8",
"nodeStatus": "2",
"selectId": "Line11~Subflow8",
"selectName": "路由11(子流程8)"
}
],
"operate": "submit",
"operateClazz": "com.horizon.wf.action.ActionSubmit",
"operateFlag": "1",
"operateMsg": "请从列表中选择节点",
"status": 2,
"workId": "HZ28858f8137db820181383ef2a300a1"
}返回 4:请选择办理人
返回结果示例:
{
"nextNodeId": "Line2~Node2",
"nextNodes": [
{
"authors": {
"SecondAuthor": {
"authorFlowVar": "",
"authorId": "SecondAuthor",
"authorName": "协办",
"freeArea": "",
"isDefUser": "false",
"isFree": "true",
"isSelect": "true",
"isUser": "false",
"selectType": "checkbox"
},
"Reader": {
"authorFlowVar": "",
"authorId": "Reader",
"authorName": "读者",
"freeArea": "",
"isDefUser": "false",
"isFree": "true",
"isSelect": "true",
"isUser": "false",
"selectType": "checkbox"
},
"Author": {
"authorFlowVar": "",
"authorId": "Author",
"authorName": "主办",
"freeArea": "",
"isDefUser": "false",
"isFree": "true",
"isSelect": "true",
"isUser": "false",
"selectType": "radio"
}
},
"isDone": "false",
"isSelect": "true",
"memo": "",
"nodeGroup": "",
"nodeId": "Node2",
"nodeKey": "Line2",
"nodeName": "任务2",
"nodeStatus": "4",
"selectId": "Line2~Node2",
"selectName": "路由2(任务2)",
"timeLimit": "0",
"timeLimitType": "1"
}
],
"operate": "submit",
"operateClazz": "com.horizon.wf.action.ActionSubmit",
"operateFlag": "0",
"operateMsg": "请选择办理人",
"status": 4,
"workId": "HZ28858f8137db82018137ebd76b0032"
}再次提交
返回 2:设置节点提交
当上一次操作返回状态码为 2 时,需要设置节点。
将返回的 nextNodes 中需要选择的节点 isSelect 修改为 true,其他参数不动,放入到actionData中重新调用接口即可。
接口调用说明:
| 属性 | 值 |
|---|---|
| HTTP 方法 | POST |
| 请求地址 | http://127.0.0.1:8080/demo/horizon/workflow/rest/flow/support/action.wf |
请求参数:
下面示例为“返回 2:请从列表中选择节点”中返回值修改后再次提交的参数:(仅加注释的部分修改了)
{
"accessToken": "",
"workId": "HZ28858f8137db820181383ef2a300a1",
"trackId": "HZ28858f8137db820181383ef2a300a2",
"actionData": {
"operate": "submit",
"operateClazz": "com.horizon.wf.action.ActionSubmit",
"nextNodes": [
{
"authors": {},
"isDone": "false",
"isSelect": "true",
//仅修改选中的节点为true,nextNodes里的其他参数均为原返回值
"nodeGroup": "Node1",
"nodeId": "Node2",
"nodeKey": "Line2",
"nodeName": "任务2",
"nodeStatus": "2",
"selectId": "Line2~Node2",
"selectName": "路由2(任务2)"
},
{
"authors": {},
"isDone": "false",
"isSelect": "false",
"nodeGroup": "Node1",
"nodeId": "Subflow8",
"nodeKey": "Line11",
"nodeName": "子流程8",
"nodeStatus": "2",
"selectId": "Line11~Subflow8",
"selectName": "路由11(子流程8)"
}
]
}
}actionData 数据参数:
| 参数 | 是否必须 | 描述 |
|---|---|---|
| operate | 是 | 提交操作标识,固定值 submit |
| operateClazz | 是 | 提交操作类路径 |
| nextNodes | 是 | 需要选择的节点列表 |
nextNodes 参数说明:
| 参数 | 是否必须 | 描述 |
|---|---|---|
| isSelect | 是 | 是否已经选择过 |
| nodeId | 是 | 节点 id |
| nodeKey | 是 | 节点路由 |
| selectId | 是 | 需要选择的节点 id 和路由 |
返回 4:设置办理人提交
当上个操作返回状态码为 4 时,需要设置办理人。
在返回的 nextNodes 中,针对需要设置办理人的节点设置selectAuthor和selectAuthorName,其他参数不动,放入到actionData中重新调用接口即可。
下面示例为“返回 4:请选择办理人”中返回值修改后再次提交的参数:(仅加注释的部分修改了)
{
"accessToken": "{{accessToken}}",
"workId": "HZ2881ee90edc96d0190ee3632d6034b",
"trackId": "HZ2881ee90edc96d0190ee3632d6034c",
"actionData": {
"operate": "submit",
"operateClazz": "com.horizon.wf.action.ActionSubmit",
"operateFlag": "0",
"nextNodes": [
{
"authors": {
"SecondAuthor": {
"authorFlowVar": "",
"authorId": "SecondAuthor",
"authorName": "协办",
"freeArea": "",
"isDefUser": "false",
"isFree": "true",
"isSelect": "true",
"isUser": "false",
"selectType": "checkbox"
},
"Reader": {
"authorFlowVar": "",
"authorId": "Reader",
"authorName": "读者",
"freeArea": "",
"isDefUser": "false",
"isFree": "true",
"isSelect": "true",
"isUser": "false",
"selectType": "checkbox"
},
"Author": {
"authorFlowVar": "",
"authorId": "Author",
"authorName": "主办",
"freeArea": "",
"isDefUser": "false",
"isFree": "true",
"isSelect": "true",
"isUser": "false",
"selectType": "radio",
"selectAuthor": "U_HZ28821856ef63420156ef6342a20002",
// 设置主办人ID
"selectAuthorName": "用户01"
//设置主办人名称
}
},
"isDone": "false",
"isSelect": "true",
"memo": "",
"nodeGroup": "",
"nodeId": "Node2",
"nodeKey": "Line2",
"nodeName": "任务2",
"nodeStatus": "4",
"selectId": "Line2~Node2",
"selectName": "路由2(任务2)",
"timeLimit": "0",
"timeLimitType": "1"
}
]
}
}全部请求参数说明
请求参数:
{
"accessToken": "",
"flowId": "flowsupport",
"workId": "HZ2886865bf17466015bf1871de1004b",
"trackId": "HZ2886865bf17466015bf1872089004c",
"subjection": "D_HZ28821856ef63420156ef63429c0000",
"authorKey": "Author",
"comment": "",
"nodeId": "Node1",
"title": "",
"actionData": {
"operate": "submit",
"operateFlag": 0,
"operateClazz": "com.horizon.wf.action.ActionSubmit",
"flowVars": {
"field1": "123"
},
"nextNodes": [
{
"nodeKey": "Line2",
"selectId": "Line2~Node2",
"selectName": "新路由2(任务2)",
"isSelect": "true",
"isDone": "false",
"nodeGroup": "",
"isShowTabs": null,
"timeLimit": "0",
"timeLimitType": "0",
"nodeStatus": "4",
"authors": {
"SecondAuthor": {
"authorId": "SecondAuthor",
"authorName": "协办",
"selectType": "checkbox",
"isFree": "true",
"isUser": "false",
"isDefUser": "false",
"isSelect": "true",
"selectAuthor": null,
"selectAuthorName": null,
"required": null,
"initAuthor": null
},
"Reader": {
"authorId": "Reader",
"authorName": "读者",
"selectType": "checkbox",
"isFree": "true",
"isUser": "false",
"isDefUser": "false",
"isSelect": "true",
"selectAuthor": null,
"selectAuthorName": null,
"required": null,
"initAuthor": null
},
"Author": {
"authorId": "Author",
"authorName": "主办",
"selectType": "radio",
"isFree": "true",
"isUser": "false",
"isDefUser": "false",
"isSelect": "false",
"selectAuthor": "U_admin/D_HZ28821856ef63420156ef63429c0000",
"selectAuthorName": "管理员(慧正通软)",
"required": null,
"initAuthor": null
}
},
"nodeId": "Node2",
"nodeName": "任务2",
"trackId": null
}
]
}
}| 参数 | 是否必须 | 描述 |
|---|---|---|
| accessToken | 是 | 调用接口凭证,唯一用户标识 |
| flowId | 否 | 流程id |
| workId | 是 | 流程实例id |
| trackId | 是 | 流程路径id |
| subjection | 否 | 提交人所属的组织机构id(如部门id、群组id、岗位id等),格式为D_xxxid、G_xxxxid、P_xxxxid |
| authorKey | 否 | 提交人身份标识 |
| comment | 否 | 意见 |
| nodeId | 否 | 节点id |
| title | 否 | 标题 |
| actionData | 是 | 流程操作json数据对象 |
actionData 数据参数:
| 参数 | 是否必须 | 描述 |
|---|---|---|
| operate | 是 | 操作提交标识,固定值submit |
| operateFlag | 是 | 操作标记 -1:显示关闭,0、1正常提交 |
| operateClazz | 是 | 操作提交操作类路径,固定值com.horizon.wf.action.ActionSubmit |
| flowVars | 否 | 流程变量赋值使用,flowVars为map,支持传多个,key变量名,value为变量值 |
| nextNodes | 否 | 需要选择的节点列表(如果已经设置好路由及办理人信息,可以不填) |
nextNodes 参数说明:
| 参数 | 是否必须 | 描述 |
|---|---|---|
| nodeKey | 是 | 节点主键 |
| selectId | 是 | 需要选择的节点id |
| selectName | 否 | 需要选择的节点名称 |
| isSelect | 是 | 是否已选择 |
| isDone | 否 | 是否已经走过 |
| nodeGroup | 否 | 节点分组,单节点时无值 |
| isShowTabs | 否 | 是否显示办理人页签 |
| timeLimit | 否 | 节点办理时限 |
| timeLimitType | 否 | 办理时限类型:0(自然日)、1(工作日) |
| nodeStatus | 否 | 节点状态 |
| authors | 是 | 下一节点办理人对象 |
| nodeId | 是 | 节点id |
| nodeName | 否 | 节点名称 |
authors 中 Author/SecondAuthor/Reader 对象参数说明:
| 参数 | 是否必须 | 描述 |
|---|---|---|
| authorId | 否 | 办理人类型id:Author(主办)、SecondAuthor(协办)、Reader(读者) |
| authorName | 否 | 办理人名称 |
| selectType | 否 | 人员选择类型:radio(单选)、checkbox(多选) |
| isFree | 否 | 是否自由选择 |
| isUser | 否 | 是否只允许选择人员 |
| isDefUser | 否 | 流程定义列表中选择 |
| isSelect | 否 | 是否允许选择办理人 |
| selectAuthor | 是 | 节点已选择办理人 |
| selectAuthorName | 是 | 节点已选择办理人名称 |
| required | 否 | 办理人必填标识 |
| initAuthor | 否 | 节点初始化办理人id |
