yywx001 发表于 2015-11-14 11:40:24

JBPM实践系列(一)---安装配置之jbpm-console(tomcat+mysql+jbpm)

  一. 安装环境
  tomcat 6.0.26
  mysql 5.1
  jdk 1.5
  jbpm-jpdl-suite-3.2.3
  ant 1.7.1
  
  二、配置过程
  1. 下载tomcat、mysql、jdk、ant,安装并配置好JAVA_HOME、ANT_HOME、CATALINA_HOME等
  2. 下载JBoss jBPM


JBoss jBPM 官方(
http://www.jboss.org/jbossjbpm/
)下载jbpm-jpdl-suite-3.2.3.zip,这个套件包含了所有的内容和资源,包括eclipse插件,示例,和流程管理控制应用。



解压jbpm-jpdl-suite-3.2.3.zip,这里解压后得到D:jbpm-jpdl-3.2.3,其主要目录结构如下:


D:jbpm-jpdl-3.2.3

|--- db    这里都是些sql定义和数据文件,如果改用其它数据库,可以使用这些资源来创建,服务还是很周到的。顺便

|             罗嗦一句,jBPM 默认使用的是内存数据库 hsqldb ,这个数据库还没研究过(嘿嘿---)

|

|--- deploy用来部署你的应用的包和资源

|

|--- designer这里是Eclipse插件,这样你就可以在图形界面来定义你的业务流程,骨灰级人物没他也能过日子

|

|--- doc这里是jBPM相关组件的API 文档

|

|--- examples这里是些学习的例子

|

|--- libjBPM 的类库

|

|--- server这里有一个JBoss 服务器,并且包含了本JBoss jBPM引擎,还部署了websale例子

|

|--- src这里是JBoss jBPM的源代码




  3. 配置数据库

  jBPM需要把初始化数据和工作流定义存储到数据库中,它定义了一套数据结构来存储这些数据,
  
  在mysql 中创建一个数据库 jbpm ,(create database jbpm;),并创建用户jbossjbpm(密码:jbossjbpm)
  说明:如果你嫌麻烦可以使用root账号和其密码,不过下面的设置请做相应的更改(我用的root)
  
  在jbpm-jpdl-3.2.3db 找到jbpm.jpdl.mysql.sql,
该文件必须修改一下,以符合MySQL的语法结构。具体就是在每条语句的末尾增加一个分号";"你可以借助 UltrEdit,
EditPlus等工具来做这些事情(注意替换时要注意匹配大小写
,有写表的字段中包含CREATE字符),如果是第一次创建这些数据库表,要删除create语句上面的alter和drop(这些表还都不存在)。
  
  4. 准备jBPM包

  这是个jbpm-jpdl流程管理控制台
,就像Tomcat有个单独的Administrator应用用来管理配置和部署一样的东东。有了他你可以在图形界面来操作控制你的应用。
  
  打开命令行控制台,切换到D:jbpm-jpdl-3.2.3deploy 目录,执行以下命令:
  ant customize.console.for.tomcat

     

      注意:请确保你的ant安装
配置妥当,可以在命令行输入:ant -version 来检测ant 是否正确安装。命令执行后能看到ant的版本信息即OK

  
      ant customize.console.for.tomcat 执行成功后,会在
D:jbpm-jpdl-3.2.3deploy 目录下生成customized和target目录,其中customized目录下的jbpm-console.war即是我们想要的war包。

  我们需要修改jbpm-console.war/WEB-INF/classes/hibernate.cfg.xml 文件,以适应我们的资源属性的需要。修改后的结果如下:

<hibernate-configuration>
<session-factory>
<!-- hibernate dialect -->
<property name=&quot;hibernate.dialect&quot;>org.hibernate.dialect.MySQLInnoDBDialect</property>
<!-- JDBC connection properties (begin) -->
<property name=&quot;hibernate.connection.driver_class&quot;>com.mysql.jdbc.Driver</property>
<property name=&quot;hibernate.connection.url&quot;>jdbc:mysql://localhost:3306/jbpm</property>
<property name=&quot;hibernate.connection.username&quot;>jbossjbpm</property>
<property name=&quot;hibernate.connection.password&quot;>jbossjbpm</property>
<!-- JDBC connection properties (end) -->
<property name=&quot;hibernate.cache.provider_class&quot;>org.hibernate.cache.HashtableCacheProvider</property>
<!-- DataSource properties (begin) ==
<property name=&quot;hibernate.connection.datasource&quot;>java:/JbpmDS</property>
== DataSource properties (end) -->
<property name=&quot;hibernate.transaction.factory_class&quot;>org.hibernate.transaction.JDBCTransactionFactory</property>
...
  
  这里就是启用了 更换了默认的数据属性,JDBC connection properties ,还有自己定义的数据名字和帐号,另外需要注意的是用

<property name=&quot;hibernate.transaction.factory_class&quot;>org.hibernate.transaction.JDBCTransactionFactory</property>

  
  代替JTATransactionFactory和CMTTransactionFactory,想用JTATransactionFactory或CMTTransactionFactory配置也可以,不过还没有研究过,有知道的朋友可以一起学习一下。
  
  
  拷贝jboss-j2ee.jar包至jbpm-console.war/WEB-INF/lib 。发布包下(D:jbpm-jpdl-3.2.3)很多地方都有这个包你可以找一下,比如 D:jbpm-jpdl-3.2.3serverclient。
  这里主要是用到了Java Transaction Architecture, 所以你可以用J2EE中的jta.jar包还替换jboss-j2ee.jar。jta相关信息请参考:http://java.sun.com/javaee/technologies/jta/index.jsp

  
  拷贝commons-collections.jar 包至jbpm-console.war/WEB-INF/lib
。发布包下(D:jbpm-jpdl-3.2.3)好几处都有这个包,比如 D:jbpm-jpdl-3.2.3serverserverjbpmlib
。这个包是Apache Commons包,到处都找的的到。
  
  
拷贝jsf-api.jar和jsf-impl.jar包至jbpm-console.war/WEB-INF/lib ,你可以在D:jbpm-
jpdl-3.2.3serverserverjbpmdeployjboss-web.deployerjsf-libs种找到这两个包。
  说明:因为jbpm-console是一个jsf应用,没这两个包,你访问时会报404或505错误。
  
  拷贝MySQL JDBC驱动程序包至%CATALINA_HOME%/lib (Tomcat 6)或%CATALINA_HOME%/common/lib(Tomcat 5.5)
  
  
  拷贝修改后的jbpm-console至%CATALINA_HOME%/webapps
  
  这样jBPM基本上配置完成,但是我们还不能访问他,还需要配置安全访问控制和初始的用户数据
  
  
  5. 配置Tomcat 安全域
  方法一:在%CATALINA_HOME%/conf/Catalina/localhost 创建一个jbpm-console.xml 文件,内容如下:

<Context>
<RealmclassName=&quot;org.apache.catalina.realm.JDBCRealm&quot;
driverName=&quot;com.mysql.jdbc.Driver&quot;
connectionURL=&quot;jdbc:mysql://localhost:3306/jbpm&quot;
connectionName=&quot;jbossjbpm&quot;
connectionPassword=&quot;jbossjbpm&quot;
userTable=&quot;JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g&quot;
userNameCol=&quot;g.TYPE_ = 'security-role' AND m.GROUP_ = g.ID_ AND m.USER_ = u.ID_ AND u.NAME_&quot;
userCredCol=&quot;DISTINCT u.PASSWORD_&quot;
userRoleTable=&quot;JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g&quot;
roleNameCol=&quot;g.NAME_&quot; />
</Context>
  
  方法二:修改 %CATALINA_HOME%/conf/tomcat-users.xml
文件来设置安全域。为了不和
tomcat
已有的用户冲突
,
这里把
tomcat
以前的登陆帐号
username=&quot;admin&quot;
修改为
username=&quot;tadmin&quot;
,修改后的文件如下:

  

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename=&quot;user&quot;/>
<role rolename=&quot;administrator&quot;/>
<role rolename=&quot;manager&quot;/>
<role rolename=&quot;sales&quot;/>
<role rolename=&quot;hr&quot;/>
<role rolename=&quot;admin&quot;/>
<role rolename=&quot;participant&quot;/>
<user username=&quot;user&quot; password=&quot;user&quot; roles=&quot;user,sales&quot;/>
<user username=&quot;shipper&quot; password=&quot;shipper&quot; roles=&quot;user,hr&quot;/>
<user username=&quot;manager&quot; password=&quot;manager&quot; roles=&quot;admin,hr,manager,user,sales&quot;/>
<user username=&quot;tadmin&quot; password=&quot;&quot; roles=&quot;admin,manager&quot;/>
<user username=&quot;admin&quot; password=&quot;admin&quot; roles=&quot;admin,user,hr&quot;/>
</tomcat-users>
  
  6. 初始化数据
  在MySQL 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);
  
  7. 启动Tomcat 服务,查看控制台的日志,排除错误,数据库错误和支持库不完整都可能导致错误。
  在浏览器
中输入:
http://localhost:8080/jbpm


能正常访问说明部署成功,你可以用页面上列出的用户和账号登陆进去体验一下。
页: [1]
查看完整版本: JBPM实践系列(一)---安装配置之jbpm-console(tomcat+mysql+jbpm)