BPM消息队列

 

1.Message:所有消息的基类。

2.MessagePool:消息池。包含多个消息队列,并对外提供方法管理消息。

3.MessageQueue:消息队列,消息都会存储在这个类中。

  bpm系统中:一共存在4中消息队列

  (1)WaitingQueue:等待处理的消息队列  

    (2)RollbackQueue:被打回的消息队列

    (3)SuspendedQueue:被挂起的消息队列

    (4)DisposingQueue:正在处理的消息队列

当添加一个消息时会往等待处理的队列中添加一条消息

当获取一个消息时:会优先获取等待处理的消息,当没有等待处理的消息,则会获取被打回的消息

当独占模式时,同一个类型的消息只能有一个在处理 其他会被挂起添加至被挂起的队列中,当消息处理完(或者打回)则会唤醒该类型的被挂起的消息

4.MessageWrapper:消息持久化对应的数据库类,启动引擎时;会获取数据库的消息数据。关闭引擎时会把当前未处理的消息保存到数据库中

消息池定义在InstanceManager类中:

主要提供的方法:

SendMessage:添加一条消息

SaveMessage:保存当前的消息到数据库中。关闭引擎时才会调用

ReallocateMessages:添加多条消息

PeekMessage:获得一条消息

MessageDisposed:处理完一条消息

RollbackMessage:打回一条消息

 

 

1.MessageDisptacher:消息处理类。

 

OnWork方法:后台有线程会每隔1s循环调用,这里是消息处理分发的入口

 BPM系统的消息类型:

 

 其中Message、InstanceMessage、ActivityMessage类为抽象类

 Message定义了MessageType属性,用于消息的第一级分发

 InstanceMessage是继承于Message类的抽象类,MessageType为ForwardInstance,该类定义了InstanceMessageType属性,用于消息的第二级分发

 ActivityMessage是继承于InstanceMessage类的抽象类,InstanceMessageType为ForwardActivity,该类定义了ActivityMessageType,用于消息的第三季分发

 

3.消息分发流程

MessageDisptacher类主要处理的是创建流程,激活流程或者取消流程的事件

SmarkWorkflow类主要处理的是与流程实例相关的操作,例如:启动流程实例、结束流程实例、取消流程实例、流程实例异常、激活流程实例等

SmartActivity类主要处理的是与流程节点相关的操作,例如:激活流程节点、结束流程节点、流程节点操作、取消流程节点、调整流程节点参与者等

 

posted @ 2018-06-06 11:39  陈若青  阅读(280)  评论(0编辑  收藏  举报