现在的位置: 首页 > 综合 > 正文

SSH+Jbpm4

2014年04月05日 ⁄ 综合 ⁄ 共 3834字 ⁄ 字号 评论关闭

1.到官网下载jbpm-4.4.zip。
2.将jbpm4.4必须包导入项目中。如果懒就将全部包导入项目,但不推荐这么做,因为会有很多重复包,可能会造成一些莫明其妙的问题。至于哪些是必需包,可以参考:http://yuanlg.iteye.com/blog/1114842
另由于jbpm4内部使用hibernate做的持久化,而hibernate所需的包,在原系统已经导入,所以hibernate依赖的包,就不用导入了。
3.众所周知,对jbpm4的操作,都需要由ProcessEngine这个类做为入口。因此,得到这个类,就能直接访问jbpm4提供的各种服务。我们将jbpm4集成到spring,也是拿这个类做为入口。只要能得到这个类的bean对象,集成就算成功了。幸好,jbpm4.4已提供了集成到spring的方案。网上有很多集成方案有一些是自己写的,有一些是jbpm4早期版本提供的。到4.3版本,官方提供的是使用SpringHelper来做集成。
只要将以下bean配制放到applicationContext.xml里,就算是集成完成了。
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper">
     <property name="jbpmCfg" value="spring.jbpm.cfg.xml"></property>
</bean>
<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine"/>
上面的spring.jbpm.cfg.xml可以将\jbpm-4.4\install\src\cfg\jbpm\spring.jbpm.cfg.xml复制到项目的src目录下。
细心的人可能会打开spring.jbpm.cfg.xml这个文件看看,发现里面有以下配制,甚是疑问!!!
<string name="spring.cfg" value="applicationContext.xml" />
我当初也不懂这是什么意思,后面根踪源代码才发现,这个配制完全可以删除。于是我将它删除了。当然,你也可以不用删,完全没影响。
以下是使用这个配制的源代码,贴同来,供参考!
    if (configuration.isInstantiatedFromSpring()) {
      applicationContext = (ApplicationContext) configuration.getApplicationContext();
       //(略)……
    } else {
      String springCfg = (String) configuration.getProcessEngineWireContext().get("spring.cfg");
      if (springCfg==null) {
        springCfg = "applicationContext.xml";
      }
      applicationContext = new ClassPathXmlApplicationContext(springCfg);
      springProcessEngine = (SpringProcessEngine) applicationContext.getBean("processEngine");
    }
意思是:当我们直接new SpringHelper对象,并调用createProcessEngine()方法时,它会找到applicationContext.xml来初始化一个applicationContext。
而如果将SpringHelper交给spring Ioc容器创建时,它就不需要自已去初始化applicationContext,因为SpringHelper实现了ApplicationContextAware接口,spring会自动将applicationContext对象注入进来。
在这里,我们肯定是将SpringHelper交给spring Ioc容器创建。所以spring.cfg这个配制根本用不上。
4.初始化数据库。
在\jbpm-4.4\install\src\db\create目录下,有相应数据库的sql脚本。找到适合你的脚本,执行,初始化数据库便成功了。
不可否认,这里提供的sql脚本的确有点少。连DB2、sql server的都没有提供。
5.配制jbpm4的对象关系映射
jbpm4使用hibernate做持久化,而hibernate在原系统中已与spring集成好。因此,只需要将jbpm4的hbm文件加入sessionFactory bean配制中就可以了。将以下配制加入sessionFactory bean中。
<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>
这些jbpm.*.hbm.xml文件,在jbpm.jar里面。因此,加上classpath前缀,强制从类路径里查找资源。
至此,大功告成,集成完毕。
现在,该怎么使用呢?很简单,在你需要使用jbpm4的类里,声明一个processEngine属性,并写上相应的setter/getter方法。在spring bean配制文件里,将processEngine对象注入进来,便可以使用jbpm4提供的各种服务了。
在实际项目中,我还加入了以下配制,当需要哪个服务时,便注入哪个服务对象。这样也算是解藕吧!呵呵……
<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService"/>
<bean id="executionService" factory-bean="processEngine" factory-method="getExecutionService"/>
<bean id="taskService" factory-bean="processEngine" factory-method="getTaskService"/>
<bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService"/>

 

依赖包介绍

activation.jar

发送EMAIL需要的包

antlr-2.7.6.jar

hibernate依赖包

commons-collections-3.1.jar

hibernate依赖包

dom4j-1.6.1.jar

hibernate依赖包

drools-api.jar

JBoss组织下面的一个规则引擎

drools-compiler.jar

JBoss组织下面的一个规则引擎

drools-core.jar

JBoss组织下面的一个规则引擎

freemarker.jar

模板引擎

hibernate3.jar

Hibernate

janino.jar

一个开源的JAVA编译器,能够把JAVA源代码编译为字节码

javassist-3.9.0.GA.jar

hibernate依赖包

jbpm.jar

JBPM核心包

joda-time.jar

对日期和时间进行处理的工具类库,可替代java.util.Calendar中的相关功能

jta-1.1.jar

Hibernate依赖包

juel-api.jar

EL表达式的一个开源实现包(EL表达式不仅仅可以用于JSP中)

juel-engine.jar

EL表达式的一个开源实现包(EL表达式不仅仅可以用于JSP中)

juel-impl.jar

EL表达式的一个开源实现包(EL表达式不仅仅可以用于JSP中)

livetribe-jsr223.jar

jsr223是把其它脚本语言嵌入JAVA的一个规范,这个JAR包是对这个规范的实现

log4j-1.2.16.jar

日志记录

mail.jar

发送EMAIL的依赖包

mvel2.jar

MVEL,是一个类似于OGNL的表达式语言解释工具,性能优于OGNL

mysql-connector-java-3.1.13-bin.jar

MySql驱动

slf4j-api-1.5.8.jar

Hibernate依赖包

slf4j-log4j12-1.5.8.jar

Hibernate依赖包

缺省情况下,JBPM使用Hibernate来对各种信息进行持久化,所以,上述列表中也有Hibernate相关的依赖包

抱歉!评论已关闭.