修改 BPM流程 连续两次自动审批异常情况,
因事务之间调用导致异常,另起线程执行自动审批方法。
This commit is contained in:
parent
9bae873382
commit
81123dbbea
File diff suppressed because one or more lines are too long
@ -771,12 +771,12 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||
// 如果任务拓展表已经是完成的状态,则跳过
|
||||
BpmTaskExtDO taskExt = taskExtMapper.selectByTaskId(taskId);
|
||||
if (taskExt == null) {
|
||||
log.error("[updateTaskExtCancel][taskId({}) 查找不到对应的记录,可能存在问题]", taskId);
|
||||
log.warn("[updateTaskExtCancel][taskId({}) 查找不到对应的记录,可能存在问题]", taskId);
|
||||
return;
|
||||
}
|
||||
// 如果已经是最终的结果,则跳过
|
||||
if (BpmProcessInstanceResultEnum.isEndResult(taskExt.getResult())) {
|
||||
log.error("[updateTaskExtCancel][taskId({}) 处于结果({}),无需进行更新]", taskId, taskExt.getResult());
|
||||
log.info("[updateTaskExtCancel][taskId({}) 处于结果({}),无需进行更新]", taskId, taskExt.getResult());
|
||||
return;
|
||||
}
|
||||
|
||||
@ -791,9 +791,10 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskExtAssign(Task task) {
|
||||
// BpmTaskExtDO taskExtDO =
|
||||
// new BpmTaskExtDO().setAssigneeUserId(NumberUtils.parseLong(task.getAssignee())).setTaskId(task.getId());
|
||||
// taskExtMapper.updateByTaskId(taskExtDO);
|
||||
|
||||
BpmTaskExtDO taskExtDO =
|
||||
new BpmTaskExtDO().setAssigneeUserId(NumberUtils.parseLong(task.getAssignee())).setTaskId(task.getId());
|
||||
taskExtMapper.updateByTaskId(taskExtDO);
|
||||
|
||||
// 发送通知。在事务提交时,批量执行操作,所以直接查询会无法查询到 ProcessInstance,所以这里是通过监听事务的提交来实现。
|
||||
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
||||
@ -820,7 +821,6 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||
|
||||
if(TransactionSynchronization.STATUS_COMMITTED == status){
|
||||
|
||||
// ProcessInstance processInstance = processInstanceService.getProcessInstance(task.getProcessInstanceId());
|
||||
BpmProcessInstanceExtDO processInstance = processInstanceService.getProcessInstanceDO(task.getProcessInstanceId());
|
||||
|
||||
// 如果当前审批人是流程发起人
|
||||
@ -830,8 +830,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||
BpmTaskApproveReqVO reqVO = new BpmTaskApproveReqVO();
|
||||
reqVO.setId(task.getId());
|
||||
reqVO.setReason(BpmConstants.AUTO_APPRAVAL);
|
||||
// 另起线程处理 任务通过, 避免事务之间重复调用异常
|
||||
new Thread(() -> approveTask(Long.valueOf(task.getAssignee()), reqVO)).start();
|
||||
|
||||
approveTask(Long.valueOf(task.getAssignee()), reqVO);
|
||||
} else {
|
||||
|
||||
// 判断不是加签状态的流程
|
||||
@ -853,7 +854,8 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||
BpmTaskApproveReqVO reqVO = new BpmTaskApproveReqVO();
|
||||
reqVO.setId(task.getId());
|
||||
reqVO.setReason(BpmConstants.AUTO_APPRAVAL);
|
||||
approveTask(Long.valueOf(task.getAssignee()), reqVO);
|
||||
// 另起线程处理 任务通过, 避免事务之间重复调用异常
|
||||
new Thread(() -> approveTask(Long.valueOf(task.getAssignee()), reqVO)).start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user