修改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 流程定义打包部署 ...
第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...
- 它可以集成现有的安全框架,如Spring Security或JBoss AS的安全组件。 ##### 2.5 JBoss jBPM Job执行器 - **Job执行器** 用于调度和执行异步任务,例如定时任务或外部系统调用。 - 它支持多种类型的作业,并且...
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. 理解代码....................................