当前位置: 代码迷 >> Informix >> JBPM4.4在informix筹建及使用【转】
  详细解决方案

JBPM4.4在informix筹建及使用【转】

热度:6928   发布时间:2013-02-26 00:00:00.0
JBPM4.4在informix搭建及使用【转】

按照认识jbpm的顺序来介绍:

1.安装gpd插件图形化编译处理流程。

a、首先需要下载jbpm4.4,在官方有下载,地址为:http://sourceforge.net/projects/jbpm/files/jBPM%204/jbpm-4.4/jbpm-4.4.zip/download

b、下载后解压缩,找到这个文件“jbpm-gpd-site.zip”,具体位置在:jbpm-4.4\install\src\gpd\jbpm-gpd-site.zip

c、使用eclipse安装此插件,这里需要注意eclipse必须高于3.5这个版本,这样才能使用这个插件。(具体如何安装插件网上有很多介绍)

安装gpd插件到这基本就完事了,eclipse版本要注意下,提供下eclipse的下载地址:http://www.eclipse.org/downloads/

2.流程图编写

a、通过gpd绘制流程图时,有些版本会出现在视图界面输入组件名称后名称为倒序排列的,这个主要是因为每次输入字符后界面会自动刷新,使得输入框中的焦点回到起始位置,使用jbpm4.4所带的gpd就不会有这个问题。

b、关于gpd图形界面编辑后查看源码时会出现乱码,这个没发现什么好办法解决,目前在图形界面编辑后,点保存,然后再查看源码时就不会出现乱码了。

c、关于jbpm中的组件可以在网上查看相关资料,这里只贴下我们这边需求的样例:

3.将流程持久到informix数据库中

a、创建jbpm所需表结构,在jbpm4.4压缩包中可以找到:jbpm-4.4\install\src\db\create,这个目录下存放了各种数据库的建表SQL,使用informix则需要对SQL脚本进行调整,复制jbpm.oracle.create.sql为:jbpm.informix.create.sql。这里就从oracle脚本进行修改,调整为informix的建表SQL。

??? 具体需要处理的的内容为:

???? 类型number替换为DECIMAL

???? 类型varchar2替换为VARCHAR

???? 类型clob替换为TEXT

???? 类型timestamp替换为DATETIME YEAR TO SECOND

b、配置jpbm部署流程需要修改内容

?????找到文件:jbpm.hibernate.cfg.xml,修改相应内容为:

???? <property name="hibernate.dialect">InformixMapDialect</property>
???? <property name="hibernate.connection.driver_class">com.informix.jdbc.IfxDriver</property>
???? <property name="hibernate.connection.url">jdbc</property>
???? <property name="hibernate.connection.username">informix</property>
???? <property name="hibernate.connection.password">informix</property>
???? <property name="hibernate.hbm2ddl.auto">create-drop</property>
???? <property name="hibernate.format_sql">true</property>

???? 其中hibernate.dialect目前需要新增自定的方言类,实现CLOB和BLOB的转换,

?????否则在发布流程时会报错:No Dialect mapping for JDBC type: 2005? 和No Dialect mapping for JDBC type: 2004

???? InformixMapDialect代码如下:??????

???? public class InformixMapDialect extends InformixDialect {

????????? public InformixMapDialect() {
??????????????? super();
??????????????? registerColumnType(Types.BLOB, "BYTE" );
??????????????? registerColumnType(Types.CLOB, "TEXT");
????????? }
????? }