流程消息通知功能实现

工作流如何实现消息通知

     在使用工作流引擎的时候,势必会涉及到工作流引擎与业务系统的通知机制。如果说把工作流引擎当做状态机,则不同状态变更的时候,不可避免的会将状态变更的缘由和变更的状态通知给业务系统,然后业务系统接收到这些通知之后进行相应的处理。

     上述的场景是以工作流为主视角去看通知,在实际项目开发中,业务系统可能也会直接触发工作流引擎的状态变更,然后工作流引擎状态变更之后,也会通知业务系统,比如业务系统发送了一个启动流程的消息,工作流引擎收到该消息之后进行实例的启动,然后开始流转。当流程引擎在启动过程中,可能会创建和删除不同的活动实体,则该事件也会通知到业务系统,以此达到交互作用。

     在BPM2.0标准中,没有明确定义工作流引擎该如何与业务系统进行交互,但是规定了每一个元素可以配置通知业务系统的实现类。如何在实现类中实现工作流引擎与业务系统的交互方式和交互通知,是业务系统自身需要考虑的,与工作流引擎和实现厂商没有太大的关系。

     在市面上主流的Java开源工作流引擎中,比如Activiti/Camunda/Zeebe/Flowable采用的是任务监听器、执行监听器和事件监听器三种形式。该三种方式均需要业务系统自我定义个实现。 任务监听器和执行监听器类似,只是作用范围不同,任务执行监听器只能在用户任务上进行配置和使用,执行监听器可以在所有的执行实例树上定义和实现。因为用户任务执行树只是一个特殊的树,因此作用域更窄。

      对于事件监听器,上述的几个框架也有一个通病,比如在任务创建的时候,给特定的APP端发送一个待办通知,可能会遇到用户已经收到了待办通知,但待办任务数据还没有入库的问题。因为默认的事件机制(JMS)与BPM不在一起事务中,因此会导致数据操作的先后顺序不一样。

     接下来看一下盘古BPM工作流引擎怎么实现的通知功能。盘古BPM支持事务消息通知,也支持JMS方式的消息通知机制。

盘古BPM工作流中使用通知

1、首先打开“工作”->"流程管理"->“消息模板管理”,如下图所示:

工作流消息模板

盘古BPM工作流引擎内置了17中事件以及该事件的消息通知模板。

2、打开“首页”->“我的消息”->“查看”即看到所有已经通知的消息,如下图所示:

工作流消息通知

相关教程