- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EOS工作流引擎工作原理
工作流基础知识
EOS工作流引擎工作原理
本文是我在工作之余写的一点我对EOS工作流的了解,我的理解不一定全是对的,可能会与引擎的真正的面目有出入。所以只能提供给大家一点参考。
EOS工作流引擎核心调度算法
EOS工作流最重要的组成部分是它的核心调度算法,在我们没有深入研究它的工作原理之前我们认为它的工作原理是在工作项,活动和流程实例对象上加了一些标志位来驱动流程的运转。认为其引擎完全是个由数据库来驱动流程的引擎(安徽二期的工作流平台好象就是以库表来驱动流程的运转),其实它是由事件来驱动流程运转的引擎,数据库只是把引擎运转前后的状态持久化。在我近来在工作之余对其引擎的工作原理进行跟踪才弄明白在EOS帮助文档上介绍的“事件驱动”的工作流引擎。
EOS工作流引擎的事件类型
事件名称
事件代码
START_PROCESS:启动流程
1001
SCHEDULE_NEXT_ACTIVITY:由线程来启动下个活动实例
1002
BACKWORD_ACTIVITY:回退活动
1003
SUSPEND_PROCESS:流程挂起
1004
RESUME_PROCESS:启动挂起流程
1005
CHANGE_PROCESS_STATE:改变流程状态
1006
TERMINATE_PROCESS:终止流程
1007
ABORT_PROCESS:
1008
FINISH_PROCESS:结束流程
1009
PRESTART_ACTIVITY:重起流程
2000
START_ACTIVITY:启动活动实例
2001
RESTART_ACTIVITY:重起活动实例
2002
CHANGE_ACTIVITY_STATE:改变活动实例状态
2003
FINISH_ACTIVITY:结束活动实例
2004
TERMINATE_ACTIVITY:终止活动实例
2005
ABORT_ACTIVITY:
2006
SUSPEND_ACTIVITY:挂起活动实例
2007
RESUME_ACTIVITY:启动挂起的活动实例
2008
SUSPEND_WORKITEM:挂起工作项
3001
RESUME_WORKITEM:启动挂起工作项
3002
CHANGE_WORKITEM_STATE:改变工作项状态
3003
FINISH_WORKITEM:结束工作项
3004
TERMINATE_WORKTIEM:终止工作项
3005
ABORT_WORKTIEM:
3006
EXCEPTION_PROC_TIMEOUT:流程超时事件
4002
EXCEPTION_PROC_REMIND:流程临近超时事件
4003
EXCEPTION_ACT_TIMEOUT:活动超时事件
4004
EXCEPTION_ACT_REMIND:活动临近超时事件
4005
APPLICATION_RETURN:
5001
以上的每个事件都是原子的不可分割的。其中一系列事件的集合通过EOS引擎事件调度机制实现我们平时在工作中经常遇到的如启动流程,结束工作项等等。(在事件类型类中EOS定义了29种事件,但在事件工厂类中EOS定义了26种类型。)
EOS工作流事件调度机制
EOS事件的调度服务是在工作流引擎初始化时通过服务工厂类加载到内存中(ServiceFactory.initEventService())。用户可以通过服务工厂类(ServiceFactory)取得JVM的唯一事件服务实例进行事务调度。所有的事件程序入口都是事件类(EventService),这个类其实是个接口,其有两个实现类,一个是单线程的实现类SingleThreadEventService(在实现代码中其实不是单线程,而是单例的对象),一个是多线程的实现类MulThreadThreadSvc,(其实现方式不在这里详细说明,多线程的类后面又跟了一大堆的线程池实现代码),在事件服务类中有一个属性类是WFEventDisposer,这个类包含了事件的注册,事件的发布,事件的注册是一个静态代码块实现的。注册了上节描述的29种事件,其实就是把相应的事件代码注册到相应的处理类,事件处理类共用5个(ProcessScheduler,ActivityExecuter,ExceptionHandler,WorkItemHandler,ApplicationHandler),对应事件代码的前5个数字;共有事件的发布有两种,一种是正常发布,一种是无异常的发布(即在具体执行事件时关闭了异常处理)。所谓的事件发布是给事件服务类传递一个事件对象(WFEvent类),这个事件对象包含了事件类型,线程名,事件ID,流程定义ID,活动定义ID,活动实例ID,和工作项ID等等。
以上简要的描述了事件模型,下面来拿我们平时用的最多的一个构件:
您可能关注的文档
- C厂房纯水站控制画面操作说明西门子wincc系统.doc
- 《分析化学》第八章沉淀滴定法知识讲义.ppt
- 《生物杂交育种和you变育种》农科站科普资料.ppt
- 万能分度头分项操作使用说明书.doc
- 三种考场常见类型的作文写作指导 含成长励志类等.ppt
- 《抽样与抽样分布》1-3节课堂知识汇总及典型例题.doc
- 中医妇科学妇人腹痛病因机理及诊病分析.ppt
- 中国传统国学文化常识贰佰题.doc
- 中泰矿冶有限公司电石车间突发事故现场处置应急预案本.doc
- 各种型材钢管公称压力(MPa)管道壁厚对照表.doc
- 鹤壁山城鹤鑫化工有限责任公司“9·29”较大中毒事故调查报告.pdf
- 露天矿山边坡稳定性分析评估工作指南.doc
- 汽车先进动力系统技术发展报告(2025版).pdf
- 中国人寿财产保险股份有限公司福建省(不含厦门)商业性奶牛养殖淘汰保险条款.doc
- 1.3 美国内战 课件 2025--2026学年统编版九年级历史下册.pptx
- 4.14 法西斯国家的侵略扩张 课件 2025-2026学年统编版九年级历史下册.pptx
- 6.21 冷战后的世界格局 课件 2025---2026学年统编版九年级历史下册.pptx
- 第14课《古诗二首 绝句》-课件-2025-2026学年二年级语文下册统编版.pptx
- 19.《蜘蛛开店》--(课件)-2025-2026学年二年级语文下册统编版.pptx
- 18.《大象的耳朵》第2课时(课件)-2025-2026学年二年级语文下册统编版.pptx
原创力文档


文档评论(0)