流程启动、任务完成、服务编排 场景的骚操作

文档原地址:
启动流程接口如:流程启动,流程保存草稿,草稿启动,催办,人工终止等流程实例等相关操作

任务处理接口如:同意,驳回,反对,锁定,解锁,转办等相关操作

流程启动的一些方式

一、通过已有数据接口启动流程:

Swagger 接口地址 http://localhost:8080/swagger-ui.html#!/bpm-instance-controller/doActionUsingPOST
在线表单,URL表单均支持

post /bpm/instance/doAction

eg:

{
"defKey": "jdlc1",
"businessKey": "URL表单业务主键",
//data 在线表单业务 对象JSON
"data": {
"ycsq": {
"tjr": "王小二"
}
},
"action": "start",
"extendConf": {
"isUrgencyTask": "false"
},
"opinion": "请注意,情况复杂!",
"variables":{"流程变量KEY";"启动时携带流程变量"}
}

二、通过URL地址,启动流程

支持配置到自定义列表,等任意打通了鉴权的前端页面
具体地址请启动流程后,右键查看URL地址,请务必注意启动地址必须用key启动,否则可能启动旧版本的流程
如:https://test1.agilebpm.cn/bpm/instance/start/yongyinshenqing

三、携带业务数据主键ID启动流程

用于已有业务对象启动流程,他会启动时自动加载该业务对象的数据,直接发起流程申请
URL地址后面添加 bizId=id 即可
/bpm/vueForm/start.html?defKey=jdlc1&bizId=id

任务完成的一些方式

任务完成接口

Swagger 接口测试地址 http://localhost:8080/swagger-ui.html#!/bpm-task-controller/doActionUsingPOST_1

post /bpm/instance/doAction

eg:

{
"action": "agree",
"data": {},
"opinion": "我通过接口操作同意动作",
"taskId": "425860173614546945",
"variables": {"variableAAA":"aaa"}
}

任务批量完成接口

Swagger 接口测试地址 http://localhost:8080/swagger-ui.html#!/bpm-task-controller/doActionsUsingPOST_1

post /bpm/task/doActions

eg:

[
{
"action": "string",
"businessKey": "string",
"data": {},
"defId": "string",
"defKey": "string",
"destination": "string",
"extendConf": {},
"formType": "string",
"instanceId": "string",
"nodeUsers": {},
"opinion": "string",
"taskId": "string",
"variables": {}
}
]

服务编排场景的一些数据传递方案

一、流程变量

启动,或者任务处理都支持设置流程变量,流程变量在流程实例生命周期中都可以使用
而且流程变量支持主子流程共享的设置,可以在主子流程间交互,具体请看流程全局插件,流程变量插件的配置

二、业务对象

AgileBPM 的业务对象可以在流程运行时直接使用,启动时携带业务对象即可,HTTP事件支持传递业务对象,并支持反馈更新后的业务对象
BpmPluginGlobalInvokeResultDto.resetBusData ,返回 该值后会对业务对象进行更新操作

流程自由跳转

自由跳转可以通过节点跳转插件来实现,除此之外还可以通过 前端、后端等方式设置跳转。

前端方式

  1. 接口启动时可直接指定跳转路径,在启动接口的 destination 参数,详见启动swagger文档,
  2. 在线表单中直接对请求参数赋值
    如在任务提交前、流程启动前赋值: this.flowRequestParam.destination = "nodeId"
    也可以在表单中双向绑定该属性,在表单中让用户选择跳转路径。

后端方式

首先建议使用节点跳转插件来做的,除此之外也有其他方式。
后端跳转主要是通过对流程运行参数 ActionCMD.distination 的设置 来实现跳转
比如在表单初始化插件-后置脚本时机,插件可以拿到cmd参数,如在表单初始化插件-后置脚本 actionCmd.setDestination('nodeId')

流程常用查询语句

用于排查问题的常用 sql


-- 可以通过流程实例页面地址查看流程实例ID
select * from bpm_instance where id_ = '415214883793534977';

-- 通过流程实例ID查任务
select * from bpm_task where inst_id_ = '415214883793534977';

-- 查询完整的执行栈
select * from bpm_task_stack where inst_id_ = '415214883793534977';

-- 查询 ACT 任务
select * from act_ru_task where PROC_INST_ID_ = (select act_inst_id_ from bpm_instance where ID_ = '415214883793534977')

-- 查询 ACT 多实例情况
select * from act_ru_execution where PROC_INST_ID_ = (select act_inst_id_ from bpm_instance where ID_ = '415214883793534977')

-- 查询 ACT 流程变量
select * from act_ru_variable where PROC_INST_ID_ = (select act_inst_id_ from bpm_instance where ID_ = '415214883793534977')