流程事件插件

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 脚本调用

Groovy 脚本,在脚本中可以使用 插件变量

建议不同业务模块单独创建常用脚本,用于相关流程的事件调用,新建常用脚本请参考 流程脚本介绍