- 4
- 0
- 约1.05万字
- 约 18页
- 2017-05-04 发布于四川
- 举报
EOS工作流引擎工作原理
1.?工作流基础知识
……
2.?EOS工作流引擎工作原理
本文是我在工作之余写的一点我对EOS工作流的了解,我的理解不一定全是对的,可能会与引擎的真正的面目有出入。所以只能提供给大家一点参考。
2.1.?EOS工作流引擎核心调度算法
EOS工作流最重要的组成部分是它的核心调度算法,在我们没有深入研究它的工作原理之前我们认为它的工作原理是在工作项,活动和流程实例对象上加了一些标志位来驱动流程的运转。认为其引擎完全是个由数据库来驱动流程的引擎(安徽二期的工作流平台好象就是以库表来驱动流程的运转),其实它是由事件来驱动流程运转的引擎,数据库只是把引擎运转前后的状态持久化。在我近来在工作之余对其引擎的工作原理进行跟踪才弄明白在EOS帮助文档上介绍的“事件驱动”的工作流引擎。
2.1.1.?EOS工作流引擎的事件类型
?
以上的每个事件都是原子的不可分割的。其中一系列事件的集合通过EOS引擎事件调度机制实现我们平时在工作中经常遇到的如启动流程,结束工作项等等。(在事件类型类中EOS定义了29种事件,但在事件工厂类中EOS定义了26种类型。)
1.1.1.?EOS工作流事件调度机制
EOS事件的调度服务是在工作流引擎初始化时通过服务工厂类加载到内存中(ServiceFactory.initEventService())。用户可以通过服务工厂类(ServiceFactory)取得JVM的唯一事件服务实例进行事务调度。所有的事件程序入口都是事件类(EventService),这个类其实是个接口,其有两个实现类,一个是单线程的实现类SingleThreadEventService(在实现代码中其实不是单线程,而是单例的对象),一个是多线程的实现类MulThreadThreadSvc,(其实现方式不在这里详细说明,多线程的类后面又跟了一大堆的线程池实现代码),在事件服务类中有一个属性类是WFEventDisposer,这个类包含了事件的注册,事件的发布,事件的注册是一个静态代码块实现的。注册了上节描述的29种事件,其实就是把相应的事件代码注册到相应的处理类,事件处理类共用5个(ProcessScheduler,ActivityExecuter,ExceptionHandler,WorkItemHandler,ApplicationHandler),对应事件代码的前5个数字;共有事件的发布有两种,一种是正常发布,一种是无异常的发布(即在具体执行事件时关闭了异常处理)。所谓的事件发布是给事件服务类传递一个事件对象(WFEvent类),这个事件对象包含了事件类型,线程名,事件ID,流程定义ID,活动定义ID,活动实例ID,和工作项ID等等。
以上简要的描述了事件模型,下面来拿我们平时用的最多的一个构件:结束工作项来详细跟踪它的事件处理。结束工作项可能是最具有代表性的一个流程动作,因为在做这个时间后遍历了整个流程实例的流程:
1,?用户通过引擎的API调用WorkItemManager类的finishWorkItem方法,该方法通过服务工厂取得持久层的数据访问服务,并根据workitemID取得WFWorkItem对象。做相关的判断后通过事件工厂类的createFinishWorkItemEvent方法创建个事件代码为3004的事件对象(WFEvent)。然后通过服务工厂类取得事件服务类把该事件对象发布给事件处理服务。从此刻就开始了EOS事件调度服务的运转。
2,?事件服务类(拿单线程事件服务类做例子)拿到这个事件类后把该事件通过WFEventDisposer发布该事件。具体的发布过程很简单,即判断该事件类型是否已注册,如果已经注册则取到改事件代码的注册类。该代码是3004,则应取WorkItemHandler。然后调用WorkItemHandler的invoke()方法,
3,?WorkItemHandler类invoke()中写到:if(event.getType() == 30004) {finishWorkItem(event);}则找到该方法,该方法开始做了相关的判断后做相关标志位的修改:置当前工作项的状态为12,然后判断当前活动是否结束。(大概的算法是取得已经结束的工作项和该活动总的工作项,取得活动定义的多工作项是否启动。如果是多工作项则判断完成个数策略:是按百分比还是按操作员个数等等,做一系列的判断后得到应该结束的工作项,如果小于等于已经结束的工作项则该活动结束,没有启动多工作项则相应的处理要简单点),如果该活动已完成,则调用事件服务的结束活动实例事件createFinishActivityEvent;如果没有结束则判断工作项启动的策略是“at_the_same_time”还是“one_by_one”,如果
您可能关注的文档
最近下载
- 广东省深圳市深圳实验学校等校联考2024-2025学年九年级下学期开学考试语文试题(含答案).docx VIP
- 急性心梗转运流程图解.pptx
- 2025年房地产经纪人房地产市场特点综合案例分析专题试卷及解析.pdf VIP
- 党员领导干部2025年度民主生活会对照检查材料范文.docx VIP
- 2025年演出经纪人保护未成年人艺人的特殊义务与权利专题试卷及解析.pdf VIP
- ALINCO DR-635中文操作手册.pdf
- 2025年AWS认证Fargate网络隔离与安全组精细化配置专题试卷及解析.pdf VIP
- 2025年房地产经纪人市场比较法与其他估价方法(收益法、成本法)的混合应用专题试卷及解析.pdf VIP
- 2025年项目管理专业进度绩效指数在应对“黑天鹅”事件中的弹性分析专题试卷及解析.pdf VIP
- 【高考数学】2025年高考数学二级结论篇(核心知识背记手册).pdf
原创力文档

文档评论(0)