JBPM介绍与项目搭建
JBPM,全称是JavaBusinessProcessManagement(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,它使用要遵循LGPL(GNULesserGeneralPublicLicense)和EULA(JBossEndUserLicenseAgreement)协议。
JBPM在2004年10月18日,发布了2.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个组成部分,它的名称也改成JBoss jBPM。随着jBPM加入JBoss组织,jBPM也将进入一个全新的发展时代,它的前景是十分光明的。它的业务逻辑定义没有采用目前的一些规范,如WfMC´s XPDL, BPML, ebXML, BPEL4WS等,而是采用了它自己定义的JBoss jBPM Process definition language (jPdl)。jPdl认为一个业务流程可以被看作是一个UML状态图。jPdl就是详细定义了这个状态图的每个部分,如起始、结束状态,状态之间的转换,过图型化的流程定义,直观地描述业务流程。 JBPM的另一个特色是它使用Hibernate来管理它的数据库。Hibernate是目前Java领域最好的一种数据存储层解决方案,只要是 Hibernate 支持的数据库, jBPM 也就支持。通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于业务逻辑的处理。
使用JBPM开发工作流的一般流程
1) 、jBPM的运行需要数据库的支持,因此系统设计时要选定所用数据库。只要是Hibernate支持的数据库,jBPM就支持。数据库的初始化可以由jBPM自动完成,也可以通过ant generate.ddl任务生成SQL语句,在jBPM外部自己创建所需的表。
2)、使用jPdl定义工作流,生成processdinination.xml文件。可以采用GUI工具gpdl,但目前只支持jBPM1.0,而且bug很多。XML的DTD定义文件在jBPM下载包中。
3)、Antcreate.pde生成pde包的工作目录。将processdinination.xml文件和其它需要的文件放在指定的目录下,使用antbuild.precess.archives生成pde包。pde包的格式采用jar。
4)、更改pde工作目录/src/config/jbpm.properties的相关属性,主要是设定相关的数据库连接信息。注意要将数据库的JDBC驱动放在pde工作目录的lib目录下。
5)、Antdeploy.process.archives将刚才生成的pde部署到数据库。实际上就是向数据库插入一些相关数据。
6) 、利用jBPM API函数开发相应的工作流程。JBPM环境的搭建
1、下载JDK、Eclipse、Tomcat、MySql
2、搭建JBPM框架
jBPM包可以从http://labs.jboss.com/jbossjbpm/downloads下载所得,打开此页面可以看到有很多的包可以下载入图所示:
大致可以分为三类,比如有JPDL(JBPM的描述语言)、JPDL DESIGNER(流程设计器),jbpm-<version>.zip(核心引擎和身份组件);但是通常我们只要下载一个jbpm-starters-kit-<version>.zip(新手工具箱)就可以拥有以上所有的包;
下载完新手工具箱之后,解压此工具箱,目录层次入图所示:
Jbpm文件夹中主要存放了关于JBPM的文档和自带例子的源码;jbpm-db文件夹中主要存放了针对不同数据库的JDBC驱动和HIBERNATE的配置,进入此文件夹下,还可以根据ANT命令针对不同数据库得到不同的创建JBPM的数据库的SQL脚本文件;jbpm-designer文件夹存放了eclipse插件,用于开发JBPM流程定义文件和创建JBPM的工程; jbpm-server文件夹是一个自带的JBOSS应用服务器,通过运行此文件夹中的start.bat批处理文件可以启动服务器,服务器启动完毕后可以通过访问http://localhost:8080/jbpm体验自带的JBPM例子。
3、建立JBPM工程
首先安装用于开发JBPM工程的ECLIPSE插件;
打开jbpm-designer下的jbpm-gpd-feature文件夹,复制Eclipse文件夹中的所有文件到你的ECLIPSE根目录中;
启动ECLIPSE;
新建一个JBPM的工程FILE->NEW->OTHER,可以看到如图所示:
双击process Project填写工程名称:
选择JBPM的HOME路径:
确定后就生成了一个JBPM的工程。如图:
工程生成后,Eclipse会自动导入JBPM用到的包,其中scr/main/java用于存放工程的核心代码;scr/main/config/用于存放一些配置文件,例如Hibernate配置文件、Spring配置文件等;scr/main/jpdl用于存放工作流的定义文件;scr/test/java用于存放JUNIT代码。