龙v战

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

JBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统。jBPM是公开源代码项目,遵循Apache License。

JBPM的配置还是比较容易的,只是配置的过程有些麻烦,但是只要你具备了一定的基础之后,是非常容易理解。在我刚开始配置的时候,总是“报错”JNDI没有绑定,而不是“信息”JNDI没有绑定,这两者的区别就是:“报错”说明配置有问题,而“信息”则表明我知道可以通过JNDI绑定的方式来实现但是我没有用它。

下面介绍配置的过程,而且,是基于JDBC直连的方式,你就不用考虑配置数据源的问题了。如果这个过程中出现关于数据源(Datasource)的异常信息,说明你又在配置JDBC直连的方式时考虑了数据源的配置。

系统环境

操作系统:Windows XP SP2

JBPM版本:jbpm-jpdl-suite-3.2.3

WEB服务器:Tomcat 6.0

JDK版本:Sun JDK1.6

MySQL:5.0

浏览器:IE 6.0

Ant版本:Ant 1.7.1

安装配置

主要分为两部分:

JDK,Ant,Tomcat,MySQL安装配置过程:略。

另一部分就是jbpm-jpdl-suite-3.2.3的准备工作,详细说明。

1、下载jbpm-jpdl-suite-3.2.3.zip

JBoss jBPM 官方(http://www.jboss.org/jbossjbpm/)当前发布的版本为 3.2.3,只需要下载jPDL Suite,下载后得到jbpm-jpdl-suite-3.2.3.zip,解压缩后得到jbpm-jpdl-3.2.3目录下的如下文件和目录:


└─jbpm-jpdl-3.2.3
    │ jboss.eula.txt
    │ jbpm-identity.jar
    │ jbpm-jpdl.jar
    │ license.txt
    │ readme.html
    │ release.notes.html
    │ x.txt
    │
    ├─config
    │         
    ├─db
    │         
    ├─deploy
    │     
    ├─designer
    │                     
    ├─doc
    │   
    ├─examples
    │                             
    ├─lib
    │     
    ├─server
    │                             
    └─src

 

2、MySQL数据库配置

启动MySQL数据库服务器,我使用root登录,创建一个数据库jbpm。

然后,在jbpm-jpdl-3.2.3\db目录下面可以看到数据库的SQL脚本文件,找到jbpm.jpdl.mysql.sql文件,在其中每行的末尾添加一个分号,例如,原来的为:

alter table JBPM_ACTION drop foreign key FK_ACTION_REFACT
alter table JBPM_ACTION drop foreign key FK_CRTETIMERACT_TA
alter table JBPM_ACTION drop foreign key FK_ACTION_PROCDEF
alter table JBPM_ACTION drop foreign key FK_ACTION_EVENT
alter table JBPM_ACTION drop foreign key FK_ACTION_ACTNDEL
alter table JBPM_ACTION drop foreign key FK_ACTION_EXPTHDL

 

修改后应该为:

alter table JBPM_ACTION drop foreign key FK_ACTION_REFACT;
alter table JBPM_ACTION drop foreign key FK_CRTETIMERACT_TA;
alter table JBPM_ACTION drop foreign key FK_ACTION_PROCDEF;
alter table JBPM_ACTION drop foreign key FK_ACTION_EVENT;
alter table JBPM_ACTION drop foreign key FK_ACTION_ACTNDEL;
alter table JBPM_ACTION drop foreign key FK_ACTION_EXPTHDL;

 

然后,就可以将该SQL脚本文件在MySQL数据库服务器上执行,创建数据库jbpm中的所有表,使用如下命令:

mysql> source D:\JBPM\jbpm-jpdl-suite-3.2.3\jbpm-jpdl-3.2.3\db\jbpm.jpdl.mysql.sql;

 

从jbpm.jpdl.mysql.sql文件内容可以看到,如果你是第一次执行该脚本文件,它会首先假定数据库jbpm中存在这些表而执行删除操作,然后才能执行创建表的工作。

接着,可以初始化数据库,向其中插入数据:

INSERT INTO JBPM_ID_GROUP VALUES(1,'G','sales','organisation',NULL);
INSERT INTO JBPM_ID_GROUP VALUES(2,'G','admin','security-role',NULL);    
INSERT INTO JBPM_ID_GROUP VALUES(3,'G','user','security-role',NULL);  
INSERT INTO JBPM_ID_GROUP VALUES(4,'G','hr','organisation',NULL);   
INSERT INTO JBPM_ID_GROUP VALUES(5,'G','manager','security-role',NULL);  
INSERT INTO JBPM_ID_USER VALUES(1,'U','user','user@sample.domain','user');   
INSERT INTO JBPM_ID_USER VALUES(2,'U','manager','manager@sample.domain','manager');  
INSERT INTO JBPM_ID_USER VALUES(3,'U','admin','admin@sample.domain','admin');   
INSERT INTO JBPM_ID_USER VALUES(4,'U','shipper','shipper@sample.domain','shipper');   
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(1,'M',NULL,NULL,2,4);  
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(2,'M',NULL,NULL,3,4);   
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(3,'M',NULL,NULL,4,4);  
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(4,'M',NULL,NULL,4,3);  
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(5,'M',NULL,NULL,1,3);   
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(6,'M',NULL,NULL,2,3);   
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(7,'M',NULL,NULL,3,3);   
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(8,'M',NULL,NULL,3,2);   
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(9,'M',NULL,NULL,2,2);   
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(10,'M',NULL,NULL,2,5);    
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(11,'M',NULL,'boss',2,1);    
INSERT INTO JBPM_ID_MEMBERSHIP VALUES(12,'M',NULL,NULL,1,1);

 

保存为insert.sql文件,然后在MySQL数据库服务器上执行:

mysql> source D:\JBPM\jbpm-jpdl-suite-3.2.3\jbpm-jpdl-3.2.3\db\insert.sql;

 

3、JBPM控制台配置

JBPM是通过Web的控制台来进行流程管理的,所以配置的时候有点麻烦,但是很容易理解。

要保证你的Ant正确配置好,然后启动一个cmd窗口,切花到jbpm-jpdl-3.2.3\deploy(我的为D:\Eclipse\workspace\jbpm-jpdl-3.2.3\deploy)目录下,执行如下命令:

ant customize.console.for.tomcat

 

执行结果如下所示:

C:\Documents and Settings\SHIYANJUN>d:

D:\>cd D:\Eclipse\workspace\jbpm-jpdl-3.2.3\deploy

D:\Eclipse\workspace\jbpm-jpdl-3.2.3\deploy>ant customize.console.for.tomcat
Buildfile: build.xml

customize.console.for.tomcat:
    [mkdir] Created dir: D:\Eclipse\workspace\jbpm-jpdl-3.2.3\deploy\target\war
    [mkdir] Created dir: D:\Eclipse\workspace\jbpm-jpdl-3.2.3\deploy\customized
    [unzip] Expanding: D:\Eclipse\workspace\jbpm-jpdl-3.2.3\deploy\jbpm-console.
war into D:\Eclipse\workspace\jbpm-jpdl-3.2.3\deploy\target\war
     [copy] Copying 9 files to D:\Eclipse\workspace\jbpm-jpdl-3.2.3\deploy\targe
t\war\WEB-INF\lib
      [zip] Building zip: D:\Eclipse\workspace\jbpm-jpdl-3.2.3\deploy\customized
\jbpm-console.war

BUILD SUCCESSFUL
Total time: 4 seconds
D:\Eclipse\workspace\jbpm-jpdl-3.2.3\deploy>

 

这时,在D:\Eclipse\workspace\jbpm-jpdl-3.2.3\deploy目录下生成了两个目录:customized和target。

将customized目录下的jbpm-console.war文件拷贝到Tomcat安装目录下的webapps下面,启动Tomcat Web服务器,然后修改jbpm-console目录下的内容。

修改目录D:\Eclipse\workspace\jbpm-jpdl-3.2.3\deploy\target\war\WEB-INF\classes下的hibernate.cfg.xml文件,只需要修改mapping元素之前的内容property元素的内容。最初,默认只配置了如下三项:

<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>   
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
<property name="hibernate.connection.datasource">java:comp/env/jdbc/JbpmDataSource</property>

 

修改后需要添加,因为是JDBC直连,所以修改后如下:

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpm</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">111111</property>
    <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>

 

你需要把涉及到数据源的配置注释掉或者删除掉,否则在后面测试启动Tomcat的时候会报JNDI为未绑定的异常。

接着,要引入相关的jar包文件(jbpm-console是一个jsf应用):

(1)将jboss-j2ee.jar、commons-collections.jar、jsf-api.jar和jsf-impl.jar四个文件添加到D:\Tomcat 6.0\webapps\jbpm-console\WEB-INF\lib目录下。

上面四个文件获取:

jboss-j2ee.jar可以从jbpm-jpdl-suite-3.2.3\jbpm-jpdl-3.2.3\lib目录中获取到;

commons-collections.jar可以从jbpm-jpdl-3.2.3\server\server\jbpm\lib目录中获取到;

jsf-api.jar和jsf-impl.jar可以从jbpm-jpdl-3.2.3\server\server\jbpm\deploy\jboss-web.deployer\jsf-libs目录中获取到。

(2)将MySQL的JDBC驱动程序jar包添加到Tomcat共享目录:例如,我将mysql-connector-java-5.0.3-bin.jar文件拷贝到D:\Tomcat 6.0\lib目录下。

4、Tomcat安全域配置

在%CATALINA_HOME%/conf/Catalina/localhost 创建一个jbpm-console.xml 文件,该配置文件的内容如下:

<Context>
<Realm className="org.apache.catalina.realm.JDBCRealm"   
    driverName="com.mysql.jdbc.Driver"
    connectionURL="jdbc:mysql://localhost:3306/jbpm"
    connectionName="root"   
    connectionPassword="111111"
    userTable="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g"   
    userNameCol="g.TYPE_ = 'security-role' AND m.GROUP_ = g.ID_ AND m.USER_ = u.ID_ AND u.NAME_"   
    userCredCol="DISTINCT u.PASSWORD_"
    userRoleTable="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g"   
    roleNameCol="g.NAME_" />
</Context>

 

这里使用的是MySQL数据库,连接的名称root,密码为111111。

测试JBPM

启动Tomcat,如果没有发生任何异常,说明配置成功了。特别注意,这里使用的是JDBC直连的方式,并没有为其配置Hibernate数据源,所以不可能发生与数据源有关的异常。

打开http://localhost:8080/jbpm-console,可以看到如图所示:

根据图中提示的Example User账号信息,登录JBPM控制台,我使用admin帐户,登录成功后,如图所示:

如果第一次登录,Processes下是没有项的,可以点击左侧的deploy连接,选择一个工作流定义文件(例如,选择使用D:\JBPM\jbpm-jpdl-suite-3.2.3\jbpm-jpdl-3.2.3\examples\websale\target\websale.jpdl),然后Deploy 该New Process,如图所示:

执行Deploy之后,如果成功,则直接跳转到Infomation页面,显示所有的Process,可以通过Process ID来查看某个工作流,包括通过直观的Process Image来审查。

还记得上面,在执行SQL脚本的时候,向数据库中的表中插入了一些初始化数据,这时,可以通过JBPM控制台上的Identities来查看,如图所示:

到此,完成全部安装配置过程。

posted on 2011-07-11 16:21  龙v战  阅读(2001)  评论(0编辑  收藏  举报