在最开始使用spring配置activiti时,并没有考虑到业务数据源和activiti本身数据库的事务性问题。在写到某一部分,业务抛出异常,业务数据库回滚了,而这里acitivi本次节点任务却无法回滚。在最开始配置acitiviti时配置文件如下:
<bean id="dataSourceActiviti" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close">
<property name="driverClassName" value="${process.driver}" />
<property name="url" value="${process.url}" />
<property name="username" value="${process.username}" />
<property name="password" value="${process.password}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${process.initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${process.maxActive}"></property>
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="${process.maxIdle}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${process.minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${process.maxWait}"></property>
</bean>
<bean id="transactionManagerActiviti" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSourceActiviti"></property>
</bean>
<!-- Activiti引擎配置 -->
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<property name="dataSource" ref="dataSourceActiviti" />
<property name="transactionManager" ref="transactionManagerActiviti" />
<property name="databaseSchemaUpdate" value="true" />
<property name="deploymentResources" value="classpath*:/activiti/heautyProcess.bpmn"></property>
</bean>
<!-- Activiti引擎工厂 -->
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<!-- Activiti的Service -->
<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
<bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" />
<bean id="formService" factory-bean="processEngine" factory-method="getFormService" />
<bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" />
<bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
<bean id="historyService" factory-bean="processEngine" factory-method