JBPM4.4与SSH2之整合
JBPM4.4与SSH2之整合(附完整源码)
这是我来到这世上二十多年来,第二次写博客啊。哈哈
这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么差异(经过网上的收集对比,还真有些差异),整合起来,还真是有些步履艰难。收集了不少别人的整合资料和源码,但是最终不是这里不行,就是那里不行。经过一番努力,绕着转了个大圈,最终,还是自己搞出来了,原来它是如此的简单,特奉献出整合经验,避免大家再走我的老路,得不偿失。
想要让JBPM4.4与SSH2进行整合,首先肯定是要先让SSH2整合好,那是必须的。关于SSH2的整合,我在这就不多费口舌了,网上资料一大把。
整合前,很有必要先对JBPM有个感性的认识。JBPM在管理流程时,是需要数据库表的支持的,因为底层的逻辑有那么复杂。默认下载下来的配置,使用的是内存数据库。实际应用中,我们就需要连接到我们的数据库里来。所以要事先建好相关的表,相应的sql文件在\jbpm-4.4\install\src\db下,当然,你也可以使用hibernate的hibernate.hbm2ddl.auto自动建表,本人建议自己用建表语句,会少很多麻烦(本人在此处可没少碰麻烦)。
研究过JBPM的人都知道,JBPM在操作流程时,一切都是基于ProcessEngine对象,所以整合的思路很简单,只要我们能让Spring创建出ProcessEngine,整合就算是迈出一大步,我们先在spring配置文件(applicationContext.xml)里加入如下代码:
<!--jbpm4.4工作流 -->
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper">
<property name="jbpmCfg" value="spring-jbpm4.cfg.xml" />
</bean>
<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
在这里创建processEngine 对象,在这里用到spring-jbpm4.cfg.xml,它的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<jbpm-configuration>
<process-engine-context>
<string name="spring.cfg" value="spring-jbpm4.xml" />
</process-engine-context>
<import resource="jbpm.default.cfg.xml" />
<import resource="jbpm.tx.spring.cfg.xml" />
<import resource="jbpm.jpdl.cfg.xml" />
<import resource="jbpm.bpmn.cfg.xml" />
<import resource="jbpm.identity.cfg.xml" />
<import resource="jbpm.businesscalendar.cfg.xml" />
<import resource="jbpm.console.cfg.xml" />
<!--
<import resource="jbpm.jobexecutor.cfg.xml" />
-->
</jbpm-configuration>
看到这里,或许你又会问:spring-jbpm4.cfg.xml里又引用了那么多的文件,这些文件在哪里?这些文件,你不用担心,他们都在jbpm.jar文件里,这不是我们管的事。
到这里,算完了吗?还没有!前面说过,JBPM要数据库表的支持才能工作,JBPM又是使用Hibernate操作数据库,就不免要配置Hibernate的表与实体的映射文件,如下:
<property name="mappingLocations">
<list>
<value>classpath:jbpm.execution.hbm.xml</value>
<value>classpath:jbpm.history.hbm.xml</value>
<value>classpath:jbpm.identity.hbm.xml</value>
<value>classpath:jbpm.repository.hbm.xml</value>
<value>classpath:jbpm.task.hbm.xml</value>
</list>
</property>
我这里直接使用的spring管理,没使用hibernate.cfg.xml,本人没试过这种方式,读者可以自行试一下,最好把试验结果贴到此处来。
看到这里,或许你又会问,上面的这些*.hbm.xml文件又是哪来的?放心,这些,又是在jbpm.jar里的,我们只管加载就行。
哈哈,到此,整合所需要做的配置,就是这些了,关键一步走完了,是不是很简单呢?
下面一步,就是jar包的添加,如果你已经整合了SSH2,那么你只需要再添加jbpm.jar, juel-api.jar,juel-engine.jar,juel-impl.jar,mail.jar即可,本人所有的jar包列表如下(包括一些其它的jar包,此仅作参考):
antlr-2.7.6.jar
aopalliance-1.0.jar
aspectjrt.jar
aspectjweaver.jar
cglib-nodep-2.1_3.jar
classworlds-1.1.jar
common-annotations.jar
commons-beanutils-1.7.0.jar
commons-chain-1.1.jar
commons-codec.jar
commons-collections-3.1.jar
commons-dbcp.jar
commons-digester-1.8.jar
commons-fileupload.jar
commons-io.jar
commons-lang.jar
commons-logging-api-1.1.jar
commons-pool.jar
commons-validator-1.3.0.jar
dom4j-1.6.1.jar
dwr.jar
ehcache-1.2.3.jar
ejb3-persistence.jar
ezmorph-1.0.4.jar
fckeditor-2.4.1(fckeditor).jar
freemarker-2.3.8.jar
hibernate-annotations.jar
hibernate-cglib-repack-2.1_3.jar
hibernate-commons-annotations.jar
hibernate-entitymanager.jar
hibernate3.jar
javassist-3.4.GA.jar
jaxen-1.1-beta-7.jar
jbpm.jar
json-20090211.jar
json-lib-2.2.2-jdk15.jar
jsonplugin-0.33.jar
jstl.jar
jta-1.1.jar
juel-api.jar
juel-engine.jar
juel-impl.jar
jxl.jar
log4j-1.2.15.jar
mail.jar
mysql-connector-java-3.1.13-bin.jar
ognl-2.6.11.jar
oro-2.0.8.jar
plexus-container-default-1.0-alpha-10.jar
plexus-utils-1.2.jar
sitemesh-2.2.1.jar
slf4j-api-1.5.2.jar
slf4j-log4j12.jar
spring.jar
standard.jar
struts2-core-2.0.14.jar
struts2-spring-plugin-2.0.14.jar
urlrewrite-2.6.0.jar
xml-apis-1.0.b2.jar
xwork-2.0.7.jar
只要你把这些jar包添加,保准能整合成功。
我们部署到tomcat跑一下,看是否能成功。哈哈,只要你按照我上面的要求去做,是绝对可以跑起来的(本人用的tomcat 5.5,别的没试过,tomcat 6貌似还得加个东西),跑起来后,我们再做下测试,新建一个action,看代码里能否获取到processEngine对象。
public class TestAction extends ActionSupport
{
private ProcessEngine processEngine; /**
* 测试是否整合成功
*/
public String testJbpm()
{
System.out.println("整合成功");
System.out.println("processEngine: "+processEngine);
return SUCCESS;
} public void setProcessEngine(ProcessEngine processEngine)
{
this.processEngine = processEngine;
} public ProcessEngine getProcessEngine()
{
return processEngine;
}
}
哈哈。整合完毕!
(附:部署好本源码,访问index.html即可,如果浏览正常,即部署正常
源码下载地址为:http://download.csdn.net/source/2671387
很多朋友要求我把jar包也上传,jar包下载地址为:http://download.csdn.net/source/3084268
)
本文转自:http://zwllxs.iteye.com/blog/726303
JBPM4.4与SSH2之整合的更多相关文章
- jBPM4.4与SSH2整合
整合jBPM的目的就是能够通过注入的方式得到ProcessEngine实例,因为ProcessEngine是jbpm 的核心. 整合步骤: 1.新建web程,搭建好SSH2环境 2.导入jbpm相关的 ...
- ssh2项目整合 struts2.1+hibernate3.3+spring3 基于hibernate注解和struts2注解
项目文件夹结构例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveW9uZ3poaWFu/font/5a6L5L2T/fontsize/400/fi ...
- Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合例子(附完整的请假流程例子,jbpm基础,常见问题解决)
Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子(附完整的请假流程例子). 1.jbpm4.4 测试环境搭建 2.Jbpm4.4+hibernat ...
- Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子
转自:http://www.blogjava.net/wangxinsh55/archive/2011/07/24/354925.html Jbpm4.4+hibernate3.5.4+sprin ...
- java.lang.NoSuchMethodException: com.sun.proxy.$Proxy
删掉了@Transactional注解,结果成功了 是这个注解造成的. 是ssh2的整合强制我们使用分层架构.
- JBPM4.4+SSH 整合配置及完整实例
整合jBPM4.4+ssh过程(spring接管struts2和hibernate,例中都整合在application.xml中,没有单独的jbpm.hibernate.cfg.xml): 1.在se ...
- SSH整合JBPM4.4
第一步:导入所需jar包: 所需的jar包(使用了hibernate annotation和struts2的convention-plugin,可能有多余的包,没做清理): 第二步:修改jbpm配置文 ...
- jbpm4.4 spring整合
jBPM-4.4与Spring集成配置比较容易,这里我使用的是Spring-2.5.6,数据库连接池使用C3P0,将相关的两个jar文件加入到CLASSPATH中. jBPM-4.4与Spring集成 ...
- SSH2三大框架整合出错(四)
<%@taglib prefix="c" uri="http://java.sun.com/jsf/core" %> usage: java org ...
随机推荐
- 获取Ad用户信息
private]; } dt.Rows.Add(dr); } return dt; ...
- python 列表转为字典的两个小方法
1.现在有两个列表,list1 = ['key1','key2','key3']和list2 = ['1','2','3'],把他们转为这样的字典:{'key1':'1','key2':'2','ke ...
- iOS 定义圆角控件
ios7 以前,想把UILabel变为圆角的,只需要设置layer的 cornerRadius属性,ios7以后,还需要设置 masksToBounds = true. 以下是这个属性的说明 A Bo ...
- Sql Server 深入的探讨锁机制
一: 当select遇到性能低下的update会怎么样? 1. 还是使用原始的person表,插入6条数据,由于是4000字节,所以两条数据就是一个数据页,如下图: 1 DROP TABLE dbo. ...
- 手动创建第一个JSP应用
当按照上一篇文章所说的,配置好了tomcat服务器之后,我们就可以开发运行在tomcat上的第一个web应用了,在对tomcat的目录了解之后,我们知道webapps是存放我们编写相应应用程序的目录, ...
- BestCoder14 1002.Harry And Dig Machine(hdu 5067) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5067 题目意思:给出一个 n * m 的方格,每一个小方格(大小为1*1)的值要么为 0 要么为一个正 ...
- MFC基于Dialog的工程中使用OSG
osg的例子有osgviewerMFC,是MDI类型的MFC工程,我一般用基于对话框的MFC较多. 注意观察MFC_OSG.h文件中的cOSG构造函数,参数是一个窗口句柄hWnd,这里的窗口可以不只局 ...
- win7下IIS安装与配置运行网站
1.打开控制面板,点击程序和功能: 2.点击打开或关闭Windows功能进行安装: 3.等待进入安装界面,需要几十秒左右: 4.找到Internet信息服务,将Web管理工具和万维网服务所有勾上,然后 ...
- 查看LINUX当前负载
Linux的负载高,主要是由于CPU使用.内存使用.IO消耗三部分构成.任意一项使用过多,都将导致服务器负载的急剧攀升. [root@ok Desktop]# w 20:41:47 up 2:48, ...
- .net学习之多线程、线程死锁、线程通信 生产者消费者模式、委托的简单使用、GDI(图形设计接口)常用的方法
1.多线程简单使用(1)进程是不执行代码的,执行代码的是线程,一个进程默认有一个线程(2)线程默认情况下都是前台线程,要所有的前台线程退出以后程序才会退出,进程里默认的线程我们叫做主线程或者叫做UI线 ...