工作流系统之三十九 利用工作流引擎给业务系统建模

长平狐 发布于 2012/10/11 18:38
阅读 47
收藏 1

工作流软件系统,都会包含一个工作流引擎,流程设计器等。工作流引擎是工作流系统的微内核,是多种业务流程的抽象。工作流引擎设计的好坏,直接影响到流程的功能。

工作流引擎包含一些基本的节点,利用这些节点组合出各种各样的路由结构,利用这些路由结构来标识各式的业务流程,也就是说利用这些基本的节点能给业务流程建模,流程引擎能建立并解释这些节点,并利用用户输入,自动执行,定时执行,外部调用等等使得流程得以递进,达到流程的流转。所以要理解一套工作流软件系统产品,首先必须要理解流程引擎的这些基本节点,才能将大千世界中各式各样的业务流程表达出来,即给业务流程建模。

 

工作流引擎中包含基本的节点:

步骤:  表示业务环节,例如 登记,审核 等等,都可以认为是一个步骤。如果我们把工作流比喻成一条从起点站驶向终点站的公共汽车路线,那么步骤就相当于汽车站台。在给一个具体的业务流程建模时,首先要定下这个流程中有那些步骤,就象首先要定下公交线路中那些地方设置站点一样。


动作:    表示工作流中每一步骤中需要处理的事,通常为用户输入,自动执行,外部调用等等。动作挂接业务模块,动作的执行(包含业务模块的提交)导致业务流程的递进。


动作结果:工作流中每一个动作执行完毕以后都有一个结果,结果导向另外的步骤,这样达到流程的递进。动作的结果在工作流系统中是一个很重要的概念。公共汽车停站下客就好比一个动作,动作完成以后,开向下一站,或者加油,或者返程等等就都是动作结果。
        

条件:    按设置的条件返回的结果决定不同的路由方向。条件为true时,导向有条件结果,条件为false时,导向无条件结果。


有条件结果/无条件结果:
     在eworkflow中动作结果分为有条件结果和无条件结果。有条件结果中设置条件表达式,或者执行业务规则判断,返回true时,导向有条件结果关联到的下一步;返回false,则执行无条件结果关联到的下一步。每个动作都必须包含一个无条件结果和0到多个有条件结果。


循环:    用有条件结果导回原来的路径,构成一个封闭的回路,这样来构成一个循环路由。当工作流运行时,如果满足动作结果的条件,就一直会在循环路由中进行,只有当不满足条件了,才能跳出循环,继续执行。用这种循环路由加上定时器的轮询处理,能达到自动执行循环的效果。


任务:  当流程实例到达步骤时产生任务,任务和动作一样,是步骤中待要处理的事,只是任务是通过执行动作来完成的。在eworkflow工作流软件产品中,任务节点不是必须的,只是对动作节点的一个分类和关联。任务分为竞争型,直接指派型,会签型,平均分配型,还可以按需扩展出自己的类型。在流程建模时,可以指派任务的执行人,参与人,抄送人等。


静态分支:是指需要并行处理多件事情而没有先后顺序。在eworkflow工作流软件产品中,就是到达静态分支后,平行分支成流程设计时的多个步骤节点。

 

动态分支:是指需要没有先后顺序的并行处理多件事情,只是每条分支中处理事情的轨迹是一样的,在流程建模时,只需要设计一条模版分支,在每个流程实例到达分支之前,需要动态的得到这次的动态分支个数,到达分支后,根据模版分支路线加动态分支个数,动态复制出多个分支,这些分支的执行是没有先后顺序的。

 

静态合并:和静态分支匹配,将多个静态分支合并成一个节点。

 

动态合并:与动态分支匹配,将动态分支的多个线路合并成一个节点。

 

子流程:  就象子函数一样,是一个独立的流程,嵌入到主流程中,和主流程有同步和异步执行这样的属性。和主流程有传入和传出的参数。

 

自由流:  流程不按照流程定义的轨迹流转,而是可以自由的跳转。当由分支跳入主干时候,会自动关闭其它分支的当前步骤和任务,当分支是嵌套的则只关闭和本分支相关的所有下级分支的当前步骤和任务。

 

回退流:  当流程运行到一定的轨迹后,可以任意回退到原来的步骤。和自由流一样,由分支回退到主干上,则关闭所有本分支的下级当前步骤和任务,包含嵌套的所有下级。当由主干回退到分支上时,则只生成此分支的当前步骤和任务,即重做本分支的任务和步骤。

 

工作流实例状态:    这是一个虚拟的概念,是流程实例的当前状态,当前步骤id+步骤的状态=流程实例的状态。当动作发生后,流程实例的状态也会发生改变。工作流实例状态的改变达到流程的递进。


这些基本的节点和概念是对业务流程基本信息的抽象,工作流引擎正利用这些抽象的节点和概念给具体的业务流程建模。

 

下面是一个条件路由的流程建模界面:


原文链接:http://www.cnblogs.com/webreport/archive/2011/03/21/1990265.html
加载中
返回顶部
顶部