一、修改applicationContext.xml配置
1.修改sessionFactory
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingJarLocations">
<list>
<value>WEB-INF/lib/jbpm-3.0.1.jar</value>
<!--<value>WEB-INF/lib/jbpm-identity-3.0.1.jar</value>-->
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<list>
<value>WEB-INF/lib/jbpm-3.0.1.jar</value>
<!--<value>WEB-INF/lib/jbpm-identity-3.0.1.jar</value>-->
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
</props>
</property>
</bean>
</props>
</property>
</bean>
注意:
(1)由于我使用的JBPM是以JAR的形式存在于CLASSPATH中的,所以当加载其中的HIBERNATE实体描述文件的时候需要使用下面的写法:
<value>WEB-INF/lib/jbpm-3.0.1.jar</value>
<value>WEB-INF/lib/jbpm-3.0.1.jar</value>
(2)为了使HIBERNATE3查询的时候使用正确的语法需要指明查询工厂类,如果不指定回出现ClassNotFoundException: org.hibernate.hql.ast.HqlToken 的错误!
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
2.加入以下配置
<!-- reading jBPM process definitions -->
<bean id="appWorkflow"
class="org.springmodules.workflow.jbpm31.definition.ProcessDefinitionFactoryBean">
<property name="definitionLocation"
value="/WEB-INF/processdefinition.xml" />
</bean>
<bean id="appWorkflow"
class="org.springmodules.workflow.jbpm31.definition.ProcessDefinitionFactoryBean">
<property name="definitionLocation"
value="/WEB-INF/processdefinition.xml" />
</bean>
<!-- jBPM configuration-->
<bean id="jbpmConfiguration"
class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
<property name="sessionFactory" ref="sessionFactory" />
<property name="configuration" value="/WEB-INF/jbpm.cfg.xml" />
<property name="processDefinitions">
<list>
<ref local="appWorkflow" />
</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="appWorkflow" />
</bean>
<bean id="jbpmTemplate"
class="org.springmodules.workflow.jbpm31.JbpmTemplate">
<constructor-arg index="0" ref="jbpmConfiguration" />
<constructor-arg index="1" ref="appWorkflow" />
</bean>
3.更新包引用:ehcache-1.2.4
Spring2.0和jbpm3.1.2都使用了ehcache做为二级缓存。默认情况下Spring2.0引用ehcache-1.2,jbpm3.1.2引用ehcache-1.1。
两个ehcache不能同时存在。
报错:CacheManager.init方法不更实例化
最后下载了ehcache-1.2.4版本加入引用,成功运行。
4.更改jbpm.cfg.xml配置
针对jbpm3.1.2,在按照如上所示配置完成后,启动过程log里会抱错,说没有配置String类型变量"default.jbpm.context",经过对源码debug,可以发现,在jbpm3.1.2中的jbpmConfiguration初始化jbpmContext的过程中,已经配置了默认的jbpmContext名称为default.jbpm.context,并存在相应的变量中,因此在配置文件jbpm.cfg.xml中我们应该为其中的jbpm-context指定name属性。
在jbpm.cfg.xml里加入这个一句
<jbpm-context name="default.jbpm.context"/>
这样就完成了配置。