工作流控制模型

zjw1029

贡献于2011-04-26

字数:2797 关键词: 工作流引擎

控制模型 工作流引擎是控制中心:引擎控制器是工作流引擎在运行时的控制中心,引擎控制器结构图给出了引擎控制器的控制结构图。 1、调度中心 调 度中心接受从外部接口发送过来有关流程控制的请求(如业务初始化、获取任务以及结束任务等),然后根据不同的请求类型调用相应的处理模块完成与本次请求相 关的操作并将结果返回。也可以需要诸如请求队列等形式的数据结构。因此,事实上可以将调度中心看成一个多线程的并发服务器,它可以对多个外部请求提供并发 服务。对外部请求的处理过程中肯定会涉及到对内部数据结构(即工作流引擎的数据模型),由引擎来实现了多个外部请求之间的独立性。 2、任务管理 任务管理主要根据调度中心的指示完成诸如任务创建、任务状态的转换以及相关数据的维护等工作。每次“结束任务”的外部请求将触发调度中心调用“任务管理”为后继活动(如果存在的话)创建新的实例,其状态为“Pending”;同时,其他不同的外部请求也将触发“任务管理”实施任务状态的切换。 初态 Pending Waiting Processing Pausing 终态创建任务同步完成获取任务结束任务挂起复位汇聚同步 3、任务指派 任务指派处理只是针对常规交互活动,通常情况下,在任务状态由“Pending”切换到“Waiting”过程中完成任务的指派工作。任务指派过程首先根据任务指派基准确定可以执行此任务的群体人员,通常情况下这是一个包含多个人员的集合;然后根据任务指派方法确定由这个群体中的哪些个体来执行任务。 4、依赖检查 依赖检查指的是活动的前依赖规则的检查,调度中心在将任务切换到就绪状态之前将进行相关的前依赖规则检查,只有满足检查条件的任务才可以进行状态的切换。当前活动的启动没有其他约束条件,相应任务可以立即由“Pending”状态转换到“Waiting”状态。 对于“与”汇聚前依赖规则,指明所有参与与汇聚的其他前趋活动,只有所有相关的前趋活动均到达各自指定的结束状态,当前活动方可启动。 对于“或”汇聚前依赖规则,此规则的检查将涉及到首先结束的前趋活动将启动当前活动,后结束的活动将被丢弃。 5、转发控制 当应用发出“结束任务”的外部请求时,该请求将触发调度中心启动“转发控制”。 对于顺序转发以及或分支转发规则,只包含一个活动;对于与分支转发规则,则中将包含多个活动。 6、启动控制 启动控制负责常规自动活动的所对应的自动执行体的启动并对其活动进行监控。 工作流引擎的核心调度算法 1、FSM(有限状态机) FSM 的定义为包含一组状态集(states)、一个起始状态(start state)、一组输入符号集(alphabet)、一个映射输入符号和当前状态到下一状态的转换函数(transition function)的计算模型。当输入符号串,模型随即进入起始状态。它要改变到新的状态,依赖于转换函数。在有限状态机中,会有有许多变量,例如,状态 机有很多与动作(actions)转换(Mealy机)或状态(摩尔机)关联的动作,多重起始状态,基于没有输入符号的转换,或者指定符号和状态(非定有 限状态机)的多个转换,指派给接收状态(识别者)的一个或多个状态等等。 遵循FSM流程引擎通过状态的切换来完成流程的流转。 2、PetriNet 信息流的一个抽象的、形式的模型。指出一系统的静态和动态性质。petrinet通常表示成图。图中有两类用弧彼此相连的结点(称为地点和变换)和指示其动态性能的标记(称为记号)。 遵循PetriNet流程引擎通过令牌来决定流程的流转。 数据模型 通过数据模型,可以方便地描述关键业务的业务规则、活动的依赖关系以及任务的指派等特征。它们都通过统一的关系结构来定义。 数据模型的核心是业务活动(简称活动)ACTIVITY,和过程PROCESS、业务规则(活动流转规则)ROUTING_RULE、活动前依赖规则PRE_RULE、任务指派规则ASSGN_RULE、任务列表TO_DO_TASK_LIST以及已完成的任务列表HAVE_DONE_TASKS。 常见活动类型 每个业务过程由若干业务活动组成,活动类型可以进行如下分类: 1、INITIAL,初始化活动,业务过程的第一个活动,不针对具体业务环节。 2、INTERACTION,常规交互活动,INTERACTION活动对应实际的业务环节,在前台对应实际的应用逻辑,完成此活动需要实际人员的参与。在所有活动类型中,只有INTERACTION活动才需要与实际人员交互。 3、AUTOMATION,常规自动活动,同样对应实际的业务环节,但是实际的应用逻辑位于后台,由工作流引擎自动调用完成。AUTO_EXECUTIVE指明相应应用逻辑的执行体。 4、AND_BRANCH,与分支活动,不针对具体业务环节,此活动将同时派生出若干后继活动。 5、 AND_MERGE,与汇聚活动,是一同步活动,不针对具体业务环节,流经此处的任务将进行与汇聚同步。此活动将进行活动的前依赖规则检查,只有所有的前依赖规则均被满足,才可流向后继活动。 6、OR_MERGE,或汇聚活动,是一同步活动,不针对具体业务环节,流经此处的任务将进行或汇聚同步。它同样将进行活动的前依赖规则检查,但是在前依赖规则只要存在一条满足指定条件的,就可以流向后继活动。OR_MERGE_FLAG用于指定或汇聚条件。 7、VOTE_MERGE,投票汇聚活动,是一同步活动,不针对具体业务环节,同一批次的任务只有达到NUM_VOTES_NEEDED所指定的票数才可流向后继活动。 8、DUMMY,哑活动,不针对具体业务环节,它可以作为某些活动的虚拟后继活动,还可以使用它来构造更为复杂的业务规则。若哑活动有后继活动,则可以立即流向后继活动。 l COMPLETION,终结活动,表明相应业务过程的终结,不针对具体业务环节。 任务队列和已完成任务队列 一个活动可以同时具有多个实例,即任务,这些实例可以是属于同一批次的,也可能属于不同的批次, 工作流引擎中必须提供一种手段将任务与应用实体有机地关联起来,否则,单独的任务将不具有任何实际意义。其取值的真实含义完全取决于应用逻辑的自身解释,例如它可以是某个编号,也可以是某个文件的名字。其值也可以在业务流转过程中被随时改变。 任务队列TO_DO_TASK_LIST用于记录那些已经创建但尚未完成的任务,位于任务队列中的任务具有四种状态:(1)PENDING,任务正处于“与汇聚”同步状态,即正在等待其他相关的前趋任务的结束;(2)WAITING,任务已经就绪,处于“等待处理”的状态;(3)PROCESSING,任务处于“正在处理”的状态;(4)PAUSING,任务处于“暂停”的状态。 已完成任务队列HAVE_DONE_TASKS用于记录那些已经正常结束的任务,COMPLETION_FLAG表示相应任务的结束标记。 已完成任务队列记录那些已经完成的任务。  

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享文档获得金币 ]
0 人已下载

下载文档

相关文档