流程状态通知方案
- 2021-01-16 17:28:18
- 邱喜达 原创
- 1239
1.1 场景描述
每个任务审批完成后,需要调用外部系统的接口,把本系统的参数传递到外部系统进行存储。
1.2 场景流程图
1.3 引用功能
流程管理:流程后置脚本、流程变量、常用脚本
1.4 操作步骤
1.4.1 新增后置脚本
在bpmRunTime模块中找到ScriptImpl类,在类中新增流程状态通知的方法,在方法中可以通过ActionCmd cmd = ContextThreadUtil.getActionCmd();获取到cmd对象,cmd中有流程相关的变量,如流程实例ID、流程变量、动作,详细可查看附录1.5或代码。
把获取到的流程相关变量,通过RestTemplete发送到对应外部系统的接口。部分代码如下。
1.4.2 添加脚本到系统
在【流程中心】>【辅助功能】>【常用脚本】中,点击添加,在弹框中填写名称,然后在脚本输入框中填写响应脚本,如return scriptImpl.noticeByUrl(“http://192.168.1.174:8088/bpm/complete”),点击测试,测试通过后选择脚本分类为系统脚本,点击保存,把新写的脚本添加到系统中去。
1.4.3 流程中选择后置事件
点击选择需要进行状态通知的节点,点击更多设置>事件脚本设置>设置事件脚本>后置事件>常用脚本>选择刚才添加的脚本,最后点击保存。在任务在该节点审批完成后即可调用此脚本,然后脚本把参数传递到外部系统。
1.4.4 添加流程变量
除了直接在脚本中添加参数进行传参,也可以通过在流程设置流程变量进行配置。
在流程编辑页面,选择变量管理,添加全局变量,设置相应的Key、类型和默认值后保存。如果使用接口启动流程,可以修改变量的值。
在脚本中就可以通过cmd.getVariables()获取配置的流程变量。
1.5 附录
ActionCmd方法描述
方法 |
描述 |
getVariables() |
流程变量 |
getGateways() |
当前线程记录已添加的网关堆栈 |
getFormKey() |
表单Key |
getTransitVars() |
临时变量 |
getBpmIndentities() |
下一步节点执行人 |
getDestination() |
目标节点 |
getInstId() |
流程实例ID |
getNotifyType() |
通知类型 |
getDataNode() |
业务数据模式 |
getBusData() |
bo的json数据 |
getBusinessKey() |
业务主键 |
getActionName() |
动作名称 |
getDataPair() |
业务数据对 |