Merge branch 'feature/hiddenLogAutoSkip' into pre

This commit is contained in:
wangli 2026-02-10 11:56:37 +08:00
commit 2e802e1ae9
2 changed files with 27 additions and 4 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_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_INITIATOR;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO; 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_BUSINESS;
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_SIGN; import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_SIGN;
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_STARTER; import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_STARTER;
@ -188,8 +189,21 @@ public class EngineExecutionStartListener implements ExecutionListener {
assigners.addAll(approverSelect(specify.getType(), userTask, execution, true)); assigners.addAll(approverSelect(specify.getType(), userTask, execution, true));
}); });
// 审批候选人为空时的兜底, // 部分节点查找人时如果不存在组织则要求隐藏日志
emptyAssigneeHandle(assigners, userTask, execution, categoryVersion); Boolean hiddenLog = false;
try {
hiddenLog = execution.getVariable(TASK_LOG_NODE_HAS_BEEN_HIDDEN + userTask.getId(), Boolean.class);
log.info("查询是否是组织不存在,需要隐藏日志: {}", hiddenLog);
} catch (Exception e) {
// ignore
log.warn("查询需要隐藏日志标识异常: {}", e.getMessage(), e);
}
if (!Objects.equals(Boolean.TRUE, hiddenLog)) {
// 审批候选人为空时的兜底,
log.info("执行审批人为空的兜底");
emptyAssigneeHandle(assigners, userTask, execution, categoryVersion);
}
List<BpmnTaskDelegateAssigner> resultAssigners = getLimitedElementList(assigners, APPROVAL_ASSIGNER_LIMIT_NUMBER); List<BpmnTaskDelegateAssigner> resultAssigners = getLimitedElementList(assigners, APPROVAL_ASSIGNER_LIMIT_NUMBER);
for (BpmnTaskDelegateAssigner user : resultAssigners) { for (BpmnTaskDelegateAssigner user : resultAssigners) {
assigneeIdList.add(user.buildAssigneeId()); 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_INITIATOR;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_TASK_RELATION_ASSIGNEE_INFO; 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.constant.BpmnConstants.WORKFLOW_ENGINE_VERSION;
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_STARTER; 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(); Process mainProcess = repositoryService.getBpmnModel(delegateTask.getProcessDefinitionId()).getMainProcess();
UserTask userTask = (UserTask) mainProcess.getFlowElement(delegateTask.getTaskDefinitionKey()); 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, log hidden...end:{}, processInstanceId:{}", delegateTask.getTaskDefinitionKey(), delegateTask.getProcessInstanceId());
return;
}
Optional<BpmnApproveConf> processApproveConf = BpmnMetaParserHelper.getProcessApproveConf(mainProcess); Optional<BpmnApproveConf> processApproveConf = BpmnMetaParserHelper.getProcessApproveConf(mainProcess);
// 开启了电子签名不能自动过审 // 开启了电子签名不能自动过审
Boolean activitySignature = BpmnMetaParserHelper.getActivitySignature(mainProcess.getFlowElement(delegateTask.getTaskDefinitionKey())); Boolean activitySignature = BpmnMetaParserHelper.getActivitySignature(mainProcess.getFlowElement(delegateTask.getTaskDefinitionKey()));
@ -83,7 +92,7 @@ public class AutoOperatorEvent_101_Listener extends AbstractBpmnEventListener<Ta
boolean exists = checkApproverService.checkApproverExists(delegateTask, userTask, mainProcess, getContext()); boolean exists = checkApproverService.checkApproverExists(delegateTask, userTask, mainProcess, getContext());
log.info("是否需要自动过程判断 exists:{},processInstId:{},taskDefinitionKey:{}", exists, delegateTask.getProcessInstanceId(), delegateTask.getTaskDefinitionKey()); log.info("是否需要自动过程判断 exists:{},processInstId:{},taskDefinitionKey:{}", exists, delegateTask.getProcessInstanceId(), delegateTask.getTaskDefinitionKey());
if (exists) { if (exists) {
autoPass(delegateTask, null,"已同意(同一审批人,自动过审)"); autoPass(delegateTask, null, "已同意(同一审批人,自动过审)");
} }
} }
// 检测节点自身配置是否有自动操作 // 检测节点自身配置是否有自动操作
@ -190,7 +199,7 @@ public class AutoOperatorEvent_101_Listener extends AbstractBpmnEventListener<Ta
} }
private void autoReject(DelegateTask delegateTask) { private void autoReject(DelegateTask delegateTask) {
autoReject(delegateTask,"无需审批人,自动驳回" ); autoReject(delegateTask, "无需审批人,自动驳回");
} }
/** /**