Fire Workflow 模型的设计思想

    XPDL、BPMN、BPEL 的流程模型都有一个共同的特点,就是没有区分模型中的工作流逻辑和业务逻辑。

    业务逻辑是指某个具体的业务操作,例如填写一张表单,调用一个WebService 服务,发送一个消息等等。

    工作流逻辑是指对这些业务逻辑的某种编排方案,例如先执行哪个业务操作,然后执行哪个业务操作,哪些可以并行等等。

FireWorkflow 模型的核心思想是将两种逻辑解偶。

    下面以一个请假流程来讲解一下这两种模型的区别,该业务规则如下:

    首先由请假人提出申请;请假申请提交到部门经理处审批;审批通过后到人力资源部登记备案。(暂且不考虑审批不通过的情况。)

    这个业务用XPDL 建模,其流程图如下。这个流程图和UML 中的活动图差别不大,都是从宏观的抽象的层次描述了业务。我认为这种模型便于分析但是不利于执行。其根源在于流程元素的职责划分不清,在XPDL 中,Activity承担了太多的职责,可以代表一个人工活动,也可以代表一个自动的程序调用,还可以代表一个子流程,还可以是一个复杂的路由等等。

2010040413025921.png

图ii-2-1 XPDLworkflow process

    如果用FPDL 建模,则稍有不同。FPDL 认为一个系统是由工作流子系统和业务子系统构成,流程的执行是实际就是控制权在这两个子系统之间转移。如果用圆圈表示工作流子系统的操作,用方框业表示务子系统的操作。那么请假流程如下图。

2010040413040066.png

图ii-2-2FPDL workflow process

该流程图的执行过程描述如下:

    首先,工作流子系统启动一个新的业务流程实例,然后创建一个新的任务实例——“申请”,并将控制权交给业务子系统,业务子系统等待申请人填写表单。

    申请人完成表单后,控制权再次被交给工作流子系统,由它决定下一步的路由。这个工作是由称为Synchronizer 的元素完成的(图中标有"S" 的圆圈)。在这个业务示例中,它通过计算得出下一步操作是“部门经理审批”。于是创建一个名字叫做“部门经理审批”的任务实例,并将控制权交给业务子系统,业务子系统等待部门经理做审批操作。

    部门经理完成后,控制权又被转移到工作流子系统,由工作流子系统决定下一步,如此反复直到流程实例终结。

    上图转换成一般的FPDL 流程图如下

2010040413054139.png

图ii-2-3FPDLworkflow process-2

    FPDL 似乎把问题复杂化了,实际上不是的,FPDL 把是把职责分解了。在FPDL 中,Activity 代表业务活动,完全不关心工作流如何分支、汇聚等工作,所有的工作流相关的运算全部委托给Synchronizer 处理,由他来决定路由。

    FPDL 这种清晰的职责划分在复杂的流程中体现出强大的优势,例如,把上述案例再丰富一下:如果请假天数不大于3天,则部门经理审批即可;如果大于3天,则必须提交给公司经理审批。

    这个流程用XPDL 建模如下图。在这个图中“部门经理审批Activity ”需要执行分支运算,“人力资源备案Activity ”必须执行汇聚运算。

2010040413072159.png

图ii-2-4

    如果用FPDL 建模,流程图如下。在这个流程图中,各个流程元素的职责更加清晰,代表业务活动的Activity 仅完成与业务相关的操作,分支汇聚等工作流运算由Synchronizer 完成,如图中的S1 和S2 。

2010040413080448.png

图ii-2-5

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/lwzblog/archive/2010/04/04/1704124.html

BPMNXPDL和BPEL是三种流程建模语言,用于描述业务流程和工作流程。这些语言都有各自的特点和用途。 BPMN(Business Process Model and Notation,业务流程建模和标记)是一个广泛使用的标准,用于描述业务流程的各个方面,包括活动、事件、网关、连线等。它提供了一种直观和易于理解的图标,可以帮助业务分析师和技术人员共同理解和设计业务流程。BPMN具有可扩展性,支持不同层次的详细程度,从高层次的概念模型到详细的流程实现。 XPDL(XML Process Definition Language,XML流程定义语言)是一种基于XML的流程建模语言,用于定义和交换工作流程模型。它提供了一种通用的格式,使不同的流程管理系统能够共享和交换流程定义。XPDL支持多种类型的节点和连接,允许细粒度的流程定义和控制。它还包含了与其他标准的集成,如BPMN和WfMC。 BPEL(Business Process Execution Language,业务流程执行语言)是一种用于描述和执行业务流程的编程语言。它在BPMNXPDL的基础上更加强调执行层面,提供了一种可编程的方式来定义和组织业务流程的执行。BPEL支持各种类型的活动、事件、条件和异常处理,并提供了与Web服务的集成能力。它可以作为中间件或引擎,驱动实际的业务流程执行和协调。 总的来说,BPMNXPDL和BPEL是为了不同的目的而设计的流程建模语言。BPMN用于描述和设计业务流程的概念模型XPDL用于定义和交换工作流程模型,而BPEL用于编程和执行业务流程。这些语言在业务流程管理和工作流引擎中有着广泛的应用,可以帮助组织更好地理解、设计和执行其业务流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值