flowable 怎么把每个任务节点的数据库操作放到单独的事务中
时间: 2023-12-06 11:39:40 浏览: 94
flowable 6.8 适配达梦数据库
在 Flowable 中,每个任务节点的数据库操作默认都是在同一个事务中执行的。如果需要将每个任务节点的数据库操作放到单独的事务中,可以使用 Spring 提供的事务机制来实现。
具体步骤如下:
1. 在 Spring 配置文件中开启事务管理器:
```
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
```
2. 在任务节点的 Java 类中添加 `@Transactional` 注解,并指定事务的传播行为为 `REQUIRES_NEW`:
```
@Service
public class MyTaskService {
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void completeTask(String taskId, Map<String, Object> variables) {
// 执行任务节点的业务逻辑
...
// 完成任务
taskService.complete(taskId, variables);
}
}
```
这样,每个任务节点的数据库操作都会在单独的事务中执行。如果某个任务节点的数据库操作失败,只会回滚该任务节点的事务,而不会影响其他任务节点的事务。
阅读全文