最近项目中要用到工作流,正在开发过程中,现将一些初步的测试成果共享出来。本文主要说明如何将JBPM自带的WEB CONSOLE应用部署在Jboss和MySQL数据库上。 网上关于jbpm-jpdl-3.2.2的部署说明资料有很多,我在最初学习的过程中也受益匪浅,但为什么这么做并不明白,这次在使用jbpm-jpdl-3.2.3时,由于针对以前的版本做了一些改动,自己尝试时比较注重这样做的目的及原因简单分析。 [size=large][color=red]一、环境配置说明[/color][/size] [b]系统环境:[/b]jdk1.6.0_11 jboss-4.2.3.GA jbpm-jpdl-3.2.3 mysql-5.1.30 其中JBPM使用的是jbpm-jpdl-suite-3.2.3.zip,解压后可以先看一下DOC目录下的userguide。 [color=red][size=large]二、快速启动,熟悉最终成果[/size][/color] 在jbpm-jpdl-3.2.3\server下点击运行start.bat文件,即可以实现一键式部署。从目录下的readme.html目录下可以看到,这是一个在jBoss 4.2.2上部署JBPM应用的案例,部署内容包括内置基于hypersonic的JBPM数据库,web console应用及相关监控程序等。 启动完成后,可以在浏览器中输入http://localhost:8080/jbpm-console进行查看,可以使用页面右侧的用户名和密码登录。 [img]/upload/attachment/69708/0fd2f09d-d234-3bec-a49a-4efb66a235c9.jpg[/img] 从上图可以看到,除了3.2.2版本的websale外,还新增了两个流程。通过点击某个Process的【Examine】链接,可以打开该流程的实例页面,在新页面的左侧点击【Process Image】就可以看到该流程已经定义并发布的流程图了。如下图: [color=red]点击看大图[/color] [img]/upload/attachment/69710/b7abd973-d053-360b-b00a-a395e7ba8ebb.jpg[/img] [color=red]点击看大图[/color] 使用过程中可以看到整个系统页面的上部是一个导航条,可以查看流程、个人任务、所有任务、作业和用户等管理导航链接;在页面的左侧是针对一个工作流程的链接,包括流程实例、任务、流程图、启动一个工作流、删除工作流和发布新路程等操作。通过这些链接可以快速而形象的认识和理解工作流的相关概念,也可以通过启动一个工作流来体验一下,这里就不赘述了。 [color=red][size=large]三、在Jboss和MySQL上部署[/size][/color] [b]1、初始化Mysql数据库[/b] 首先配置好MySQL数据库,如何配置请参考我前面写的一篇文章,使用mysql创建一个数据库,例如jbpm。 然后在 jbpm-jpdl-3.2.3\db 下有个 jbpm.jpdl.mysql.sql 数据库脚本文件,是MySQL的初始化脚本,我们不能直接导入该文件,会提示有错误,因为该文件格式有问题,首先打开该文件(我习惯用EditPlus),把前面的 alter table JBPM_XX 语句都删除(因为我们使用的是新的数据库,所以不需要这些语句)。 然后在每一行后面添加一个分号,不然脚本执行会出错。 这样就可以用source命令导入了,导入后,Jbpm表结构创建成功。 初始化用户数据,找到预配置的应用使用的数据库代码jbpm-jpdl-3.2.3\server\server\jbpm\data\hypersonic\jbpmDB.script文件,打开后找到如下表代码,初始化到MySQL数据库中。这里要注意,因为我们创建的数据库已经建立了外键关系,所以直接拷贝后的代码要调整顺序,要先加入JBPM_ID_GROUP 和JBPM_ID_USER表数据后,再初始化JBPM_ID_MEMBERSHIP表的数据。也可以直接拷贝如下代码: [code="sql"] 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','hr','organisation',NULL); INSERT INTO JBPM_ID_GROUP VALUES(4,'G','user','security-role',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,1,4); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(4,'M',NULL,NULL,4,4); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(5,'M',NULL,NULL,4,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); [/code] 至此,数据库初始化完成。感兴趣的朋友可以在此过程中发现JBPM一共需要32张表,并通过这3张表进行了用户的管理,也就是我们使用WEB CONSOLE的默认用户。 [b]2、部署Jbpm-console到Jboss4.2.3,并修改数据库连接[/b] 在jbpm-jpdl-3.2.3\deploy目录下,可以找到这个应用文件jbpm-console.war,同时注意查看该目录下的readme.html文件,该文件介绍了如何部署该应用到其他非Jboss服务器,以及需要调整的Jar文件,比如部署到Tomcat。将jbpm-console.war拷贝到jboss-4.2.3\server\default\deploy目录下,由于要使用MySQL数据库,必须修改 打开 刚才复制的文件: jboss-4.2.3\server\default\deploy\jbpm-console.war (可以使用winrar打开, 或者把该文件重命名为jbpm-console.war.rar,然后用winrar打开),修改jbpm-console.war/WEB-INF/classes/hibernate.cfg.xml文件,修改后代码如下: [code="xml"] org.hibernate.dialect.MySQLInnoDBDialectcom.mysql.jdbc.Driverjdbc:mysql://localhost:3306/jbpmrootroot [/code] 修改保存后重新放在压缩包中,然后添加MySQL数据库驱动程序到jboss-4.2.3\server\default\lib下。 从部署过程看已经比前一个版本简单多了。 [b]3、配置Jboss验证框架[/b] 由于登录使用的Jboss验证框架必须使用JNDI进行数据库连接,所以需要配置MySQL数据库的连接。首先找到jboss-4.2.3\docs\examples\jca\mysql-ds.xml,将该文件复制到jboss-4.2.3\server\default\deploy下,同时修改文件中的数据库连接为MySQL的数据库连接,可以参考上面Hibernate的配置。 找到jboss-4.2.3\server\default\conf 目录下的 login-config.xml 文件, 打开该文件, 在 前面添加下面的代码: [code="xml"] [color=red]java:/MySQLDS[/color] SELECT PASSWORD_ FROM JBPM_ID_USER WHERE NAME_=? SELECT g.NAME_ ,'Roles' FROM JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g WHERE g.TYPE_='security-role' AND m.GROUP_ = g.ID_ AND m.USER_ = u.ID_ AND u.NAME_=? [/code] 注意这个文件中的dsJndiName要和mysql-ds.xml文件中的一致。 [b]4、验证测试[/b] 在jboss-4.2.3\bin 目录下运行 run.bat,如果控制台没有错误信息输入, 部署成功, 如果出错,请参考上面. 打开浏览器输入: http://localhost:8080/jbpm-console ,看到的效果应该和开始部署的看到的一样。 [b]5、发布工作流[/b] 登录后发现系统中还没有部署工作流,我们可以将JBPM自带的3个工作流发布,用manager用户登陆,点击 Processes 菜单,将看到在左边的菜单中有个Actions菜单,Actions下面有个 Deploy a new process, 点击 Deploy来部署我们的工作流. 选择 jbpm-jpdl-3.2.2\examples\websale\target\websale.jpdl 然后点击Deploy按钮, 你就看到一个蓝色的提示信息 New process deployed. ok 我们的工作流已经部署成功了。同样,还可以将raise和businesstrip两个工作流也部署上。 说明: websale.jpdl文件为JBPM工作流文档包,与jar java库文件打包格式一样(zip格式,可以使用winrar查看里面的内容),里面包涵了工作流的定义文件。 至此,我们部署的效果已经和JBPM预配置的例子一致了。
jbpm-3.2.3 在Jboss4.2.3 和 MySQL5.1.3 下部署说明
最新推荐文章于 2019-06-13 21:26:12 发布