提前试用spring 集成 jbpm4

在jbpm4的项目中,在下面的网址中看到了简单集成spring 和 jbpm4的集成方法。

http://www.slideshare.net/guest8d4bce/spring-integration-with-jbpm4

 

jbpm4的分支中已经有了集成的代码

http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbpm_svn/jbpm4/branches/ainze/

 

唯一的遗憾就是代码目前还没有和最新的代码同步,于是乎就简单的对这两块代码先做了些合并工作.

数据库:mysql

集成项:spring2.5  hibernate3.3  jbpm4

相关的类:

org.jbpm.pvm.internal.cfg.JbpmConfiguration (其中的buildProcessEngine方法 有些东西没有合并进去,可能会有些问题 ,有兴趣的可以探寻下)

org.jbpm.pvm.internal.cfg.SpringConfiguration(Tom Baeyens在TODO中,这个是ainze写的)

 

org.jbpm.pvm.internal.env.SpringPvmEnvironment(ainze)

 

org.jbpm.pvm.internal.spring.SpringConfigurationFactoryBean(ainze)

 

 

(jbpm.cfg.xml中只需要注释掉hibernate的配置即可)

 

spring 配置--使用了SpringConfigurationFactoryBean(调整自ainze)的方式配置时 这个就是spring集成的最简配置

<!-- jbpm4配置   -->
    <bean id="configuration" class="org.jbpm.spring.cfg.SpringConfigurationFactoryBean">
    	<property name="jbpmConfigurationLocation" value="jbpm.cfg.xml"></property>
    	<property name="sessionFactory" ref="sessionFactory" />
    </bean>

 

测试代码--org.jbpm.spring.test.AbstractTransactionalSpringJbpmTestCase(author Andries Inze)

public class SimpleProcessTest  extends AbstractTransactionalSpringJbpmTestCase{
 
 @Override
 protected String[] getConfigLocations() {
  return new String[]{"classpath:test-context-hibernate.xml"};
 }
 public void test1(){
   deployJpdlXmlString( 
     "<process name='p'>" 
     + " <start>" 
     + "  <transition to='a'/>"
     + " </start>" 
     + " <state name='a'>" 
     + "   <transition to='b'/>"
     + "</state>"
     + " <state name='b'>" 
     + "   <transition to='c'/>"
     + "</state>"
     + " <state name='c'/>" 
      + "</process>");
   
   
   Execution execution = executionService.startProcessInstanceByKey("p");
   execution = executionService.findExecutionById(execution.getId());//.findExecution(execution.getId());
   assertNotNull(execution);
   assertEquals("a", execution.getActivityName());
   
  //a流向b 
   execution = executionService.signalExecutionById(execution.getId());
   assertNotNull(execution);
   assertEquals("b", execution.getActivityName());
   
  //b流向c 
   execution = executionService.signalExecutionById(execution.getId());
   assertNotNull(execution);
   assertEquals("c", execution.getActivityName());
   //再次启动流程
   execution = executionService.startProcessInstanceByKey("p");
  //第三次启动流程
   execution = executionService.startProcessInstanceByKey("p");
   
   assertEquals(3,executionService.createProcessInstanceQuery().list().size());
 }
}

 

你可能感兴趣的:(spring,bean,Hibernate,jbpm,IOC)