eos工作流引擎原理

eos工作流引擎原理

ID:30323855

大小:280.00 KB

页数:10页

时间:2018-12-29

eos工作流引擎原理_第1页
eos工作流引擎原理_第2页
eos工作流引擎原理_第3页
eos工作流引擎原理_第4页
eos工作流引擎原理_第5页
资源描述:

《eos工作流引擎原理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用标准文案EOS工作流引擎工作原理1.工作流基础知识2.EOS工作流引擎工作原理本文是我在工作之余写的一点我对EOS工作流的了解,我的理解不一定全是对的,可能会与引擎的真正的面目有出入。所以只能提供给大家一点参考。2.1.EOS工作流引擎核心调度算法EOS工作流最重要的组成部分是它的核心调度算法,在我们没有深入研究它的工作原理之前我们认为它的工作原理是在工作项,活动和流程实例对象上加了一些标志位来驱动流程的运转。认为其引擎完全是个由数据库来驱动流程的引擎(安徽二期的工作流平台好象就是以库表来驱动流程的运转),其实

2、它是由事件来驱动流程运转的引擎,数据库只是把引擎运转前后的状态持久化。在我近来在工作之余对其引擎的工作原理进行跟踪才弄明白在EOS帮助文档上介绍的“事件驱动”的工作流引擎。2.1.1.EOS工作流引擎的事件类型事件名称事件代码START_PROCESS:启动流程1001SCHEDULE_NEXT_ACTIVITY:由线程来启动下个活动实例1002BACKWORD_ACTIVITY:回退活动1003SUSPEND_PROCESS:流程挂起1004RESUME_PROCESS:启动挂起流程1005CHANGE_PROC

3、ESS_STATE:改变流程状态1006TERMINATE_PROCESS:终止流程1007ABORT_PROCESS:1008FINISH_PROCESS:结束流程1009PRESTART_ACTIVITY:重起流程2000START_ACTIVITY:启动活动实例2001RESTART_ACTIVITY:重起活动实例2002CHANGE_ACTIVITY_STATE:改变活动实例状态2003FINISH_ACTIVITY:结束活动实例2004TERMINATE_ACTIVITY:终止活动实例2005ABORT_

4、ACTIVITY:2006SUSPEND_ACTIVITY:挂起活动实例2007RESUME_ACTIVITY:启动挂起的活动实例2008SUSPEND_WORKITEM:挂起工作项3001RESUME_WORKITEM:启动挂起工作项3002CHANGE_WORKITEM_STATE:改变工作项状态3003FINISH_WORKITEM:结束工作项3004TERMINATE_WORKTIEM:终止工作项3005ABORT_WORKTIEM:3006EXCEPTION_PROC_TIMEOUT:流程超时事件4002

5、EXCEPTION_PROC_REMIND:流程临近超时事件4003EXCEPTION_ACT_TIMEOUT:活动超时事件4004EXCEPTION_ACT_REMIND:活动临近超时事件4005精彩文档实用标准文案APPLICATION_RETURN:5001以上的每个事件都是原子的不可分割的。其中一系列事件的集合通过EOS引擎事件调度机制实现我们平时在工作中经常遇到的如启动流程,结束工作项等等。(在事件类型类中EOS定义了29种事件,但在事件工厂类中EOS定义了26种类型。)1.1.1.EOS工作流事件调度机

6、制EOS事件的调度服务是在工作流引擎初始化时通过服务工厂类加载到内存中(ServiceFactory.initEventService())。用户可以通过服务工厂类(ServiceFactory)取得JVM的唯一事件服务实例进行事务调度。所有的事件程序入口都是事件类(EventService),这个类其实是个接口,其有两个实现类,一个是单线程的实现类SingleThreadEventService(在实现代码中其实不是单线程,而是单例的对象),一个是多线程的实现类MulThreadThreadSvc,(其实现方式不

7、在这里详细说明,多线程的类后面又跟了一大堆的线程池实现代码),在事件服务类中有一个属性类是WFEventDisposer,这个类包含了事件的注册,事件的发布,事件的注册是一个静态代码块实现的。注册了上节描述的29种事件,其实就是把相应的事件代码注册到相应的处理类,事件处理类共用5个(ProcessScheduler,ActivityExecuter,ExceptionHandler,WorkItemHandler,ApplicationHandler),对应事件代码的前5个数字;共有事件的发布有两种,一种是正常发布

8、,一种是无异常的发布(即在具体执行事件时关闭了异常处理)。所谓的事件发布是给事件服务类传递一个事件对象(WFEvent类),这个事件对象包含了事件类型,线程名,事件ID,流程定义ID,活动定义ID,活动实例ID,和工作项ID等等。以上简要的描述了事件模型,下面来拿我们平时用的最多的一个构件:结束工作项来详细跟踪它的事件处理。结束工作项可能是最具有代表性的一个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。