Activiti流程引擎学习笔记
工作流程
在一个工作群组中,为了达成某一个共同目的而需要多人协力以循序或平行工作的形式来共同完成的任务
任务
泛指各种事务上所必需执行的流程性工作。
循序或平行工作
工作的流动性是一个人接着一个人执行,或同时由多人分开执行,或是上述两类工作合并之后的混合性工作。
多人
若是单人就可以完成的工作,则不能归类为流程工作。凡是一件工作必须经由两个或更多人来协力完成的工作才能称为流程工作。
共同目的
多人参的流程性工作,必须是以完成共同目的为前提。如果一群人是分别针对不同的专案来执行各别的工作,并不算构成一个工作流程。
在一般的组织活动中,有相当多数量的事务性工作可以被归类到流程性工作的范围里面,举例如下:
采购单流程
贷款审核流程
员工绩效考核流程
工作报表呈报流程
各类报表会签流程
首先要定义出在一个群组工作的环境下,所需要执行或控管的事务性工作性质及其内容。
根据所定义的工作内容,再将它分成许多子工作,或称为步骤。
每个步骤都都包含了在这个阶段所需要完成的项目清单,而且这些步骤内的项目应当是在逻辑上适合在同一步骤内完成的。
任何一件流程工作都会有许多不同的方法来分解成许多子工作,而如何切割一个流程工作,则要根据实际的情况来做判断;
决定各个步骤需要那些专业背景的人员来执行;
决定各个步骤在流程执行时的顺序;
在执行的过程中,有些步骤的执行会因为某些条件不同而产生不同的结果,进而影响到下一个步骤的执行。所以我们必须要找出这些特定的步骤,并且将相关的执行状态条件定义清楚;
将工作流程中的所有执行步骤及每个步骤之间的关系图画出来,并且根据这份关系图来验证流程的可行性。
根据各个步骤的不同需求,分别建立各阶段所需要的表单,工作指令,文件……等项目。
一般而言,所有的WfMS都将包含如下三大功能模块:建立时功能、运行时控制功能、同用户及应用程序的交互功能。
主要目标是通过某种分析、建模及系统定义手段将现实世界的业务过程转化成某种能够被计算机处理的形式化表示。
这种形式化表示,我们就称之为过程定义(也称过程模型、过程模板、过程元数据等)。
过程定义中一般都包含有对业务过程中的各个活动步骤的描述、同这些活动相关的各种计算机或人工操作、以及在各活动之间进行切换的各种控制规则。
过程定义所定义的,实际上就是控制工作流过程执行的各种参数。
主要进行在某个计算环境中工作流过程的管理及各活动步骤之间的状态转换。
运行时控制系统将解释过程定义,完成过程的可操作实例的创建及控制,调度过程中各活动步骤,为所涉及到的用户生成待其处理的任务,并在合适的时机调用有关的应用程序资源,等等。
这些服务我们一般就称之为“工作流执行服务”,有些系统可能是通过一个工作流引擎提供这些服务,而在另外一些系统则可能会用到多个协作的工作流引擎。
工作流引擎是工作流运行时控制系统的核心部分,各种过程实例的执行都是由它负责完成的。
主要完成对工作流实例执行过程中各种活动的处理。
在过程实例的执行过程中,经常需要用户通过某种应用程序来完成过程定义所要求完成的处理或操作,例如填写一个表单,或使用某个应用程序(如字处理软件、绘图软件等)生成新的文档或处理其他活动传递过来的文档等。
另外工作流执行服务也可能需要自动的调用有关的应用对数据进行处理,如将某些数据写入到某个数据库系统中、调用某个应用程序对数据进行某种转换等。
在不同的WfMS中,工作流执行服务所能访问的应用或资源可能是不一样的,如有些WfMS可能不提供此种能力,有些可能只能访问本地的应用或资源,有些则可能通过某种远程调用机制(如RPC或对象代理等)去访问其他机器上的资源。
所有这些构成了运行时交互功能的主要内容。
结构化工作流指的是在实际工作过程中会反复重复、严格按照某个固定的步骤进行的业务过程。定义此种工作流所需要的各种类型的信息可以通过对业务过程进行详细的分析而得到,从而得到完整的过程定义并在以后的应用过程中反复使用。大量的办公程序,如公文处理、审批等都属此类。
即席工作流则是针对那些重复性不是很强或没有重复性的工作流程的,关于这类流程执行所需的有关参数(如参加者等)事先无法确定,而必须推迟到过程实例运行时才能确定,同时在执行过程中间还可能会发生一些意外的情况。这种动态多变的特点在提供更高灵活性的同时,也为过程的建模与执行带来更多的复杂性。
前者的侧着点在于将电子形式的文档、图像等在有关的人员之间进行分发,以便能够得到不同人的处理与审阅。现有的文档管理与映像管理系统均属此类。
在面向过程的WfMS中,工作流被描述成一序列执行环节。与各环节相应都有待处理的数据对象。各环节的数据对象可以按不同的方式分发到其他环节中去,如可以将数据对象的值作为控制条件、或者依此数据对象组装成其他的数据对象等。高端的WfMS一般都属此类系统。
前者使用电子邮件来完成过程实例执行过程中消息的传递、数据的分发与事件的通知。低端的系统所使用的经常就是此种方法,它可以充分发挥电子邮件系统在广域环境下的数据分发功能,但整个系统将运行于一种松散耦合的模式下。
在基于数据库的WfMS中,所有的数据都保存在某种类型的DBMS中,过程的执行实际上就是对这些数据的查询与处理。高端的大规模系统所使用的一般都是此种方法。
任务推动工作流指的是从过程的开始逐步地一个环节一个环节的执行,当某个活动实例被处理完之后,后续的有关活动将被创建并被激活,由此直至整个工作流程的完成。这是目前大多数面向过程的WfMS所使用的执行方式。
而在目标拉动工作流的WfMS中,一个业务流程被看成是一个目标。过程实例执行时,该目标将被分解得到多个相互之间按一定约束条件的关联起来的可执行的多个环节,其中各环节还可以当成是子目标而进一步进行分解。在各环节均执行完毕之后,整个过程也就完成了。目标拉动是一种全新的执行方式,下一代的WfMS将具有此种特征。应该说明的是:上述分类只是从不同的角度入手的。一般来说,后面那些特点将给WfMS带来更好的灵活性,同时也将成为那些能够支持跨机构的大规模复杂工作流管理、面向关键任务的WfMS不可缺少的特征。
未完待续