背景
基于工作流的表单流转,在某些特定的环节,需要执行一些业务逻辑处理。例如动态分配节点处理人、发送邮件或短信给待办用户、统计流程处理时长判断是否超时,以及业务层面数据处理(例如,在请假流程中将部门领导审批环节的审批意见和时间数据写入到申请表单中)。
这些业务逻辑可以分为两大类,一类是通用处理逻辑,适用于所有流程,例如发送邮件或短信给待办用户;另一类则是与某个业务流程绑定的业务逻辑,通常是业务层面的数据处理。
技术参考
对于环节的业务逻辑处理,Camunda产品提供了监听器机制来支撑这部分功能实现。
有两种监听器,执行监听器和任务监听器,分别用于处理流程实例和任务实例的生命周期事件。
执行监听器
执行监听器允许你在流程执行过程中发生某些事件时执行外部Java代码或计算一个表达式。可以捕获的事件有:
- 启动或结束一个流程实例。
- 进行一个过渡。
- 启动或结束一个活动。
- 启动或结束一个网关。
- 启动或结束一个中间事件。
- 结束一个 start event 或启动一个 end event.
注:第二条中的过渡,词面意思晦涩,实际是单词Transition的翻译,从上下文语境看,具体是指边Sequence Flow,即可以在边上指定一个执行监听器。
任务监听器
任务监听器被用来在某个任务相关事件发生时执行自定义的Java逻辑或表达式,只能作为用户任务的一个子元素添加到流程定义中。
注意:任务监听器只能加载用户任务类型的节点上&#x