.NET 开源工作流: Slickflow流程引擎高级开发(七)--消息队列(RabbitMQ)的集成使用
前言: 工作流流程过程中,除了正常的人工审批类型的节点外,事件类型的节点处理也尤为重要。比如比较常见的事件类型的节点有:Timer/Message/Signal等。本文重点阐述消息类型的节点处理,以及实现消息驱动流程过程中对消息队列(RabbitMQ)的集成使用方式。 1. 节点间消息传递 1.1 MessageThrow 消息抛出节点,当执行到这个节点时,特定消息主题的消息记录将会添加到消息队列,然后等待被订阅的消息消费者来激活消息处理服务。 1.2 MessageCatch 消息接收节点,消息接收节点上定义了消息主题,并且在消息队列中订阅了该主题。当有特定主题的消息被发布时候,消息消费者会捕获到消息主题,同时消息处理服务中,将会定位到流程的该节点位置,然后通过流程服务来判定下一步的流转流转。 1.3 单一流程内的节点消息传递 该流程只进行消息的发布或者接收,而消息的另外一方则可能是业务系统。两者之间的关联是靠消息主题来识别。如下图所示: 1.4 跨流程间的节点消息传递 通常可以用泳道流程来表示跨流程间的消息通知。泳道流程中,有多个流程,其中一个是泳道主流程,其它的则为泳道附属流程。将会在下面的章节中具体描述。 2. 跨流程消息传递 2.1 泳道流程 泳道流程中,使用多个泳道来区分不同的流程,流程之间可以通过消息来传递信息,如下图所示: 2.2 消息节点类型