最近从事工作流引擎的设计与开发工作,准备在学习标准入手,从而更深入的了解工作流。俗话说“教学相长”,希望一起讨论,一起成长。如果文中有错误或者版权问题,请指出,谢谢!
XPDL是xml工作流定义语言,使wfmc制定的一个国际标准,期望建立一个统一的标准,并且通过此标准,能够让不同的流程引擎能够相互交户。
wfmc工作流定义的元模型如下图:
图中的方框,我们称之为实体(entity),其中Activity这里翻译为活动,Participant翻译为参与者,relevant data翻译为关联数据。
1.1. XPDL实体概述
数据模型呈现了工作流定义中的最基本的组成实体,下面逐个对每个实体简单介绍一下:
1.1.1. 工作流定义
工作流定义为工作流中其他实体提供了上下文描述,包含自身信息,流程制定人和管理者的信息,或者是流程运行时需要用的数据,比如说初始化参数、流程限制时间、检查点、需要通知的人等。
1.1.2. 工作流活动(Activity)
工作流是由一个或多个活动组成的,每个活动都是由一个有逻辑的、自包含的工作组成。活动体现为工作,工作可以是参与者参与的,也可以是计算机的应用程序。其他的可选的信息包含活动是否由流程管理系统自动开始或者结束,活动相对于同一个流程中其他活动的对资源的优先级,活动也可以指定流程中特殊的关联数据,也可以指定为一个子流程。
一个活动可以包含子流程,子流程可以是同一个流程引擎解析,也可以是远程调用其他流程引擎解析。子流程定义清楚了该子流程包含的活动、trasition、参与者等信息。子流程成中的关联数据可以作为子流程输入和输出。
活动可以包含一个活动块,这个活动块执行一组活动,活动和活动之间有Transition,这些活动与transition共用相同的命名空间。
1.1.3. Transition信息
活动与活动之间通过Transition连接的。一个Transition有三部分组成,起始活动(From-Activity)、终止活动(To-Activity)以及转换条件(Condition),连接活动与活动之间的Transition可以通过条件判断是否允许通过。Transition能连接串行的或者并行的活动。Transition的连接类型有split和join两种。Split是指由活动分出去的类型,Join是连接到活动的类型。
1.1.4. 工作流参与者定义
参与者定义了各个关卡的执行者,参与者可以为预先定义好的人、也可以为计算机的应用程序或者是计算机设备。参与者为人时,不一定是一个人,也可以为一组人。
1.1.5. 资源库
资源库使得参与者能够为人、设备或者是应用程序,经典的资源库就是组织模型。
1.1.6. 工作流应用程序定义
工作流应用程序定义的是一个工作流程、或者活动能调用的应用程序或者是接口。这些应用程序可能是设备、企业中其他应用程序或者是接口。工作流应用程序定义指的是连接工作流引擎的应用程序或者接口,其中包含需要传递的参数。
1.1.7. 工作流关联数据
流程执行过程中流程实例产生或者用到的数据,这些数据可能作用于运行过程中的活动,也可能是用于显示的数据,也可能是用于决定活动与活动之间Transition中条件的数据,也可能是用户获取参与人的数据。XPDL定义了基础或者复杂类型的关联数据,活动、应用程序、Transition中的条件会引用这些数据。
1.1.8. 系统与环境数据
系统与环境数据是通过工作流管理系统或者本地系统维护的,这些数据可以被活动访问到,也会用户Transition中条件的判断。
1.1.9. 数据类型和表达式
工作流模型定义了一组数据类型,比如字符型、引用型、整型、浮点型、日期型等,这些类型将会用于定义关联数据、环境数据以及参与者数据。通过这些类型的数据,Transition中的条件能执行表达式。数据类型能通过xml或者扩展资源扩展。
1.1.10. 流程与包
上图所示,流程由各种各样的实体组成,通常情况下,参与者、关联数据经常会被多个流程引用到。数据模型呈现了关联工作流管理系统的,控制组成流程的各种类型实体的流程定义的库的用处。
包就是一个容器,包含了一些公共属性,比如作者、版本、状态等。包中的每个流程定义都可以继承这些公共属性,如果他们自己定义了,则不再继承。
包中会定义一些全局的实体,以便其他流程可以引用,这些实体一般为:
n 工作流参与者
n 工作流应用程序定义
n 工作流关联数据定义
包允许引用包内部定义的实体,也可以引用其他包定义的东西,比如:
n 其他包中的流程id作为子流程
n 工作流参与者定义
本文地址:http://com.8s8s.com/it/it36198.htm