AgileBPM 扩展的事件与 Activiti 原声事件类似,在任务创建和任务结束时执行。用于指定时机触发业务逻辑的执行、通知。
事件时机
- 任务前置事件: 任务创建时执行,比如 A 节点完成,B 节点创建时,B 节点配置的前置脚本将会触发执行
任务后置事件: 任务完成时执行,比如 A 节点任务提交,那么会触发后置事件脚本的执行(这里不论是 同意、反对、驳回,完成事件均会被执行)
流程启动事件: 只能配置在开始节点,在流程启动或者子流程启动时执行
- 流程终止事件: 只能配置在结束节点,在流程/子流程 正常终止时执行的脚本(人工终止时不会执行)
- 人工终止事件: 只能配置在结束节点,在触发人工终止按钮点击后执行
事件调用方式
远程HTTP调用
以 http 请求的形式调用远程服务接口,调用时会中继鉴权 token 信息,支持同时调用多个服务接口,在微服务中支持分布式事物。
您可以参考案例模块的方法 DemoController.httpEvents
了解 HTTP调用 用法。
调用方式
- 异步:以事物消息的方式,流程提交后执行调用。
- 同步: 及时反馈结果,支持设置流程变量、终止流程提交等指定后续动作(若设置多个同步调用,需要全部成功流程才得以正常流转,且最后一个返回参数才有效)。
传输变量
勾选必要的传输变量,以便在调用时传输对应的参数,如非必要建议不要勾选 “流程变量”。
事物消息
事物消息会在流程提交后异步调用业务接口。
使用前请确保已经开启事物消息,事物消息具体使用也请参考事物消息文档。
请参考案例方法 DemoManagerImpl.orderComplete
的注解 @AbMessage(subscribeKey = "orderComplete")
,把 subscribeKey 配置到流程事件中 “事务消息 KEY” 中即可。
本地ServiceBean调用
调用应用中 SpringContext 中的 bean,格式为 springBeanId.method ,如:bpmScriptUtil.changeStatus
请依赖 wf-api 模块, 方法入参为 ActionCmd ,可参考案例代码 DemoManagerImpl.testInvoke(), 配置为 demoManager.testInvoke
Groovy 脚本调用
建议不同业务模块单独创建常用脚本,用于相关流程的事件调用,新建常用脚本请参考 流程脚本介绍