update(REQ-2324) - 修复自动过审的逻辑
This commit is contained in:
parent
9c25847053
commit
335d8f22eb
@ -1,6 +1,7 @@
|
||||
package cn.axzo.workflow.core.engine.behavior;
|
||||
|
||||
import cn.axzo.workflow.core.engine.event.ExtTaskInstCreateEvent;
|
||||
import cn.axzo.workflow.core.engine.event.ExtTaskInstUpdateEvent;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.bpmn.model.MapExceptionEntry;
|
||||
import org.flowable.bpmn.model.ServiceTask;
|
||||
@ -20,6 +21,7 @@ import org.flowable.task.service.impl.persistence.entity.TaskEntity;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.APPROVED;
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
|
||||
|
||||
/**
|
||||
* 自定义的服务任务活动行为处理器
|
||||
@ -60,21 +62,21 @@ public class CustomServiceTaskDelegateExpressionActivityBehavior extends Service
|
||||
// 添加 taskInst 扩展表数据
|
||||
FlowableEventDispatcher eventDispatcher = processEngineConfiguration.getEventDispatcher();
|
||||
eventDispatcher.dispatchEvent(new ExtTaskInstCreateEvent(execution.getProcessInstanceId(),
|
||||
execution.getCurrentActivityId(), task.getId(), APPROVED),
|
||||
execution.getCurrentActivityId(), task.getId(), PROCESSING),
|
||||
processEngineConfiguration.getEngineCfgKey());
|
||||
super.execute(execution);
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void leave(DelegateExecution execution) {
|
||||
// CommandContext commandContext = CommandContextUtil.getCommandContext();
|
||||
// ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||
// CommandContextUtil.getProcessEngineConfiguration(commandContext);
|
||||
//
|
||||
// FlowableEventDispatcher eventDispatcher = processEngineConfiguration.getEventDispatcher();
|
||||
// eventDispatcher.dispatchEvent(new ExtTaskInstUpdateEvent(execution.getProcessInstanceId(),
|
||||
// execution.getCurrentActivityId(), task.getId(), APPROVED),
|
||||
// processEngineConfiguration.getEngineCfgKey());
|
||||
// super.leave(execution);
|
||||
// }
|
||||
@Override
|
||||
public void leave(DelegateExecution execution) {
|
||||
CommandContext commandContext = CommandContextUtil.getCommandContext();
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||
CommandContextUtil.getProcessEngineConfiguration(commandContext);
|
||||
|
||||
FlowableEventDispatcher eventDispatcher = processEngineConfiguration.getEventDispatcher();
|
||||
eventDispatcher.dispatchEvent(new ExtTaskInstUpdateEvent(execution.getProcessInstanceId(),
|
||||
execution.getCurrentActivityId(), task.getId(), APPROVED),
|
||||
processEngineConfiguration.getEngineCfgKey());
|
||||
super.leave(execution);
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,10 +88,11 @@ public class ExtTaskInstEventListener extends AbstractFlowableEventListener {
|
||||
}
|
||||
|
||||
private void updateExtTaskInst(ExtTaskInstUpdateEvent event) {
|
||||
// extAxHiTaskInstService.updateByTaskIdAndInstanceId(event.getTaskId(), event.getProcessInstanceId(),
|
||||
// event.getAssignee(), event.getResultEnum());
|
||||
// 利用引擎异步任务的重试能力, 去正确更新扩展任务表的状态
|
||||
createAsyncJob(event);
|
||||
extAxHiTaskInstService.updateByTaskIdAndInstanceId(event.getTaskId(), event.getProcessInstanceId(),
|
||||
event.getAssignee(), event.getResultEnum());
|
||||
// modify by wangli: 2024.6.4 移除异步任务,因为异步会导致“自动过审”的判断逻辑中,查询扩展表时,数据不一致
|
||||
// // 利用引擎异步任务的重试能力, 去正确更新扩展任务表的状态
|
||||
// createAsyncJob(event);
|
||||
}
|
||||
|
||||
private void createAsyncJob(ExtTaskInstUpdateEvent event) {
|
||||
|
||||
@ -85,7 +85,7 @@ public class ExtAxHiTaskInstServiceImpl implements ExtAxHiTaskInstService {
|
||||
LambdaUpdateWrapper<ExtAxHiTaskInst> wrapper = new LambdaUpdateWrapper<ExtAxHiTaskInst>()
|
||||
.eq(ExtAxHiTaskInst::getTaskId, taskId)
|
||||
.eq(ExtAxHiTaskInst::getProcInstId, processInstanceId)
|
||||
// 可能由于事件消费时, 嵌套了引擎操作, 会引起一部分的消息顺序异常, 导致状态被异常变更
|
||||
// 只能变更还是处理中的状态
|
||||
.eq(ExtAxHiTaskInst::getStatus, PROCESSING.getStatus());
|
||||
extAxHiTaskInstMapper.update(entity, wrapper);
|
||||
}
|
||||
|
||||
@ -88,17 +88,6 @@ public class AutoOperatorEvent_101_Listener extends AbstractBpmnEventListener<Ta
|
||||
|
||||
if (Objects.equals(NODE_STARTER.getType(), delegateTask.getTaskDefinitionKey())) {
|
||||
createAsyncApproveJob(delegateTask);
|
||||
/*BpmnTaskDelegateAssigner initiator = getContext().getInitiator(() -> BpmnTaskDelegateAssigner.toObjectCompatible(delegateTask.getVariable(INTERNAL_INITIATOR)));
|
||||
if (Objects.nonNull(initiator)) {
|
||||
delegateTask.setVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + delegateTask.getId(),
|
||||
initiator.toJson());
|
||||
}
|
||||
|
||||
delegateTask.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + delegateTask.getId(),
|
||||
APPROVED.getStatus());
|
||||
// 直接完成
|
||||
taskService.complete(delegateTask.getId(), runtimeService.getVariables(delegateTask.getExecutionId()));*/
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -106,6 +95,7 @@ public class AutoOperatorEvent_101_Listener extends AbstractBpmnEventListener<Ta
|
||||
UserTask userTask = (UserTask) mainProcess.getFlowElement(delegateTask.getTaskDefinitionKey());
|
||||
|
||||
boolean exists = checkApproverExists(delegateTask, userTask, mainProcess);
|
||||
log.info("是否需要自动过程判断 exists:{}", exists);
|
||||
if (exists) {
|
||||
taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), COMMENT_TYPE_ADVICE,
|
||||
"同一审批人,自动过审");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user