Spring integration with jBPM4
来自http://zhyi-12.javaeye.com/blog/375061 的实现
数据库: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集成的最简配置
-
- <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());
- assertNotNull(execution);
- assertEquals("a", execution.getActivityName());
-
-
- execution = executionService.signalExecutionById(execution.getId());
- assertNotNull(execution);
- assertEquals("b", execution.getActivityName());
-
-
- 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());
- }
- }