日期:2014-05-16  浏览次数:20384 次

jBPM(七): 如何让jBPM自带例子运行在指定数据库?



???? 我们知道jBPM自带例子是运行在其默认的HSQLDB中的, 这个HSQLDB是有其优点, 但一般情况下很少当作项目的正式库来用. 这样,想通过jBPM自带的这个starterKit来往正式库里发布项目定义的流程就不可能了. 那怎么办? 能不能改下jBPM自带starterKit运行的数据库呢? 也就是说让starterKit运行在自己指定的数据库上. 我们这里还是以Mysql为例来梳理总结怎么来修改配置.

??? 修改starterKit关于数据库方面配置前,我们先做下准备工作,先采用"jBPM(五): 部署jBPM所用表到数据库_2 "中的ant命令来建表(并部署自带的websale实例已定义好的流程).

??? 这样准备工作做完好了, 下面来看怎么来改starterKit里关于数据库方面的配置. 以下是具体步骤:
???? 1, 在JBPM_HOME/jbpm-server/server/jbpm/deploy目录下新建一名为"jbpm-ds.xml"的文件, 文件内部如下:

<?xml version="1.0" encoding="UTF-8"?>
	<datasources>
		<local-tx-datasource>
			<jndi-name>JbpmDS</jndi-name>
			<connection-url>jdbc:mysql://localhost:3306/jbpm</connection-url>
			<driver-class>com.mysql.jdbc.Driver</driver-class>
			<user-name>root</user-name>
			<password>yourmysqlrootpw</password>
			<metadata>
				<type-mapping>MySQL</type-mapping>
			</metadata>
		</local-tx-datasource>
	</datasources>
?


??? 如果用的不是MySQL, 可参考JBoss Application Server distribution里docs/examples/jca文件夹下的data source定义文件.
????? 2, 拷MySQL的驱动到JBPM_HOME/jbpm-server/server/jbpm/lib文件夹下.
????? 3, 修改JBPM_HOME/jbpm-server/server/jbpm/deploy/jbpm.sar/META-INF文件夹下jboss-service.xml文件的内容. 替换为如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<server>
	<mbean code="org.jbpm.db.jmx.JbpmService"
		name="jboss.jbpm:name=DefaultJbpm,service=JbpmService"
		description="Default jBPM Service">
		<attribute name="JndiName">java:/jbpm/JbpmConfiguration</attribute>
		<depends>jboss.jca:service=DataSourceBinding,name=JbpmDS</depends>
	</mbean>
</server>
?


??? 也就是将depends中的name由原来的DefaultDS改为JbpmDS.
??? ??? 4, 找到JBPM_HOME/jbpm-server/server/jbpm/deploy/jbpm.sar文件夹下jbpm.sar.cfg.jar文 件, 解压到一个地方, 修改里面的hibernate.cfg.xml文件. 只有两处可改:
??? ??? <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
??? ??? <property name="hibernate.connection.datasource">java:/JbpmDS</property>
??? 修 改完后, 利用WinRaR压缩jbpm.sar.cfg.jar解压后的文件(一共三个文件(夹): jbpm.cfg.xml, hibernate.cfg.xml和META-INF文件夹),并命名为jbpm.sar.cfg.jar,替换原来的 jbpm.sar.cfg.jar文件 .
这里有一个注意点,如下图所示:

??? ??? 压缩时选定ZIP, 并将压缩名设置为jbpm.sar.cfg.jar 这样产生的文件名将是 jbpm.sar.cfg.jar.zip, 我们得再通过重命名的方式将".zip"去掉. 这样再替换掉原来的 jbpm.sar.cfg.jar文件.

??? ??? 至此, 我们修改完毕,双击JBPM_HOME\
jbpm-server下的start.bat,启动服务器. 在cmd的显示信息中,我找到如下的证明:

??? ??? 21:03:07,046 INFO [SettingsFactory] RDBMS: MySQL , version: 5.0.67-community-nt
??? ??? 21:03:07,046 INFO [SettingsFactory] JDBC driver: MySQL-AB JDBC Driver, version: mysql -connector-java-3.1.7 ( $Date: 2005/01/25 19:11:41 $, $Revision: 1.27.4.54 $ )
??? ??? 21:03:07,078 INFO [Dialect] Using dialect: org.hibernate.dialect.MySQLDialect

??? ??? 这样从结果上也证明我们配置成功!