修改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 />所致。
分享到:
相关推荐
#### 五、jbpm4.2与Java Web集成 - **Spring框架集成**:利用Spring的依赖注入特性简化jbpm组件的配置。 - **Web应用示例**:提供了一个基于Tomcat的应用示例,展示了如何在Web环境中使用jbpm进行流程管理。 - **...
jbpm4.2jar是一个与Java业务流程管理(BPM)相关的库文件,它属于jbpm框架的第4.2版本。jbPM是开源的企业级BPM解决方案,它提供了全面的功能来支持工作流自动化、业务规则管理和组织内业务流程的建模、执行和监控。 ...
标题中的"Spring 3.1.x + Hibernate 4.2.x + JBPM 5.2 + Ecache例子源码"代表了一个集成开发环境,其中包含了四个关键的技术组件: 1. **Spring 3.1.x**:这是一个开源的应用框架,主要用于简化Java企业级应用的...
标题 "Spring 3.1.x + Hibernate 4.2.x + JBPM 5.2 + Ecache 例子" 涉及的是一个集成多种技术的Java应用开发示例。这个项目可能是一个完整的业务流程管理系统,它整合了Spring、Hibernate、JBPM和Ecache等关键组件。...
- **4.2.1 修改jbpm相关的数据库配置**: 更新数据库连接参数,确保与MySql兼容。 - **4.2.2 第二次运行时注释掉以下代码**: 为了避免不必要的错误,需要根据实际情况注释掉部分代码。 **4.3 移植WFproject** - **...
jBPM4与Spring框架集成 296 18.1 集成的目标 297 18.2 为集成配置jBPM4 297 18.3 为集成配置Spring 299 18.4 使用 301 18.5 测试 302 18.6 小结 302 第19章 jBPM4与JBoss应用服务器集成 303 19.1 流程定义打包部署 ...
Spring集成 本章介绍了如何将jBPM 4与Spring框架集成,这对于希望利用Spring特性的开发者来说非常重要。 ### 总结 jBPM-4.0开发手册全面而详细地介绍了jBPM 4.0的各项功能和技术细节,为开发者提供了宝贵的参考...
第6章 将Spring与其他Web框架集成 209 6.1 在一般Web应用中访问Spring 209 6.1.1 问题 209 6.1.2 解决方案 210 6.1.3 工作原理 210 6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2...
- 介绍了如何将任务管理组件与JBPM引擎集成。 - **12.2.3 启动任务管理组件** - 介绍了如何启动任务管理组件。 - **12.2.4 和任务管理组件的交互** - 介绍了如何与任务管理组件进行交互。 - **12.3 人工任务...
第6章 将Spring与其他Web框架集成 209 6.1 在一般Web应用中访问Spring 209 6.1.1 问题 209 6.1.2 解决方案 210 6.1.3 工作原理 210 6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2...
Camunda不仅能够与多种工作流技术兼容,还支持与其他多种工作流引擎进行集成,包括但不限于: - Active BPEL - Alfresco Activiti - Appian BPM - Bonitasoft - JBoss jBPM - IBM WPS / IBM BPM / IBM MQ Workflow /...
在编写这个Demo之前,至少要了解Activiti与Spring如何集成、XxxService各自的任务与作用,并完成上一章的Demo。 3.2. 流程文件xxx.bpmn20.xml 首先,我们就来编写这个流程的bpmn20.xml文件。 targetNamespace=...
1.4. Seam 和jBPM:待办事项列表(todo list)示例..................................................................................................... 32 1.4.1. 理解代码....................................