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之整合的更多相关文章

  1. jBPM4.4与SSH2整合

    整合jBPM的目的就是能够通过注入的方式得到ProcessEngine实例,因为ProcessEngine是jbpm 的核心. 整合步骤: 1.新建web程,搭建好SSH2环境 2.导入jbpm相关的 ...

  2. ssh2项目整合 struts2.1+hibernate3.3+spring3 基于hibernate注解和struts2注解

    项目文件夹结构例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveW9uZ3poaWFu/font/5a6L5L2T/fontsize/400/fi ...

  3. 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 ...

  4. 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 ...

  5. java.lang.NoSuchMethodException: com.sun.proxy.$Proxy

    删掉了@Transactional注解,结果成功了 是这个注解造成的. 是ssh2的整合强制我们使用分层架构.

  6. JBPM4.4+SSH 整合配置及完整实例

    整合jBPM4.4+ssh过程(spring接管struts2和hibernate,例中都整合在application.xml中,没有单独的jbpm.hibernate.cfg.xml): 1.在se ...

  7. SSH整合JBPM4.4

    第一步:导入所需jar包: 所需的jar包(使用了hibernate annotation和struts2的convention-plugin,可能有多余的包,没做清理): 第二步:修改jbpm配置文 ...

  8. jbpm4.4 spring整合

    jBPM-4.4与Spring集成配置比较容易,这里我使用的是Spring-2.5.6,数据库连接池使用C3P0,将相关的两个jar文件加入到CLASSPATH中. jBPM-4.4与Spring集成 ...

  9. SSH2三大框架整合出错(四)

    <%@taglib prefix="c" uri="http://java.sun.com/jsf/core" %> usage: java org ...

随机推荐

  1. oracle、mysql、sybase和sqlserver复制表结构和数据

    Sql Server(sybase): 1.复制表结构: 新建表student2,并且结构同表syn_xj_student一致.Sql语句如下: 2.复制表数据,并排除俩表中相同的数据: insert ...

  2. CodeForces - 405A

    Gravity Flip Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit ...

  3. July 19th, Week 30th Tuesday, 2016

    The good seaman is known in bad weather. 惊涛骇浪,方显英雄本色. You can't be afraid to fail. It's the only way ...

  4. svn插件subclipse使用http代理同步svn时出现异常(解决)

    现象描述: 对项目进行“与资源库进行同步”时弹出对话框显示以下错误信息: 同步 SVNStatusSubscriber 时报告了错误.1 中的 0 个资源已经同步. 同步 /MMonitorLogis ...

  5. Android之记住密码与自动登陆实现

    本文主要讲述了利用sharedpreference实现记住密码与自动登陆功能 根据checkbox的状态存储用户名与密码 将结果保存在自定义的application中,成为全局变量 布局文件 < ...

  6. ORA-00824:cannot set SGA_TARGET or MEMORY_TARGET due to existing internal settings

    练习时执行一条修改数据库连接数的语句: alter system set processes=1 scope=spfile; 然后关闭数据库: shutdown 再启动数据库时,出现异常,报错信息如下 ...

  7. wp7 xml

    public class DynamicXMLNode : DynamicObject { XElement node; public DynamicXMLNode(XElement node) { ...

  8. WebLogic Exception

    访问Weblogic发生以下异常: 2013-08-20 10:15:11 ERROR [ExceptionConvertOnlyFilter] doFilter (line:70) Could no ...

  9. 基于superagent 与 cheerio 的node简单爬虫

    最近重新玩起了node,便总结下基本的东西,在本文中通过node的superagent与cheerio来抓取分析网页的数据. 目的  superagent 抓取网页 cheerio 分析网页 准备 N ...

  10. Linux 串口编程(转)

    无论那种操作方式,一般都通过四个步骤来完成: (1) 打开串口 (2) 配置串口 (3) 读写串口 (4) 关闭串口 转自