feat(autoSkip) - 新增如果某个节点的日志是需要隐藏的,则节点强制自动通过(跳过)

This commit is contained in:
wangli 2026-02-03 17:02:43 +08:00
parent 061264fb30
commit f716a25a5f
2 changed files with 23 additions and 6 deletions

View File

@ -55,6 +55,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.FLOW_SERVER_VERSION
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO;
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_LOG_NODE_HAS_BEEN_HIDDEN;
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_BUSINESS;
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_SIGN;
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_STARTER;
@ -186,8 +187,14 @@ public class EngineExecutionStartListener implements ExecutionListener {
assigners.addAll(approverSelect(specify.getType(), userTask, execution, true));
});
// 审批候选人为空时的兜底,
emptyAssigneeHandle(assigners, userTask, execution, categoryVersion);
// 部分节点查找人时如果不存在组织则要求隐藏日志
Boolean hiddenLog = execution.getVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN + userTask.getId(), Boolean.class);
if (!Objects.equals(Boolean.TRUE, hiddenLog)) {
// 审批候选人为空时的兜底,
emptyAssigneeHandle(assigners, userTask, execution, categoryVersion);
}
List<BpmnTaskDelegateAssigner> resultAssigners = getLimitedElementList(assigners, APPROVAL_ASSIGNER_LIMIT_NUMBER);
for (BpmnTaskDelegateAssigner user : resultAssigners) {
assigneeIdList.add(user.buildAssigneeId());

View File

@ -37,6 +37,7 @@ import java.util.Optional;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_TASK_RELATION_ASSIGNEE_INFO;
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_LOG_NODE_HAS_BEEN_HIDDEN;
import static cn.axzo.workflow.common.constant.BpmnConstants.WORKFLOW_ENGINE_VERSION;
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_STARTER;
@ -70,6 +71,14 @@ public class AutoOperatorEvent_101_Listener extends AbstractBpmnEventListener<Ta
Process mainProcess = repositoryService.getBpmnModel(delegateTask.getProcessDefinitionId()).getMainProcess();
UserTask userTask = (UserTask) mainProcess.getFlowElement(delegateTask.getTaskDefinitionKey());
// 检查当前节点的日志是否是要隐藏的如果是在则直接自动过审
Boolean hiddenLog = delegateTask.getVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN + userTask.getId(), Boolean.class);
if (Objects.equals(Boolean.TRUE, hiddenLog)) {
autoPass(delegateTask, null, "组织不存在时自动跳过");
log.info("AutoOperatorEventListener#onCreated...end:{}, processInstanceId:{}", delegateTask.getTaskDefinitionKey(), delegateTask.getProcessInstanceId());
return;
}
Optional<BpmnApproveConf> processApproveConf = BpmnMetaParserHelper.getProcessApproveConf(mainProcess);
// 开启了电子签名不能自动过审
Boolean activitySignature = BpmnMetaParserHelper.getActivitySignature(mainProcess.getFlowElement(delegateTask.getTaskDefinitionKey()));
@ -83,11 +92,12 @@ public class AutoOperatorEvent_101_Listener extends AbstractBpmnEventListener<Ta
boolean exists = checkApproverService.checkApproverExists(delegateTask, userTask, mainProcess, getContext());
log.info("是否需要自动过程判断 exists:{},processInstId:{},taskDefinitionKey:{}", exists, delegateTask.getProcessInstanceId(), delegateTask.getTaskDefinitionKey());
if (exists) {
autoPass(delegateTask, null,"已同意(同一审批人,自动过审)");
autoPass(delegateTask, null, "已同意(同一审批人,自动过审)");
}
} else {
// 检测节点自身配置是否有自动操作
checkApprovalMethod(delegateTask, userTask);
}
// 检测节点自身配置是否有自动操作
checkApprovalMethod(delegateTask, userTask);
log.info("AutoOperatorEventListener#onCreated...end:{}, processInstanceId:{}", delegateTask.getTaskDefinitionKey(), delegateTask.getProcessInstanceId());
}
@ -190,7 +200,7 @@ public class AutoOperatorEvent_101_Listener extends AbstractBpmnEventListener<Ta
}
private void autoReject(DelegateTask delegateTask) {
autoReject(delegateTask,"无需审批人,自动驳回" );
autoReject(delegateTask, "无需审批人,自动驳回");
}
/**