千家信息网

jbpm在tomcat和mysql上的迁移部署过程

发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要讲解了"jbpm在tomcat和mysql上的迁移部署过程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"jbpm在tomcat和mysql
千家信息网最后更新 2025年11月14日jbpm在tomcat和mysql上的迁移部署过程

这篇文章主要讲解了"jbpm在tomcat和mysql上的迁移部署过程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"jbpm在tomcat和mysql上的迁移部署过程"吧!

jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统。jBPM是公开源代码项目,遵循Apache License。jBPM在2004年10月18日,发布了2.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个组成部分,它的名称也改成JBoss jBPM。


jBPM有两大特色,使他成为市场的一大两点。其中最大的特色就是它的业务逻辑定义没有采用目前的一些规范,如WfMC´s
XPDL, BPML, ebXML, BPEL4WS等,而是它自己定义的JBoss jBPM Process definition
language
(jPdl)。jPdl把一个业务逻辑流程看作是一个UML状态图,如果你不熟悉UML状态图,那初学计算机语言的流程图应该熟悉吧,表达的方式和意思大
同小异。jPdl详细定义了这个状态图的每个部分,如起始、结束状态,状态之间的转换等;其另一大特色就是集成Hibernate,确切的说是绑定,使用
Hibernate来管理数据库,这样jBPM只专注于他的业务流程控制。

从上面可以看出,jBPM是一个业务流程管理引擎,是一个工作流引擎。除此之外,它同时实现了对jPDL和对BPEL的支持。它整合
了Hibernate技术处理数据库,创建了一系列的数据库表,持久化工作流引擎所需的状态。因此,jBPM支持所有Hibernate支持的数据库,能
够把Java对象持久化到数据库中,把Hibernate支持的Java类的对象保存到数据库中!

你完全可以像用 Java 的类库一样使用JBoss jBPM,而且通过配置JBoss jBPM也可以被部署在其它J2EE应用服务器上和任何数据库上。

在本文中,我们首先来创建我们的JBoss jBPM运行开发环境。在开始之前,请准备一下软件产品:

·JDK 1.5 或者更高版本, 这里使用JDK 6u10b

·Apache Tomcat 5.5.x或更高版本,这里使用Tomcat 6.0.16

·MySQL 5.1 ,也可以选择其它Hiberante 支持的数据库,没有太大差别,这里使用MySQL 5.1

·Apache Ant 1.7.0

·JBPM-3.2.3

·Eclipse Europa(Eclipse V3.3) for JavaEE Developers或更高, 这里使用Eclipse V3.4

说明:JBoss jBPM的发布包中已经配置好了一套服务环境,是基于JBoss的。因为我们习惯了Tomcat 的小巧灵活,而且我们也不希望jBPM依赖JBoss。

1. 下载安装JDK,Tomcat, Ant, MySQL, 并设置相应的环境变量

此步骤不再熬述,具体请查阅官方文档

Jdkhttp://java.sun.com/

Anthttp://ant.apache.org/

Tomcat:http://tomcat.apache.org/

Eclipse:http://www.eclipse.org/

2. 下载JBoss jBPM

JBoss jBPM 官方(http://www.jboss.org/jbossjbpm/)当前发布的版本为 3.2.3, 只需要下载jPDL Suite,下载后得到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 这里是些学习的例子

|

|--- lib jBPM 的类库

|

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

|

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

3. 配置数据库

jBPM需要把初始化数据和工作流定义存储到数据库中,它定义了一套数据结构来存储这些数据,这也是该容器本身的特点。

在mysql 中创建一个数据库 jbpm ,(create database jbpm;),并创建用户jbossjbpm(密码:jbossjbpm)

说明:如果你嫌麻烦可以使用root账号和其密码,不过下面的设置请做相应的更改

在D:/jbpm-jpdl-3.2.3/db 找到jbpm.jpdl.mysql.sql,
该文件必须修改一下,以符合MySQL的语法结构。具体就是在每条语句的末尾增加一个分号";"你可以借助 UltrEdit,
EditPlus等工具来做这些事情(注意替换时要注意匹配大小写,有写表的字段中包含CREATE字符),如果是第一次创建这些数据库表,要删除
create语句上面的alter和drop(这些表还都不存在)。

4. 准备jBPM包

这是个jbpm-jpdl流程管理控制台,就像Tomcat有个单独的Administrator应用用来管理配置和部署一样的东东。有了他你可以在图形界面来操作控制你的应用。

打开命令行控制台,切换到D:/jbpm-jpdl-3.2.3/deploy 目录,执行以下命令:

ant customize.console.for.tomcat

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

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

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

Xml代码

  1. <hibernate-configuration>

  2. <session-factory>


  3. <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialectproperty>


  4. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driverproperty>

  5. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpmproperty>

  6. <property name="hibernate.connection.username">jbossjbpmproperty>

  7. <property name="hibernate.connection.password">jbossjbpmproperty>


  8. <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProviderproperty>


  9. org.hibernate.dialect.MySQLInnoDBDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/jbpm jbossjbpm jbossjbpm org.hibernate.cache.HashtableCacheProvider org.hibernate.transaction.JDBCTransactionFactory...

    这里就是启用了 更换了默认的数据属性,JDBC connection properties ,还有自己定义的数据名字和帐号,另外需要注意的是用

    Xml代码

    1. <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactoryproperty>

    org.hibernate.transaction.JDBCTransactionFactory

    代替JTATransactionFactory和CMTTransactionFactory,想用JTATransactionFactory或CMTTransactionFactory配置也可以,不过还没有研究过,有知道的朋友可以一起学习一下。

    拷贝jboss-j2ee.jar包至jbpm-console.war/WEB-INF/lib
    。发布包下(D:/jbpm-jpdl-3.2.3)很多地方都有这个包你可以找一下,比如
    D:/jbpm-jpdl-3.2.3/server/client。

    这里主要是用到了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.3/server/server/jbpm/lib 。这个包是Apache Commons包,到处都找的的到。


    拷贝jsf-api.jar和jsf-impl.jar包至jbpm-console.war/WEB-INF/lib ,你可以在D:/jbpm-
    jpdl-3.2.3/server/server/jbpm/deploy/jboss-web.deployer/jsf-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 文件,内容如下:

    Xml代码

    1. <Context>

    2. <Realm className="org.apache.catalina.realm.JDBCRealm"

    3. driverName="com.mysql.jdbc.Driver"

    4. connectionURL="jdbc:mysql://localhost:3306/jbpm"

    5. connectionName="jbossjbpm"

    6. connectionPassword="jbossjbpm"

    7. userTable="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g"

    8. userNameCol="g.TYPE_ = 'security-role' AND m.GROUP_ = g.ID_ AND m.USER_ = u.ID_ AND u.NAME_"

    9. userCredCol="DISTINCT u.PASSWORD_"

    10. userRoleTable="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g"

    11. roleNameCol="g.NAME_" />

    12. Context>

    方法二:修改 %CATALINA_HOME%/conf/tomcat-users.xml文件来设置安全域。为了不和tomcat已有的用户冲突,这里把 tomcat以前的登陆帐号username="admin" 修改为username="tadmin",修改后的文件如下:

    Xml代码

    1. xml version='1.0' encoding='utf-8'?>


    2. <tomcat-users>


    3. <role rolename="user"/>


    4. <role rolename="administrator"/>


    5. <role rolename="manager"/>


    6. <role rolename="sales"/>


    7. <role rolename="hr"/>


    8. <role rolename="admin"/>


    9. <role rolename="participant"/>


    10. <user username="user" password="user" roles="user,sales"/>


    11. <user username="shipper" password="shipper" roles="user,hr"/>


    12. <user username="manager" password="manager" roles="admin,hr,manager,user,sales"/>


    13. <user username="tadmin" password="" roles="admin,manager"/>

    14. <user username="admin" password="admin" roles="admin,user,hr"/>

    15. tomcat-users>

                            

    6. 初始化数据

    在MySQL jbpm数据库中插入以下数据

    Sql代码

    1. INSERT INTO JBPM_ID_GROUP VALUES(1,'G','sales','organisation',NULL);


    2. INSERT INTO JBPM_ID_GROUP VALUES(2,'G','admin','security-role',NULL);


    3. INSERT INTO JBPM_ID_GROUP VALUES(3,'G','user','security-role',NULL);


    4. INSERT INTO JBPM_ID_GROUP VALUES(4,'G','hr','organisation',NULL);


    5. INSERT INTO JBPM_ID_GROUP VALUES(5,'G','manager','security-role',NULL);


    6. INSERT INTO JBPM_ID_USER VALUES(1,'U','user','user@sample.domain','user');


    7. INSERT INTO JBPM_ID_USER VALUES(2,'U','manager','manager@sample.domain','manager');


    8. INSERT INTO JBPM_ID_USER VALUES(3,'U','admin','admin@sample.domain','admin');


    9. INSERT INTO JBPM_ID_USER VALUES(4,'U','shipper','shipper@sample.domain','shipper');


    10. INSERT INTO JBPM_ID_MEMBERSHIP VALUES(1,'M',NULL,NULL,2,4);


    11. INSERT INTO JBPM_ID_MEMBERSHIP VALUES(2,'M',NULL,NULL,3,4);


    12. INSERT INTO JBPM_ID_MEMBERSHIP VALUES(3,'M',NULL,NULL,4,4);


    13. INSERT INTO JBPM_ID_MEMBERSHIP VALUES(4,'M',NULL,NULL,4,3);


    14. INSERT INTO JBPM_ID_MEMBERSHIP VALUES(5,'M',NULL,NULL,1,3);


    15. INSERT INTO JBPM_ID_MEMBERSHIP VALUES(6,'M',NULL,NULL,2,3);


    16. INSERT INTO JBPM_ID_MEMBERSHIP VALUES(7,'M',NULL,NULL,3,3);


    17. INSERT INTO JBPM_ID_MEMBERSHIP VALUES(8,'M',NULL,NULL,3,2);


    18. INSERT INTO JBPM_ID_MEMBERSHIP VALUES(9,'M',NULL,NULL,2,2);


    19. INSERT INTO JBPM_ID_MEMBERSHIP VALUES(10,'M',NULL,NULL,2,5);


    20. INSERT INTO JBPM_ID_MEMBERSHIP VALUES(11,'M',NULL,'boss',2,1);


    21. INSERT INTO JBPM_ID_MEMBERSHIP VALUES(12,'M',NULL,NULL,1,1);

    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 能正常访问说明部署成功,你可以用页面上列出的用户和账号登陆进去体验一下。

    感谢各位的阅读,以上就是"jbpm在tomcat和mysql上的迁移部署过程"的内容了,经过本文的学习后,相信大家对jbpm在tomcat和mysql上的迁移部署过程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

数据 数据库 配置 流程 控制 文件 状态 应用 支持 管理 业务 代码 就是 拷贝 版本 目录 学习 服务 过程 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 郑州工商学院数据库原理 苏州科网络技术有限公司 哪个网络安全软件好 互联网科技的税收是多少 网络安全查纠整改措施 云南智能养老软件开发 中宏视讯网络技术有限公司 服务器显示登录成功但是进不去 徐汇区上门软件开发定制大概费用 韶关岩鸿软件开发 工业控制网络技术的发展方向 mysql恢复数据库 网络安全卫士通涨停 网络安全等级五级系统举例 数据库提示无法在已有的 小程序与服务器之间通信安全 江阴服务器维修服务电话热线 查询mdb数据库数据并显示结果 路由器网络安全类型怎么设置 数据库安全管理内容是 燃烧的远征哪个服务器人中等 信息安全与网络安全一样吗 数据库工具完整免费版 公务员和软件开发有关岗位 最新办公软件开发方案 失落的方舟请重新尝试服务器 我的世界cw服务器 服务器无法开机 网安通报网络安全 小学网络安全方案
0