本文主要讲解jbpm+tomcat+mysql配置过程,程序用例为jBPM自带例子websale。主要环境内容如下:
Ø IDE:Eclipse3.2.1
Ø JDK:J2SDK1.5.06
Ø Tomcat:Tomcat5.5.17
Ø jBPM:jbpm-starters-kit-3.1.2
Ø Database:MySQL5.0.27
去java.sun.com下载JDK1.5.06安装文件。
双击JDK1.5.06安装文件,安装JDK1.5.06。安装完成后,在系统环境变量中设置JAVA_HOME,并指向JDK1.5.06安装目录。后面称为JAVA_HOME。
去www.eclipse.org下载Eclipse3.2.1压缩包。
将下载的Eclipse3.2压缩包,解压到系统某个目录(D:\eclipse),后面称为ECLIPSE_HOME。
去http://www.apache.org/下载Tomcat5.5.17安装文件。
双击Tomcat5.5.17安装文件,安装Tomcat5.5.17到系统某个目录(D:\Tomcat5.5),后面称为TOMCAT_HOME。
去http://www.mysql.com/下载mysql-5.0.27-win32.zip压缩文件。
解压该文件后,双击MySQL5.0.27安装文件,安装MySQL5.0.27到系统某个目录(D:\Tomcat5.5),后面称为MySQL_HOME。
jBPM的下载地址:http://www.jboss.com/products/jbpm/downloads
² JBoss jBPM是jBPM 的软件包
² JBoss jBPM Starters Kit是一个综合包,它包括了jBPM软件包、开发插件、一个配置好了的基于JBoss的jBPM示例、一些数据库配置文件示例。
² JBoss jBPM Process Designer Plugin是辅助开发jBPM的Eclipse 插件。
² JBoss jBPM BPEL Extension jBPM关于BPEL的扩展包
本指南选择下载:JBoss jBPM Starters Kit 3.1.2。下载后解压到 D:\jbpm-starters-kit-3.1.2,后面简称JBPM_HOME。目录下含有五个子目录:
² jbpm jBPM的软件包,包含源码,例子等文件内容。
² jbpm-bpel只含有一个网页
² jbpm-db各种数据库hibernate配置文件示例,有些还包含了相应的jdbc驱动程序。
² jbpm-designer辅助开发jBPM的Eclipse插件,具体在jbpm-gpd-feature子目录中
² jbpm-server一个已经配置好了的基于JBoss的jBPM示例。
有个辅助工具开发起来方便一点,只不过现在 jBPM 的开发工具插件功能还不算太强,也就一个“项目创建向导”的功能,让你:
² 不用再去配置classpath库的引用了
² 直接得到了一个jBPM的项目初始结构
其实吧,开发jBPM也不需要什么插件工具,在熟练了以后,库引用了项目初始结构都可以手工创建。
插件不用再去下载了,jbpm-starters-kit-3.1.2包里就有,目录地址如下: D:\jbpm-starters-kit-3.1.1\jbpm-designer\jbpm-gpd-feature\eclipse,插件的安装方式是链接式还是直接复制式,另外,注明一下Eclipse的版本我是用3.2.1,插件和Eclispe版本相关的,要注意了。
如果安装成功,则Eclipse首选项里多了一个JBoss jBPM,另外我们也需要到这个jBPM的首选项里做一些配置工作――指定jBPM的安装路径(如下图所示)。这个配置主要是为了找到jbpm下的各种jar包,好让Eclipse设置项目的库引用。
例如新建一个jbpm的工程后,其目录树结构如下图所示:
在JBPM_HOME\jbpm目录下找到文件“.project”,用记事本打开,将以下内容<name>jbpm.3_BRANCH_3_1</name>更改为<name>jbpm.3</name>,保存文件。
在将JBPM_HOME\jbpm文件夹更改为JBPM_HOME\jbpm.3。后面引用工程名称为jbpm.3。
启动eclipse,通过“Import”将jBPM工程导入eclipse中。如下图所示:
图(1) 选择已经存在的工程
图(2) 选择工程
点击“Finish”完成导入,导入后的工程情况如下图所示:
图(3) 工程结构图
在MySQL中建立数据库jbpm。字符集采用GBK。建表SQL如下:
CREATE DATABASE `jbpm` CHARACTER SET 'gbk' COLLATE 'gbk_chinese_ci'; |
在工程jbpm.3的lib目录下建立mysql文件夹,将MySQL需要的JDBC驱动程序拷贝其中。目录结构如下图所示:
图(4) MySQL驱动位置
在工程jbpm.3的src/resources目录下建立mysql目录,并将jbpm.3/src/resources/hsqldb目录下的所有文件(create.db.hibernate.properties和identity.db.xml)拷贝入mysql中。目录结构如下图所示:
图(5) MySQL的create.db.hibernate.properties文件位置
在eclipse中,双击工程jbpm.3/src/resources/mysql下的create.db.hibernate.properties,打开该文件,修改其中的内容。
修改前内容:
hibernate.dialect=org.hibernate.dialect.HSQLDialect hibernate.connection.driver_class=org.hsqldb.jdbcDriver hibernate.connection.url=jdbc:hsqldb:hsql://localhost:1701 hibernate.connection.username=sa hibernate.connection.password= hibernate.show_sql=true |
修改后内容:
hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class=com.mysql.jdbc.Driver hibernate.connection.url=jdbc:mysql://127.0.0.1:3306/jbpm hibernate.connection.username=root hibernate.connection.password=root hibernate.show_sql=true |
修改完后,保存并关闭文件。
在eclipse中打开工程jbpm.3下的build.deploy.xml文件,在
<target name="create.db" depends="declare.jbpm.tasks, db.clean, db.start" description="creates a hypersonic database with the jbpm tables and loads the processes in there"> |
之前,添加如下内容:
<target name="create.db.mysql" depends="declare.jbpm.tasks" description="creates a mysql database with the jbpm tables and loads the processes in there. Run this target after starting mysql"> <jbpmschema actions="create" cfg="${basedir}/src/config.files/hibernate.cfg.xml" properties="${basedir}/src/resources/mysql/create.db.hibernate.properties" /> <loadidentities file="${basedir}/src/resources/mysql/identity.db.xml" cfg="${basedir}/src/config.files/hibernate.cfg.xml" properties="${basedir}/src/resources/mysql/create.db.hibernate.properties" /> <ant antfile="build.xml" target="build.processes" inheritall="false" /> <deployprocess cfg="${basedir}/src/config.files/hibernate.cfg.xml" properties="${basedir}/src/resources/mysql/create.db.hibernate.properties"> <fileset dir="build" includes="*.process" /> </deployprocess> </target> |
<property file="${basedir}/src/resources/mysql/create.db.hibernate.properties" /> <target name="execute.mysql.sql" description="execute a mysql sql script with -Dmysql.script=path-to-script."> <sql driver="${hibernate.connection.driver_class}" url="${hibernate.connection.url}" userid="${hibernate.connection.username}" password="${hibernate.connection.password}" delimiter=";" autocommit="true" onerror="continue"> <classpath refid="classpath.ant" /> <transaction src="${mysql.script}" /> </sql> </target> |
在eclipse中,右键点击工程jbpm.3下的build.deploy.xml文件,在菜单中选择“Run As\Ant Build…”,在出现的窗口中选择“target”为“create db mysql”,然后点击“Run”按钮,开始运行Ant。
图(6) Ant建立库表
等运行完毕后,可以在MySQl中查看到相应得数据库表结构已经建立,并且已经部署了websale需要用到的流程信息。
图(7) jbpm_processdefinition表中的流程名称
图(8) jbpm_variableaccess表中信息
在eclipse中打开工程jbpm.3下的src/config.files目录下的hibernate.cfg.xml文件,修改其中的内容为:
<!-- jdbc connection properties --> <property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="hibernate.connection.url"> jdbc:mysql://127.0.0.1:3306/jbpm </property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!-- other hibernate properties --> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">false</property> <property name="hibernate.use_sql_comments">false</property> |
注意,只修改跟数据库连接有关的内容,这里你可以根据自己数据库的不同,而建立不同的hibernate连接。
在eclipse中打开工程jbpm.3下的build.deploy.xml文件,找到如下“target”,
<target name="build.webapp" description="builds jbpm.war"> <ant antfile="build.xml" target="build.webapp" /> <mkdir dir="build/jbpm.war.dir" /> <copy todir="build/jbpm.war.dir"> <fileset dir="src/resources/jbpm.war" /> </copy> ……………………………………… <jar destfile="build/jbpm.war"> <fileset dir="build/jbpm.war.dir" /> </jar> </target> |
并将此“target”内容更改为如下内容:
<target name="build.webapp" description="builds jbpm.war"> <ant antfile="build.xml" target="build.webapp" /> <mkdir dir="build/jbpm.war.dir" /> <copy todir="build/jbpm.war.dir"> <fileset dir="src/resources/jbpm.war" /> </copy> <copy todir="build/jbpm.war.dir/WEB-INF/classes"> <fileset dir="src/config.files" /> </copy> <copy todir="build/jbpm.war.dir/WEB-INF/lib"> <fileset dir="build" includes="jbpm*.jar,converter.jar" excludes="*src*.jar" /> <fileset dir="lib/jsf" includes="*.jar" /> <fileset dir="lib/dom4j" includes="*.jar" /> <fileset dir="lib/hibernate" includes="*.jar" /> <fileset dir="lib/mysql" includes="*.jar" /> <fileset dir="lib/commons" includes="commons-digester-*.jar, commons-beanutils-*.jar, commons-fileupload-*.jar" /> <fileset dir="lib/jboss" includes="*.jar" excludes="jboss*.jar, *servlet*.jar, *hsql*.jar" /> </copy> <jar destfile="build/jbpm.war"> <fileset dir="build/jbpm.war.dir" /> </jar> </target> |
在eclipse中,右键点击工程jbpm.3下的build.deploy.xml文件,在菜单中选择“Run As\Ant Build…”,在出现的窗口中选择“target”为“build webapp”,然后点击“Run”按钮,开始运行Ant。
图(9) Ant打包war文件
在工程jbpm.3下build目录中,将jbpm.war文件拷贝到TOMCAT_HOME\webapps目录下。启动Tomcat。启动完成后,日志会不断输出,其中最后一句是“DEBUG [StaticNotifier] going to wait for (CMD_EXECUTOR, java.lang.Object@1df59bd) ”,这表示 jBPM 在开始工作了,它不断进行轮询。
在浏览器中输入地址http://localhost:8080/jbpm,出现登录页面,配置成功。
打开网页:http://localhost:8080/jbpm/得到如下画面
图(10) 登录界面
这是一个已经用jBPM开发好的用户定单流程,具有下单、审核、估价等流程。
以cookie monster用户登录,选择“create new web sale order”可以创建一个定单。如下图所示,在图左边是填写的定单情况,右边一整个定货流程的示意图,红色框表示流程进行到哪一步了。填写好定单好,选择“Save and Close Task”,完成定单提交。
图(11) 创建新任务
选择右上角的“Login as another user”以另外一个用户名ernie登录。这时可以看到ernie用户的任务列表中多了一项。
图(12) 处理任务
点进去后,显示如下画面。在 comment 项填写意见,选 OK 按钮,进入到下一步。如果选择 more info needed 按钮,则打回给 cookie monster 用户修改定单。
图(13) 处理内容
本文比较简单的阐述了jbmp与mysql与tomcat之间的配置管理。对于其他数据库以及web容器其方式是一样的,可参照本配置指南进行相关配置。