From 69ea46fb301e8080e21c799859782ebd9939bce3 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 4 Jan 2024 10:22:50 +0800 Subject: [PATCH] =?UTF-8?q?update=20-=20=E6=B7=BB=E5=8A=A0=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E8=BF=87=E7=A8=8B=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/listener/EngineExecutionStartListener.java | 7 +++++-- .../controller/delegate/AdminTaskAssigneeSelector.java | 9 ++++++++- .../delegate/IdentityTaskAssigneeSelector.java | 9 ++++++++- .../delegate/InitiatorLeaderTaskAssigneeSelector.java | 9 ++++++++- .../delegate/PositionTaskAssigneeSelector.java | 9 ++++++++- .../controller/delegate/RoleTaskAssigneeSelector.java | 8 +++++++- .../listener/task/AutoOperatorEventListener.java | 2 ++ 7 files changed, 46 insertions(+), 7 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineExecutionStartListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineExecutionStartListener.java index b1a7e4b72..f1d59a50b 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineExecutionStartListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineExecutionStartListener.java @@ -155,7 +155,7 @@ public class EngineExecutionStartListener implements ExecutionListener { if (!CollectionUtils.isEmpty(assigners)) { return; } - log.info("当前节点: id: {}, name: {} 审批人为空", userTask.getId(), userTask.getName()); + log.info("当前节点id: [{}], name: [{}] 审批人为空, 将执行审批人为空的兜底配置!", userTask.getId(), userTask.getName()); getApproverEmptyHandleType(userTask).ifPresent(type -> { switch (type) { case autoPassed: @@ -218,7 +218,10 @@ public class EngineExecutionStartListener implements ExecutionListener { } else { selectors.forEach(select -> { if (select.support(type)) { - assigners.addAll(select.select(userTask, execution, throwException)); + List selected = select.select(userTask, execution, throwException); + log.info("审批任务节点 Id:{}, Name: {}, 审批人指定枚举: {} 的审批人集合为: {}", userTask.getId(), userTask.getName(), + type, JSON.toJSONString(selected)); + assigners.addAll(selected); } }); } diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/AdminTaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/AdminTaskAssigneeSelector.java index e8610f12b..034a0f572 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/AdminTaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/AdminTaskAssigneeSelector.java @@ -42,6 +42,12 @@ public class AdminTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector return getType().equals(param); } + @Override + public List select(UserTask userTask, DelegateExecution execution, + Boolean throwException) { + return super.select(userTask, execution, throwException); + } + @Override protected List invokeService(UserTask userTask, DelegateExecution execution, ApproverScopeDTO scopeDto) { @@ -60,7 +66,8 @@ public class AdminTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector } ListFlowTaskAssignerReq req = builder.build(); List flowTaskAssigners = - parseApiResult(() -> flowSupportApi.listTaskAssignerAdmin(req), "通过管理员查询审批人", req); + parseApiResult(() -> flowSupportApi.listTaskAssignerAdmin(req), "审批节点: " + userTask.getId() + ", " + + "通过管理员查询审批人", req); if (CollUtil.isEmpty(flowTaskAssigners)) { return Collections.emptyList(); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/IdentityTaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/IdentityTaskAssigneeSelector.java index 2a227b8c5..e14bafd52 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/IdentityTaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/IdentityTaskAssigneeSelector.java @@ -40,6 +40,12 @@ public class IdentityTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelect return getType().equals(param); } + @Override + public List select(UserTask userTask, DelegateExecution execution, + Boolean throwException) { + return super.select(userTask, execution, throwException); + } + @Override protected List invokeService(UserTask userTask, DelegateExecution execution, ApproverScopeDTO scopeDto) { @@ -56,7 +62,8 @@ public class IdentityTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelect .build(); List flowTaskAssigners = - parseApiResult(() -> flowSupportApi.listTaskAssignerByIdentity(req), "通过身份查询审批人", req); + parseApiResult(() -> flowSupportApi.listTaskAssignerByIdentity(req), "审批节点: " + userTask.getId() + "," + + " 通过身份查询审批人", req); if (CollUtil.isEmpty(flowTaskAssigners)) { return super.invokeService(userTask, execution, scopeDto); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/InitiatorLeaderTaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/InitiatorLeaderTaskAssigneeSelector.java index 804d75274..2ba725e60 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/InitiatorLeaderTaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/InitiatorLeaderTaskAssigneeSelector.java @@ -44,6 +44,12 @@ public class InitiatorLeaderTaskAssigneeSelector extends AbstractBpmnTaskAssigne return getType().equals(param); } + @Override + public List select(UserTask userTask, DelegateExecution execution, + Boolean throwException) { + return super.select(userTask, execution, throwException); + } + @Override protected List invokeService(UserTask userTask, DelegateExecution execution, ApproverScopeDTO scopeDto) { @@ -66,7 +72,8 @@ public class InitiatorLeaderTaskAssigneeSelector extends AbstractBpmnTaskAssigne .build(); List flowTaskAssigners = - parseApiResult(() -> organizationalNodeUserApi.listFlowTaskAssigner(req), "通过发起人主管查询审批人", req); + parseApiResult(() -> organizationalNodeUserApi.listFlowTaskAssigner(req), + "审批节点: " + userTask.getId() + ", 通过发起人主管查询审批人", req); if (CollUtil.isEmpty(flowTaskAssigners)) { return super.invokeService(userTask, execution, scopeDto); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/PositionTaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/PositionTaskAssigneeSelector.java index 3516adeb1..660d2c280 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/PositionTaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/PositionTaskAssigneeSelector.java @@ -41,6 +41,12 @@ public class PositionTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelect return getType().equals(param); } + @Override + public List select(UserTask userTask, DelegateExecution execution, + Boolean throwException) { + return super.select(userTask, execution, throwException); + } + @Override protected List invokeService(UserTask userTask, DelegateExecution execution, ApproverScopeDTO scopeDto) { @@ -52,7 +58,8 @@ public class PositionTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelect .build(); List flowTaskAssigners = - parseApiResult(() -> organizationalNodeUserApi.listFlowTaskAssigner(req), "通过岗位查询审批人", req); + parseApiResult(() -> organizationalNodeUserApi.listFlowTaskAssigner(req), + "审批节点: " + userTask.getId() + ", 通过岗位查询审批人", req); if (CollUtil.isEmpty(flowTaskAssigners)) { return Collections.emptyList(); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/RoleTaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/RoleTaskAssigneeSelector.java index 9d2f4de03..2f7488bea 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/RoleTaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/RoleTaskAssigneeSelector.java @@ -42,6 +42,12 @@ public class RoleTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector { return getType().equals(param); } + @Override + public List select(UserTask userTask, DelegateExecution execution, + Boolean throwException) { + return super.select(userTask, execution, throwException); + } + @Override protected List invokeService(UserTask userTask, DelegateExecution execution, ApproverScopeDTO scopeDto) { @@ -58,7 +64,7 @@ public class RoleTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector { .collect(Collectors.toList())) .build(); List flowTaskAssigners = parseApiResult(() -> tyrSaasRoleUserApi.roleUserList(param), - "通过角色查询审批人", param) + "审批节点: " + userTask.getId() + ", 通过角色查询审批人", param) .stream().filter(f -> workspaceIdSet.contains(f.getWorkspaceId())) .collect(Collectors.toList()); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/AutoOperatorEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/AutoOperatorEventListener.java index 8612434a7..920934824 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/AutoOperatorEventListener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/AutoOperatorEventListener.java @@ -111,6 +111,7 @@ public class AutoOperatorEventListener implements BpmnTaskEventListener, Ordered variables.put(INTERNAL_DELETE_PROCESS_FLAG, INTERNAL_PROCESS_TYPE_REJECT); runtimeService.setVariables(delegateTask.getProcessInstanceId(), variables); + // FIXME 这里的删除流程实例, 应该利用 DeleteProcessInstanceOperation 实现 List historyTaskList = historyService.createHistoricTaskInstanceQuery().unfinished().list(); if (!CollectionUtils.isEmpty(historyTaskList)) { @@ -119,6 +120,7 @@ public class AutoOperatorEventListener implements BpmnTaskEventListener, Ordered } // 删除流程实例,以实现驳回任务时,取消整个审批流程 runtimeService.deleteProcessInstance(delegateTask.getProcessInstanceId(), REJECTION_AUTO_COMPLETED.getDesc()); + if (log.isDebugEnabled()) { log.debug("AutoOperatorEventListener#autoReject...end: {}", delegateTask.getTaskDefinitionKey()); }