全局流程事件
场景描述
定义全局流程事件,作用于每个流程,不必在每个流程中重复定义
实现思路
定义全局流程事件文件,在其中指定流程动作,及处理方法
操作步骤
定义全局流程事件
全局流程事件文件的后缀为: g.process.trait。例如:在service/main目录下添加一个xx.g.process.trait文件,定义全局流程事件为:在流程回退前执行数据备份。代码如下:
{
"listeners": [{
"action": "backProcessQueryAction",
"event": "before",
"handler": "invokeHttpProcedure",
"params": {
"template": [{
"method": "POST",
"url": "${dataUrl}/backup",
"headers": {
"Accept": "application/json",
"Content-Type": "application/json"
},
"body": {
"condition": {
"key": ["${sData1}"]
},
"option":{
"cascade":true
}
}
}]
}
}]
}
JSON内容说明
- listeners:定义监听器
- action:监听流程哪个动作,参考业务流程动作
- event:before在流程执行动作前执行,after在流程执行动作后执行
- handler:处理方法,目前均使用invokeHttpProcedure方法
- params:处理方法的参数
- template:参数模板,可定义多个,顺序执行
- url:处理方法的url,例如数据备份的url为:${dataUrl}/backup
- template:参数模板,可定义多个,顺序执行
处理方法invokeHttpProcedure中可用的变量
- dataUrl: 流程关联数据的dbrest地址
- sData1,sData2,sData3,sData4: 业务数据
- operatorID,operatorCode,operatorName: 当前操作者
- process,procesLable,activity,activityLabel,action: 当前流程,环节,动作
- pi: 流程实例标识
- task: 当前任务标识
- postscript: 当前审批意见
- 流程上定义的自定义变量
触发全局流程事件
发布应用,让process.trait起作用,发布后调试运行和正式运行都可以使用(后续会提供界面编辑process.trait文件,以及支持在开发时立即生效)
调试运行或正式运行时执行相应的流程动作时,会触发全局流程事件;
g.process.trait是所有应用都起作用的,如果只要定义全局事件的应用服务起作用,把名字改为s.process.trait