相关资料:
概述:
jBPM(JBoss
Business Process Management业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。
jPDL是构建于jBPM框架上的流程语言之一。在jPDL中提供了任务(tasks)、待处理状态(wait
states)、计时器(timers)、自动处理(automated
actions)…等术语,并通过图型化的流程定义,很直观地描述业务流程。
jPDL可以部署于Java语言的任何应用环境下,JavaSE
Application(Swing/SWT)、JavaEE
Application(Application Server)
jPDL分发包组成
目前jPDL的最新版本是3.2.2,您可以在以下地址:http://labs.jboss.com/jbossjbpm/jpdl_downloads/
获得官方下载包。下载包分为两种,一种是标准包(jbpm-jpdl-3.2.2.zip)只有20M左右;一种是套件包(jbpm-jpdl-suite-3.2.2.zip)将近80M。两者最大的区别是套装包自带一个已经配置好的jboss服务,下载解压缩后,可直接运行。
jPDL的核心程序包(jbpm-jpdl.jar)
它是一个典型的jar文件,它涵盖对流程定义和运行时流程实例上下文环境的操作API。在最简化的业务流程样例中,jPDL将流程定义存储与XML格式的定义文件中,在运行时载入内存,在内存里记录完整的业务实例和执行过程的环境变量,并完成全部操作。显然,在实际应用中,流程信息必须被持久化的存储于数据库中。jPDL使用了Hibernate作为其对象持久化的API。
Graphical Process Designer插件(jbpm-jpdl-designer-3.1.2.zip)
它是一个基于Eclipse的图型编辑插件。使用它可以对业务流程进行可视化的定制,而无须手动编辑XML文件。该插件还提供了流程定义上传功能,可以将新定义的流程发布到在线运行的jPDL系统上。
jPDL身份包(jbpm-identity.jar)
它是jPDL的一个轻量级扩展包,简单实现了组Group、用户User、许可权Permission等用户身份认证和鉴权机制。如果您的应用环境只需要简单的用户认证鉴权管理,那么它十分适合您。
jPDL Web控制台(jbpm-console.war)
它是一个标准Web应用(使用了JSF技术),提供了对jPDL平台执行情况的监控程序(对jPDL数据库的监控)。管理员可以通过该程序方便的维护jPDL的数据库,管理流程定义和流程实例的执行情况。同时,它还提供了一个简单的Getting
started DEMO,方便初学者了解jPDL。
其他相关目录
在解压后的目录中,还有一些文件是很有用的
/config 该目录存放了jPDL的默认配置文件
,包括hibernate.cfg.xml 、jbpm.cfg.xml(jPDL的主配置文件,默认是空的)、jbpm.mail.templates.xml(邮件模板配置文件)、log4j.properties(日志配置文件)
/db 该目录存放了jPDL针对不同数据库的表初始化sql文件。这里要说的是,jbpm.jpdl.mysql.sql在MySql下批量运行时,会出现错误提示,原因是语句后缺少”;”号,需要修订后才能使用。
/ designer(套件包中才有)
该目录存放了Graphical Process Designer插件
/examples 该目录存放了jPDL的简单范例
/doc 该目录存放jPDL
的相关说明文档,包括用户指南、Java API文档等
/server (套件包中才有)
该目录存放了配置好的jBoss和控制台程序,Windows下双击start.bat可立即执行。数据库使用HSQL,存放于/server/server/jbpm/data下。
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_JBPMPROCESSDEFINITION的外键(Foreign
|
编号 | PD-002 | ||||||||||||||||||||||||
对象 | 流程结点(Node) | ||||||||||||||||||||||||
描述 | 流程结点是对流程中的过程环节/行为的抽象对象化定义,如图-002中的每个方框即代表一个结点。结点有两个主要职责:一,实现某个指定行为,这在 jBPM中就是执行一段制定的Java代码;二,转递、维持流程的延续,直至达到最终结点。在jPDL的结点设计中,系统开放了充分的用户行为模型,程序 员可以基于这些行为接口,实现自定义的业务功能。在jPDL中,系统预定义了一系列的Node类型,同时也允许程序员开发定义自己的Node类型。 | ||||||||||||||||||||||||
Java对象 | org.jbpm.graph.def.Node | ||||||||||||||||||||||||
数据库表 | JBPM_NODE该表存储结点的定义信息。 | ||||||||||||||||||||||||
表关联说明 | JBPM_NODE表中,每条记录有自己的数据库流水号
ID_JBPMNODE的外键(Foreign
| ||||||||||||||||||||||||
Java对象 | org.jbpm.taskmgmt.def.Task | ||||||||||||||||||||||||
数据库表 | JBPM_TASK该表存储流程定义中声明的任务对象。 | ||||||||||||||||||||||||
表关联说明 | JBPMTASK表中,每条记录有自己的数据库流水号ID
JBPMTASK的外键(Foreign
| ||||||||||||||||||||||||
Java对象 | org.jbpm.taskmgmt.exe.TaskInstance | ||||||||||||||||||||||||
数据库表 | JBPM TASKINSTANCE该表存储运行时任务实例信息。 | ||||||||||||||||||||||||
表关联说明 | JBPM TASKINSTANCE表中,每条记录有自己的数据库流水号ID
JBPM TASKINSTANCE的外键(Foreign
|