JBPM4.2与spring集成
修改jbpm提供的spring.jbpm.cfg.xml,application.xml,jbpm.tx.spring.cfg.xml,jbpm.tx.hibernate.cfg.xml来做spring与jbpm的集成,首先修改jbpm.tx.spring.cfg.xml的名字为jbpm42.spring.cfg.xml讲内容改为
<jbpm-configuration> <process-engine-context> <!--结合jbpm.tx.hibernate.xml--> <command-service name="txRequiredCommandService"> <skip-interceptor /> <retry-interceptor /> <environment-interceptor /> <!--使用spring管理transaction--> <spring-transaction-interceptor /> </command-service> <command-service name="newTxRequiredCommandService"> <retry-interceptor /> <environment-interceptor policy="requiresNew" /> <spring-transaction-interceptor current="true"/> </command-service> <!--下面为jbpm.default.cfg.xml中的配置,由于jbpm.default.cfg.xml中需要引入jbpm.hibernate.cfg.xml,所以将配置改写到这里,或改jbpm.hibernate.cfg.xml源码,将引入jbpm.hibernate.cfg.xml注掉--> <repository-service /> <repository-cache /> <execution-service /> <history-service /> <management-service /> <identity-service /> <task-service /> <object class="org.jbpm.pvm.internal.id.DatabaseDbidGenerator"> <field name="commandService"> <ref object="newTxRequiredCommandService" /> </field> </object> <object class="org.jbpm.pvm.internal.id.DatabaseIdComposer" init="eager" /> <script-manager default-expression-language="juel" default-script-language="juel"> <script-language name="juel" factory="org.jbpm.pvm.internal.script.JuelScriptEngineFactory" /> </script-manager> <types resource="jbpm.variable.types.xml" /> <address-resolver /> </process-engine-context> <transaction-context> <!--强制从当前线程中获取, 删掉了原来的<transaction />--> <hibernate-session factory="hibernateSessionFactory" current="true" /> <!--jbpm.default.cfg.xml中的配置--> <repository-session /> <db-session /> <message-session /> <timer-session /> <history-session /> </transaction-context> </jbpm-configuration>
接下来将spring.jbpm.cfg.xml改为
<jbpm-configuration> <import resource="jbpm.jpdl.cfg.xml" /> <import resource="spring/jbpm42.spring.cfg.xml" /> <import resource="jbpm.identity.cfg.xml" /> <import resource="jbpm.businesscalendar.cfg.xml" /> <import resource="jbpm.console.cfg.xml" /> <!-- <import resource="jbpm.jobexecutor.cfg.xml" />--> </jbpm-configuration>
最后将applicationContext.xml改为
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd" default-autowire="byName"> <context:property-placeholder location="classpath:jdbc.properties" /> <!-- Configure DB data source --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass"> <value>${jdbc.driver}</value> </property> <property name="jdbcUrl"> <value>${jdbc.url}</value> </property> <property name="user"> <value>${jdbc.username}</value> </property> <property name="password"> <value>${jdbc.password}</value> </property> <!-- <property name="maxActive" value="2" /> <property name="maxIdle" value="2" /> <property name="maxWait" value="10000" /> --> <!--连接池中保留的最小连接数。--> <property name="minPoolSize"> <value>5</value> </property> <property name="maxPoolSize"> <value>5000</value> </property> <property name="maxIdleTime"> <value>60</value> </property> <property name="idleConnectionTestPeriod"> <value>60</value> </property> <property name="acquireIncrement"> <value>10</value> </property> <property name="checkoutTimeout"> <value>0</value> </property> </bean> <!-- Configure hibernate session factory --> <bean id="hibernateSessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource"> <ref local="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> <prop key="hibernate.cache.use_second_level_cache">true</prop> <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop> <prop key="hibernate.show_sql">false</prop> <prop key="hibernate.format_sql">true</prop> </props> </property> <property name="mappingResources"> <list> <value>jbpm.repository.hbm.xml</value> <value>jbpm.execution.hbm.xml</value> <value>jbpm.history.hbm.xml</value> <value>jbpm.task.hbm.xml</value> <value>jbpm.identity.hbm.xml</value> </list> </property> </bean> <!-- =========jbpm4.2 configuration========= --> <bean id="jbpm4Configuration" class="org.jbpm.pvm.internal.cfg.SpringConfiguration"> <constructor-arg value="spring/spring.jbpm.cfg.xml" /> </bean> <bean id="processEngine" factory-bean="jbpm4Configuration" factory-method="buildProcessEngine" /> <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="historyService" factory-bean="processEngine" factory-method="getHistoryService" /> <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" /> <!-- =========jbpm4.2 end========= --> <!-- Transaction management--> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="hibernateSessionFactory" /> </property> </bean> <tx:annotation-driven transaction-manager="transactionManager" /> </beans>
修改完成。
途中出现的错误:
exception while executing command org.jbpm.pvm.internal.cmd.DeployCmd@
java.lang.NullPointerException
开始在网上找原因说是因为少了这么两句:
<deployer-manager>
<jpdl-deployer/>
</deployer-manager>但我是引入了jbpm.jpdl.cfg.xml的,不需要加这两句,后来跟代码发现repositorySession 为null
是由于没有加入<repository-session />所致。
相关推荐
yupi0 2020-10-10
spring 2020-08-18
编程点滴 2020-07-29
幸运小侯子 2020-07-05
itjavashuai 2020-07-04
qingjiuquan 2020-06-29
shushan 2020-06-25
小鱿鱼 2020-06-22
咻pur慢 2020-06-18
melonjj 2020-06-17
qingjiuquan 2020-06-13
neweastsun 2020-06-05
小鱿鱼 2020-06-05
mxcsdn 2020-05-31
吾日五省我身 2020-05-27
牧场SZShepherd 2020-05-27
sweetgirl0 2020-05-14