SSH整合jBPM4.3要注意

SSH整合jBPM4.3要注意的几个问题
你要用jBPM4.3,首先至少你要了解
1.UML2.0的活动图(因为jBPM是Activity Diagram模型)
2.Hibernate(因为jBPM集成了Hibernate作为引擎的持久框架)
当然最重要的是你对工作流的系统结构有初步的了解。

具体指引请参考 用户手册和开发手册,这里只是一些简单补充。
一、jBPM4.3下载
sourceforge下载
http://sourceforge.net/projects/jbpm/

svn仓库里下载
http://anonsvn.jboss.org/repos/jbpm/jbpm4

二、搭建环境(GDP在Eclipse上的安装)
当你无法在Eclipse安装jBPM4.3 GDP插件,把你的Eclipse SDK版本升级到3.42就OK了。
PS:不用重新下载Eclipse版本,通过Eclipse的自动升级就可以。Myeclipse同样适用=。=

三、jBPM4.3+SSH
1.在jbpm-4.3\install\src\db\create下选择你使用的数据库脚本(总共有18张表)
2.使用jbpm-4.3\install\src\demo下的SQL脚本生成测试用的数据

对jBPM4.3数据库的几张表简单介绍

引用

(1)JBPM4_DEPLOYMENT、(2)JBPM4_DEPLOYPROP及(3)JBPM4_LOB:存储 上传一个包含png和jpdl.xml的zip包 的相关数据
jbpm4_deployment表多了一条记录
jbpm4_deployprop表多了四条记录,对应langid,pdid,pdkey,pdversion
jbpm4_lob 表多了二条记录,保存流程图png图片和jpdl.xml
(4)JBPM4_HIST_PROCINST与(5)JBPM4_HIST_ACTINST分别存放的是Process Instance、Activity Instance的历史记录。
(6)JBPM4_EXECUTION主要是存放JBPM4的执行信息,Execution机制代替了JBPM3的Token机制(详细参阅JBPM4的PVM机制)。
(7)JBPM4_TASK存放需要人来完成的Activities,需要人来参与完成的Activity被称为Task。
(8)JBPM4_PARTICIPATION存放Participation的信息,Participation的种类有Candidate、Client、Owner、Replaced Assignee和Viewer。而具体的Participation既可以是单一用户,也可以是用户组。
(9)JBPM4_SWIMLANE。Swim Lane是一种Runtime Process Role。通过Swim Lane,多个Task可以一次分配到同一Actor身上。
(10)JBPM4_VARIABLE 存的是进行时的临时变量。
(11)JBPM4_HIST_DETAIL保存Variable的变更记录。
(12)JBPM4_HIST_VAR保存历史的变量。
(13)JBPM4_HIST_TASKTask的历史信息。
(14)JBPM4_ID_GROUP(15)JBPM_ID_MEMBERSHIP(16)JBPM4_ID_USER 这三张表很常见了,基本的权限控制,关于用户认证方面建议还是自己开发一套,JBPM4的功能太简单了,使用中有很多需要难以满足。
(17)JBPM4_JOB 存放的是Timer的定义。
(18)JBPM4_PROPERTY


3.因为jBPM集成了Hibernate作为引擎的持久框架,所以我们主要要做的就是把hibernate.cfg.xml的配置整进spring的配置文件applicationContext.xml中。

数据源配置参考jbpm-4.3\install\src\cfg\hibernate\spring\mysql.hibernate.cfg.xml

Mysql.hibernate.cfg.xml部分代码
...
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingLocations">
<list>
<value>classpath*:com/javaeye/examples/joa/entity/*.hbm.xml</value>
<value>classpath:jbpm.repository.hbm.xml</value>
<!-- 以下几个jbpm.*.hbm.xml由jBPM自带 -->
<value>classpath:jbpm.execution.hbm.xml</value>
<value>classpath:jbpm.history.hbm.xml</value>
<value>classpath:jbpm.task.hbm.xml</value>
<value>classpath:jbpm.identity.hbm.xml</value>
</list>
</property>
...
</bean>
...
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingLocations">
<list>
<value>classpath*:com/javaeye/examples/joa/entity/*.hbm.xml</value>
<value>classpath:jbpm.repository.hbm.xml</value>
<!-- 以下几个jbpm.*.hbm.xml由jBPM自带 -->
<value>classpath:jbpm.execution.hbm.xml</value>
<value>classpath:jbpm.history.hbm.xml</value>
<value>classpath:jbpm.task.hbm.xml</value>
<value>classpath:jbpm.identity.hbm.xml</value>
</list>
</property>
...
</bean>

jbpm和spring结合,具体参考jbpm-4.3\install\src\cfg\spring\applicationContext.xml

Applicationcontext.xml部分代码
...
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />

<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
...
...
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />

<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
...

问题1:
Caused by: org.hibernate.exception.ConstraintViolationException: could not delete:
[org.jbpm.pvm.internal.model.ExecutionImpl#7]

连接Mysql5时,jBPM4运行到 End结点时的错误,把org.hibernate.dialect.MySQLDialect改为 org.hibernate.dialect.MySQLInnoDBDialect

引用

MySQLInnoDBDialect继承自MySQLDialect
支持事务处理等高级处理,提供事务支持以及外部键等高级数据库功能。
InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)、多版本并发控制(multi-versioned concurrency control)的事务安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行级锁(locking on row level),提供与 Oracle 类似的不加锁读取(non-locking read in SELECTs)。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。另外InnoDB是为处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。MySQLInnoDBDialect基于上也就有InnoDB相同的功能.

InnoDB存储引擎被完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。 InnoDB存储它的表&索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。

InnoDB是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。

在 [url]http://www.innodb.com/ [/url]上可以找到 InnoDB 最新的信息。InnoDB 手册的最新版本总是被放置在那里,并且在那里可以得到 InnoDB 的商业许可(order commercial licenses)以及支持。


注意:数据库链接参考jbpm-4.3\install\src\cfg\hibernate\jdbc中的相应文件

我把在配置jbpm4.2时遇到的问题总结一下。

在学习http://www.family168.com/的jBPM4.1中文用户手册.pdf中发现一个问题。在“2.11.5在目录中添加jPDL4模式”这章中,作用在eclipse中菜单windows->Preferencess(窗口->首选项)中的xml这个标签在我的eclipse中没有。而且在画流程图时选择Source时没有代码着色与xml验证。解决:在http://sourceforge.net/projects/jbpm/files/中下载jBPM Process Designer下面的jbpm-jpdl-designer-3.1.7中的eclipse流程图插件。并在eclipse中菜单windows->Preferencess(窗口->首选项)中的xml中加入xml验证文件。
采用oracle作为jbpm的数据库时应该除了修改hibernate配置文件外还要将ojdbc14.jar文件复制到jbpm-4.2\lib下面。这个文件在oracle\ora92\jdbc\lib中有。
如果要用jbpm4中提供的build.xml文件放到eclipse中使用修改文件中的 <property name="jbpm.parent.dir" value="http://www.cnblogs.com/.." />的value就是jbpm的根目录.目录下面必须有jbpm-4.2这个子目录。
在发布流程图时oracle有时会报错。在jbpm.hibernate.cfg.xml 中加入<property name="hibernate.jdbc.batch_size">0</property>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值