`
卡拉阿风
  • 浏览: 99354 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SSH整合jBPM4.3要注意的几个问题

    博客分类:
  • jBPM
阅读更多
你要用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
...
<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
...
<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中的相应文件
6
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics