EOS工作流引擎原理.doc
- 格式:doc
- 大小:440.51 KB
- 文档页数:17
1.1 工作流引擎技术工作流概念的提出是人们注意到了隐藏在业务处理的过程控制的共性,并从业务处理操作中分离出过程逻辑单独加以研究,从而可以实现过程优化配置和重组。
但是,多年来,不同的研究者和产品供应商从不同的角度给出了工作流的定义。
下面分别从工作流定义及工作流相关术语进行解释,并分析工作流应用中所遇到的多种模式,提出了工作流参考引擎、处理模型、体系结构等。
1.1.1工作流定义WfMC给出的工作流的定义[21]:工作流(Workflow)是一类能够完全或者部分自动执行的经营过程,根据一系列过程规则,文档、信息或任务能够在不同的执行者之间传递、执行。
工作流是指业务领域的流程,它描述了业务过程中的各个要素以及要素之间的关系。
业务过程则是对工作流的抽象,通过对业务过程中各要素的描述形成过程定义。
过程定义是过程自动化的基础数据,它通过工作流引擎进行管理。
下面将对工作流引擎技术中涉及到的一些基本概念给出其定义。
这些概念包括:工作流引擎、业务过程、过程定义、活动、自动活动、人工活动、实例、过程实例、活动实例、工作流参与者、工作项、工作项列表等。
1.工作流引擎工作流引擎是一个软件系统,它定义、创建和管理工作流的执行,并且运行在一个或多个工作流引擎之上。
工作流引擎能够解释过程定义、实现与工作流参与者的交互并且调用各种外部IT工具和应用。
2.业务过程一个包含一个或多个相关程序或活动的集合,这些程序或活动共同实现一个业务或决策目标。
通常地,业务过程存在于一个定义了职能角色和业务关系的组织结构中。
3.过程定义过程定义是对业务过程的描述,这种描述形式支持诸如建模、通过工作六管理系统执行等操作的自动化处理。
过程定义有活动和它们之间的关系组成,这些活动和关系形成了一个网状结构,并且还包含过程开始和结束条件和各活动的详细信息,如活动参与者、相关应用和数据等。
4.活动活动是对一份工作的描述,它是过程中的一个逻辑步聚。
一个活动可以是手工活动或计算机支持的自动活动,并要求人和/或机器资源配合过程执行。
什么是工作流引擎,工作流引擎有什么作用,为什么需要工作流管理系统,在这里我们主要研究它的好处,你想要理解它的好处,就得知道不使用它会带来什么样的坏处。
现在我们来讲工作流,什么是工作流?所谓的工作流就是通常所说的业务流程,那么所谓的业务流程换句话来讲就是多个人在一起去完成一件事情。
这就可以称之为工作流。
流程的本质就是一个参与者参与到一个过程里面来那么现在我们就想为什么需要工作流管理系统,工作流管理系统能给我们带来什么好处。
我们就从这个角度出发来了解JBPM 工作流引擎下面我们就来看关于为什么需要工作流管理系统,以及它给我们带来的好处。
实际上它带来的好处就是使某些容易变化的东西抽象出去,我们能够通过某种方式改变它,然后你就可以对你的某些核心部分不需要做什么变动现在就通过一个小例子来讲这个工作流引擎到底是一个什么东西 举个请假流程的例子 一个请假的过程重点讲解UML 里面的内容,确定UML 里面流程图的讲解顺序 请假流程 现在只看左边的内容,右边的后面再讲,我是方便讲解就将这点东西放到这个空白的地方一个简单的流程图Main 模拟出请假的过程对提交请假单进行分析用一个用户来表示普通用户和审批者,只不过他们的权限不同,他们都能够登录到这个系统现在我们来看用户和请假单,分析他们之间的关系,用户和请假单之间的联系有请假,用户填了一个请假单就创建了一个请假单对象,他们之该是一对多的关系。
因为某一个用户可以请多次假 对吧(其实一般是一个请假单对应一个请假者,这个需求就应该得到客户的确定,客户说了算)那么用户和这个请假单之间还有没有其他联系?接下来是提交请假单。
我首先将请假单提交给张三,那么张三就能够看到这个请假单,如果用户将请假单提交给张三,那么就可以在张三和请假单之间建立一个待审关系 他们之间的关系也是一对多的关系,因为张三可以同时审核几个请假单,就是这意思,一个请假单等待的用户是一个,从现在的需求来看。
那么两者之间还有另外一个联系那就是已审,一个用户可以审批过多个请假单,请假单也可以被多个用户审批 比如张三审批以后交给李四审批,李四审批以后交给王五审批,其实这个已审就是记录审批信息的,比如审批时间,审批意见,把它放在审批关联里边这个就是一个基本的概念,了解这个概念之后我们就考虑它的设计,JBPM 实际上就是协助我们把这个请假单从一个用户手上转递到另一个用户手上。
什么是工作流工作流(Work Flow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。
工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。
简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。
我们可以将整个业务过程看作是一条河,其中流过的河水就是待审核的表单。
工作流属于计算机支持的协同工作(Computer Supported Cooperative Work,CSCW)的一部分。
后者是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。
许多公司采用纸张表单,手工传递的方式,一级一级审批签字,工作效率非常低下,对于统计报表功能则不能实现。
而采用工作流软件,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下跑,下一级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,大大提高了效率,实现了知识管理,提升了公司的核心竞争力。
fnotes1800工作流图工作流的定义工作流概念起源于生产组织和办公自动化领域,是针对日常工作中具有固定程序活动而提出的一个概念,目的是通过将工作分解成定义良好的任务或角色,按照一定的规则和过程来执行这些任务并对其进行监控,达到提高工作效率、更好的控制过程、增强对客户的服务、有效管理业务流程等目的。
尽管工作流从产生到现在已经取得了相当的成就,但对工作流的定义还没有能够统一和明确,不同学者从不同角度对工作流做出了不同的定义。
Georgakopoulos给出的工作流定义是:工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成。
IBM Almaden Research Center将工作流定义为:工作流是经营过程的一种计算机化的表示模式,定义了完成整个过程需要的所有参数;这些参数包括对过程中每一个步骤的定义、步骤的执行顺序和条件、步骤由谁负责以及每个活动所需要的应用程序等。
EOS中的工作流
杨文明
【期刊名称】《程序员》
【年(卷),期】2008(000)005
【摘要】工作流早在90年代中期就已经出现了,但是直到近些年才真正的在企业中流行起来。
在20世纪90年代初,迈克尔·哈默博士提出了BPR(Business Process Reengineering业务流程重组)概念,他认为以前的那种面向职能部门的管理方式已经不再适合企业的发展,提倡以流程的方式进行管理,
【总页数】1页(P123)
【作者】杨文明
【作者单位】无
【正文语种】中文
【中图分类】TB852.1
【相关文献】
1.工作流设计案例分析-“工学交替”教学系统中工作流设计 [J], 刘翼
2.EOS Workflow:第一家完全构件化的工作流 [J],
3.面向工作流的EOS系统的分析与设计 [J], 李泽宇
4.外周血EOS、总IgE、IL-10及诱导痰EOS在反复喘息婴幼儿喘息评估中的临床意义 [J], 马前进;武怡;陈韬;沙广群;耿玮;薛魁
5.浅谈工作流技术与.NET中的工作流 [J], 汤劼; 施俊
因版权原因,仅展示原文概要,查看原文内容请购买。
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==workflow规则篇一:EOS-WorkFlow参考手册第1章总体说明在使用EOS WorkFlow的过程中,无论是开发者在“开发环境”中定义业务流程,还是“工作流引擎”控制流程流转,或是工作流参与者使用的“客户端”,再或者管理员使用的“管理与监控工具”,在这期间都会贯穿EOS Workflow 的5个主要对象——流程定义、活动定义、流程实例、活动实例以及工作项。
1.1 概念说明流程定义:描述一个完整的业务过程,它由若干活动组成。
包括了流程的基本信息、流程的开始和结束条件、组成的活动、活动间流转的规则、需要用户执行的工作任务(工作项)、可能调用的应用程序以及流程相关数据等信息。
提交到流程定义库(WFProcessDefine)后会包含流程定义ID(流程定义的唯一标识)、流程定义名称、版本号、流程定义描述以及提交时间等描述。
活动定义:包含在流程定义之中,代表了一个相对独立的、逻辑的工作单元。
一个活动代表一个需要由相关资源处理,或者由计算机处理的任务。
其中定义了该活动的基本信息、执行该活动的参与者、时间限制、工作项信息、触发事件、启动策略等信息。
流程实例:当流程定义提交、发布到服务器以后,就可以启动该流程,启动时会创建流程定义的一个实例,叫流程实例。
同一个流程定义可以有多个流程实例。
每一个流程实例会被保存在流程实例库(WFProcessInst)中,包括流程实例ID(唯一标识)、流程实例名称、流程定义ID、流程实例的状态、该实例的启动者、启动时间、相关数据等信息。
活动实例:流程实例中的每个活动称为活动实例。
每一个活动实例会被保存在活动实例库(WFActivityInst)中,包括活动实例ID(唯一标识)、活动实例的状态、所属的活动定义ID以及流程实例ID、时间限制、是否超时、创建时间等信息。
EOS Workflow:第一家完全构件化的工作流
佚名
【期刊名称】《金融科技时代》
【年(卷),期】2007(015)004
【摘要】EOS工作流(Workflow)是与EOS平台无缝集成的业界第一家完全构件化的工作流管理系统(Workflow Management System),能够支撑在大并发用户量、大数据量的企业级应用环境下高效、稳定运行。
【总页数】2页(P109-110)
【正文语种】中文
【中图分类】TP3
【相关文献】
1.企业协同知识管理工作流模型研究——基于action workflow方法 [J], 沈惠敏;柯青
2.基于AutoManager WorkFlow的协同设计及工作流程控制 [J], 郑竹林
3.利用Domino Workflow高效开发完整工作流应用 [J], 武学海
4.Lotus Workflow工作流机制初探 [J], 刁洪滨
5.基于AutoManager WorkFlow的工作流程管理系统的开发 [J], 张阁;林学民;税清路;邹慧君;郭为忠
因版权原因,仅展示原文概要,查看原文内容请购买。
实用文案 EOS 工作流引擎工作原理 1. 工作流基础知识 2. EOS 工作流引擎工作原理 本文是我在工作之余写的一点我对 EOS 工作流的了解,我的理解不一定全是对的,可 能会与引擎的真正的面目有出入。所以只能提供给大家一点参考。 2.1. EOS 工作流引擎核心调度算法 EOS 工作流最重要的组成部分是它的核心调度算法,在我们没有深入研究它的工作原 理之前我们认为它的工作原理是在工作项, 活动和流程实例对象上加了一些标志位来驱动流 程的运转。 认为其引擎完全是个由数据库来驱动流程的引擎 (安徽二期的工作流平台好象就
是以库表来驱动流程的运转) ,其实它是由事件来驱动流程运转的引擎,数据库只是把引擎 运转前后的状态持久化。在我近来在工作之余对其引擎的工作原理进行跟踪才弄明白在 EOS 帮助文档上介绍的“事件驱动”的工作流引擎。 2.1.1. 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 种类型。) 2.1.2. 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 ”,如果是“ one_by_one ”则找本活动实例下的工作项状态为
1 的工作并启动它。 4, 结束活动实例是调用事件工厂的方法createFinishActivityEvent ,新建一个事
件代码为 2004 的事件。用 createFinishWorkItemEvent 的方法发布该事件。
到 ActivityExecuter 类中找到 finishActivity ,该方法修改活动实例状态为 7 ,
标准 实用文案 填写活动结束时间。如果该活动注册了时限则取消活动时限的注册。如果该活 动实例定义了结束活动的触发动作则触发该动作(通过 WFAppCaller 调用)。
最 后 由 事 件 工 厂 产 生 一 个 事 件 代 码 为 1002 的 createScheduleNextActivityEvent 事件。由事件服务发布事件。 5, 启动下个活动实例的事件动作是事件工厂调用 scheduleNextActivity 方法,该
方法通过流程定义找到下个环节的转移条件,并根据转移条件和分支模式(全 部分支: AND ;多路分支: XOR ;单一分支: OR )生成一个环节定义列表。 引擎首先把未启动的活动实例和挂起的活动实例找到,如果没有则生成一个活 动实例。然后生成一个转移对象(WFTransition ),最后把待启动的活动实例
对象放到一个列表中。根据该列表中的活动定义的启动策略(直接启动,待激 活,由规则逻辑指定)来启动活动实例;如果是直接启动活动实例则由事件工 厂新建一个事件代码为 2001 的事件 startActivity ,如果待激活策略则由事件 工厂产生事件代码为 2000 的事件 preStartActivity 。同样如果在流程定义中定 义了创建活动实例触发的事件则触发该事件, scheduleNextActivity 方法做了 很多业务处理的事情,所以比较复杂。 6, 事件服务调用 startActivity 方法,修改当前活动状态位为 2,并向时限管理服 务注册时限,然后通过活动执行类的帮助类分派工作项,分派工作项的过程是 判断是否是多工作项,如果不是则按参与人员分派,如果是则判断多工作项的 启动策略,启动工作项业务处理比较复杂,并没有相应的事件代码对应,在这 里不详细介绍。 以上的六个步骤完成了我们平时最常用的完成工作项的方法。综上所述应该能够对 EOS 工作流的事件调度机制有个清楚的认识,比如结束工作项的事件调度有
标准