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类主要处理的是与流程节点相关的操作,例如:**流程节点、结束流程节点、流程节点操作、取消流程节点、调整流程节点参与者等