修改 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);
|
BpmTaskExtDO taskExt = taskExtMapper.selectByTaskId(taskId);
|
||||||
if (taskExt == null) {
|
if (taskExt == null) {
|
||||||
log.error("[updateTaskExtCancel][taskId({}) 查找不到对应的记录,可能存在问题]", taskId);
|
log.warn("[updateTaskExtCancel][taskId({}) 查找不到对应的记录,可能存在问题]", taskId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 如果已经是最终的结果,则跳过
|
// 如果已经是最终的结果,则跳过
|
||||||
if (BpmProcessInstanceResultEnum.isEndResult(taskExt.getResult())) {
|
if (BpmProcessInstanceResultEnum.isEndResult(taskExt.getResult())) {
|
||||||
log.error("[updateTaskExtCancel][taskId({}) 处于结果({}),无需进行更新]", taskId, taskExt.getResult());
|
log.info("[updateTaskExtCancel][taskId({}) 处于结果({}),无需进行更新]", taskId, taskExt.getResult());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -791,9 +791,10 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateTaskExtAssign(Task task) {
|
public void updateTaskExtAssign(Task task) {
|
||||||
// BpmTaskExtDO taskExtDO =
|
|
||||||
// new BpmTaskExtDO().setAssigneeUserId(NumberUtils.parseLong(task.getAssignee())).setTaskId(task.getId());
|
BpmTaskExtDO taskExtDO =
|
||||||
// taskExtMapper.updateByTaskId(taskExtDO);
|
new BpmTaskExtDO().setAssigneeUserId(NumberUtils.parseLong(task.getAssignee())).setTaskId(task.getId());
|
||||||
|
taskExtMapper.updateByTaskId(taskExtDO);
|
||||||
|
|
||||||
// 发送通知。在事务提交时,批量执行操作,所以直接查询会无法查询到 ProcessInstance,所以这里是通过监听事务的提交来实现。
|
// 发送通知。在事务提交时,批量执行操作,所以直接查询会无法查询到 ProcessInstance,所以这里是通过监听事务的提交来实现。
|
||||||
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
||||||
@ -820,7 +821,6 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
|
|
||||||
if(TransactionSynchronization.STATUS_COMMITTED == status){
|
if(TransactionSynchronization.STATUS_COMMITTED == status){
|
||||||
|
|
||||||
// ProcessInstance processInstance = processInstanceService.getProcessInstance(task.getProcessInstanceId());
|
|
||||||
BpmProcessInstanceExtDO processInstance = processInstanceService.getProcessInstanceDO(task.getProcessInstanceId());
|
BpmProcessInstanceExtDO processInstance = processInstanceService.getProcessInstanceDO(task.getProcessInstanceId());
|
||||||
|
|
||||||
// 如果当前审批人是流程发起人
|
// 如果当前审批人是流程发起人
|
||||||
@ -830,8 +830,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
BpmTaskApproveReqVO reqVO = new BpmTaskApproveReqVO();
|
BpmTaskApproveReqVO reqVO = new BpmTaskApproveReqVO();
|
||||||
reqVO.setId(task.getId());
|
reqVO.setId(task.getId());
|
||||||
reqVO.setReason(BpmConstants.AUTO_APPRAVAL);
|
reqVO.setReason(BpmConstants.AUTO_APPRAVAL);
|
||||||
|
// 另起线程处理 任务通过, 避免事务之间重复调用异常
|
||||||
|
new Thread(() -> approveTask(Long.valueOf(task.getAssignee()), reqVO)).start();
|
||||||
|
|
||||||
approveTask(Long.valueOf(task.getAssignee()), reqVO);
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// 判断不是加签状态的流程
|
// 判断不是加签状态的流程
|
||||||
@ -853,7 +854,8 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
BpmTaskApproveReqVO reqVO = new BpmTaskApproveReqVO();
|
BpmTaskApproveReqVO reqVO = new BpmTaskApproveReqVO();
|
||||||
reqVO.setId(task.getId());
|
reqVO.setId(task.getId());
|
||||||
reqVO.setReason(BpmConstants.AUTO_APPRAVAL);
|
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