jPDL业务流程模型
 
理解现实生活中的业务流程
       下面我们通过一个简单的部门借款流程来了解现实中的业务流程概念,流程图如下:
上图表达了一个抽象的流程定义(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):
  • startstate_ JBPM_NODE(流程结点)表关联。此外键指向流程定义中的起始结点ID
 
编号
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):
  • processdefinition_ - 此外键说明该Node从属的流程定义对象ID
  • subprocessdefinition_- 此外键指定了一个由该Node发起的子流程。在主流程离开当前结点之前,该子流程必须完成执行过程。action_ - 此外键指定该结点动作类的ID
  • superstate_ - 该外键是一个自关联键,指向结点的上级父结点ID。一个子流程中的多个结点从属于同一个父流程结点。
  • decisiondelegation_ – 该外键指定了结点委派的判定类ID(所谓委派判定类是指根据用户的业务逻辑,判定流程的下一个流向的Java Class