<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
jPDL
业务流程模型
理解现实生活中的业务流程
下面我们通过一个简单的部门借款流程来了解现实中的业务流程概念,流程图如下:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
上图表达了一个抽象的流程定义(
Process Definition
)。之所以称之为抽象,是因为它没有表示确切的执行者。当上述的借款人被具体化为“张三”,部门主管就成为张三的部门经理“李四”,而财务则明确为“王五”的时候,这个流程定义就被具体化,成为了一个流程实例(
Process Instance
)。此外,过程中的相关人员我们称之为参与者(
Actor
);过程中需要参与者介入的环节称之为任务(
Task
);每个任务在流程实例中的具体化称之为任务实例(
Task Instance
);从一个任务(结点)到另一个任务(结点)的转化过程叫做流转
(Transition)
;
而在流程中,由程序预先设定的行为如发送邮件,我们称之为活动(
Action
)。
通过上述样例,我们了解了业务流程中一些专有名词和概念。接下来,我们要从程序设计的角度来讲述
jPDL
中定义的流程对象模型。
在
jPDL
中,对流程的建模被划分为两大部分,一是针对“流程定义”的静态模型部分;二是针对具体“流程实例”的运行时动态模型。在这一章节,我们将详细的讲述
jPDL
的对象及对应的数据库设计。
静态的流程定义模型
编号
|
PD-001
|
对象
|
流程定义实体(
Process Definition
)
|
描述
|
流程定义实体是对一个流程抽象的对象化定义,如图
-002
。一套系统中,用户可以定义保存多个流程定义实体,如:报销流程定义、请假流程定义、人事录用流程定义等。每个流程定义还可以有多个不同的版本,如
:
针对同样的报销流程可以有修订前和修订后的两个流程定义,同时存储于
jPDL
数库中。用户可以通过流程名称和版本号获取相应的流程定义。在默认请况下,系统启用最新的流程定义。
|
Java
对象
|
org.jbpm.graph.def.ProcessDefinition
|
数据库表
|
JBPM_PROCESSDEFINITION
该表存储流程定义的通用信息,如:流程名称、版本号
|
表关联说明
|
JBPM_PROCESSDEFINITION
表中,每条记录有自己的数据库流水号
ID_JBPM_PROCESSDEFINITION
的外键(
Foreign Keys
):
|
编号
|
PD-002
|
对象
|
流程结点(
Node
)
|
描述
|
流程结点是对流程中的过程环节
/
行为的抽象对象化定义,如图
-002
中的每个方框即代表一个结点。结点有两个主要职责:一,实现某个指定行为,这在
jBPM
中就是执行一段制定的
Java
代码;二,转递、维持流程的延续,直至达到最终结点。在
jPDL
的结点设计中,系统开放了充分的用户行为模型,程序员可以基于这些行为接口,实现自定义的业务功能。在
jPDL
中,系统预定义了一系列的
Node
类型,同时也允许程序员开发定义自己的
Node
类型。
|
Java
对象
|
org.jbpm.graph.def.Node
|
数据库表
|
JBPM_NODE
该表存储结点的定义信息。
|
表关联说明
|
JBPM_NODE
表中,每条记录有自己的数据库流水号
ID_JBPM_NODE
的外键(
Foreign Keys
):
|
转载于:https://blog.51cto.com/haidao/235203