这两天打算将jbpm和spring整合到一起,折腾了半天还是失败了。
下面将我的整合步骤简单描述一下:
首先我用 eclipse3.2+spring2+hibernate3.2 结合做了一个小例子,运行成功,使用的是声明式的事务。
接着我在上面的例子上加载了 spring-modules-0.6,因为这个模块里加载的是jbpm-3.1.1.jar而且还缺少了jbpm-identity-3.x.jar,于是我用jbpm3.1.2替换到了3.1.1,将我能够单独运行成功的websale例子按照spring-modules提供的手册上面的步骤进行了配置,一运行,jbpm的表正确生成了,但是生成jbpmConfiguration失败了,跳出了异常:
Caused by: org.hibernate.MappingException: Unknown entity: org.jbpm.context.def.VariableAccess
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:547)
at org.hibernate.impl.SessionFactoryImpl.evict(SessionFactoryImpl.java:845)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean$TransactionAwareInvocationHandler.invoke(AbstractSessionFactoryBean.java:284)
at $Proxy0.evict(Unknown Source)
at org.jbpm.db.hibernate.HibernateHelper.clearHibernateCache(HibernateHelper.java:129)
at org.jbpm.persistence.db.DbPersistenceServiceFactory.createSchema(DbPersistenceServiceFactory.java:108)
at org.jbpm.JbpmConfiguration.createSchema(JbpmConfiguration.java:415)
at org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean.afterPropertiesSet(LocalJbpmConfigurationFactoryBean.java:136)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1062)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1029)
... 23 more
下面是我的spring关于jbpm的配置
<!-- reading jBPM process definitions -->
<bean id="websaleWorkflow1" class="org.springmodules.workflow.jbpm31.definition.ProcessDefinitionFactoryBean">
<property name="definitionLocation" value="processdefinition.xml"/>
</bean>
<!-- jBPM configuration-->
<bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
<property name="sessionFactory" ref="sessionFactory"/>
<property name="configuration" value="jbpm.cfg.xml"/>
<property name="processDefinitions">
<list>
<ref local="websaleWorkflow1"/>
</list>
</property>
<property name="createSchema" value="true"/>
</bean>
<!-- jBPM template -->
<bean id="jbpmTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">
<constructor-arg index="0" ref="jbpmConfiguration"/>
<constructor-arg index="1" ref="websaleWorkflow1"/>
</bean>
下面将我的整合步骤简单描述一下:
首先我用 eclipse3.2+spring2+hibernate3.2 结合做了一个小例子,运行成功,使用的是声明式的事务。
接着我在上面的例子上加载了 spring-modules-0.6,因为这个模块里加载的是jbpm-3.1.1.jar而且还缺少了jbpm-identity-3.x.jar,于是我用jbpm3.1.2替换到了3.1.1,将我能够单独运行成功的websale例子按照spring-modules提供的手册上面的步骤进行了配置,一运行,jbpm的表正确生成了,但是生成jbpmConfiguration失败了,跳出了异常:
Caused by: org.hibernate.MappingException: Unknown entity: org.jbpm.context.def.VariableAccess
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:547)
at org.hibernate.impl.SessionFactoryImpl.evict(SessionFactoryImpl.java:845)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean$TransactionAwareInvocationHandler.invoke(AbstractSessionFactoryBean.java:284)
at $Proxy0.evict(Unknown Source)
at org.jbpm.db.hibernate.HibernateHelper.clearHibernateCache(HibernateHelper.java:129)
at org.jbpm.persistence.db.DbPersistenceServiceFactory.createSchema(DbPersistenceServiceFactory.java:108)
at org.jbpm.JbpmConfiguration.createSchema(JbpmConfiguration.java:415)
at org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean.afterPropertiesSet(LocalJbpmConfigurationFactoryBean.java:136)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1062)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1029)
... 23 more
下面是我的spring关于jbpm的配置
<!-- reading jBPM process definitions -->
<bean id="websaleWorkflow1" class="org.springmodules.workflow.jbpm31.definition.ProcessDefinitionFactoryBean">
<property name="definitionLocation" value="processdefinition.xml"/>
</bean>
<!-- jBPM configuration-->
<bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
<property name="sessionFactory" ref="sessionFactory"/>
<property name="configuration" value="jbpm.cfg.xml"/>
<property name="processDefinitions">
<list>
<ref local="websaleWorkflow1"/>
</list>
</property>
<property name="createSchema" value="true"/>
</bean>
<!-- jBPM template -->
<bean id="jbpmTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">
<constructor-arg index="0" ref="jbpmConfiguration"/>
<constructor-arg index="1" ref="websaleWorkflow1"/>
</bean>