From 3add4f209c7284bd142cf1a38e5f892e6145082a Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 16 Apr 2024 18:35:49 +0800 Subject: [PATCH] =?UTF-8?q?update=20-=20=E6=B5=81=E7=A8=8B=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E6=8E=A8=E6=B5=8B=E5=8A=9F=E8=83=BD=E7=BB=86=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/BpmnProcessInstanceService.java | 18 +++++++++++ .../impl/BpmnProcessInstanceServiceImpl.java | 32 +++++++++++++------ 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java index 125bf5332..52954d5c5 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java @@ -124,8 +124,26 @@ public interface BpmnProcessInstanceService { BpmPageResult historicProcessInstancePage(HistoricProcessInstanceSearchDTO dto); + /** + * 流程实例全节点推测 + * + * @param processInstanceId + * @param tenantId + * @return + */ List getProcessInstanceNodeForecast(String processInstanceId, String tenantId); + /** + * 可过滤指定节点集合的剩余接地那推送 + * + * @param processInstanceId + * @param tenantId + * @param allNode + * @param removeTaskDefinitionKeys + * @return + */ + List getProcessInstanceNodeForecast(String processInstanceId, String tenantId, Boolean allNode, List removeTaskDefinitionKeys); + List getTenantIds(); diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java index 971712b3e..59b8f630d 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java @@ -802,24 +802,36 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic return resultList; } + /** + * 可过滤指定节点集合的剩余接地那推送 + * + * @param processInstanceId + * @param tenantId + * @param allNode + * @param removeTaskDefinitionKeys + * @return + */ + @Override + public List getProcessInstanceNodeForecast(String processInstanceId, String tenantId, Boolean allNode, List removeTaskDefinitionKeys) { + return Collections.emptyList(); + } + private void parseServiceTask(String processInstanceId, ServiceTask i, ProcessNodeDetailVO node) { // ServiceTask 主要作用于抄送 - ServiceTask serviceTask = i; - node.setId(serviceTask.getId()).setName(serviceTask.getName()); - getCarbonCopyConfigs(serviceTask).ifPresent(carbons -> + node.setId(i.getId()).setName(i.getName()); + getCarbonCopyConfigs(i).ifPresent(carbons -> node.setForecastAssigners(springProcessEngineConfiguration.getCommandExecutor() .execute(new CustomCarbonCopyUserSelectorCmd(processInstanceId, carbons, - serviceTask, engineExecutionStartListener, + i, engineExecutionStartListener, historicTaskInstanceConverter, serviceVersion)))); } private void parseUserTask(String processInstanceId, UserTask i, ProcessNodeDetailVO node) { - UserTask userTask = i; - node.setFormKey(userTask.getFormKey()); + node.setFormKey(i.getFormKey()); // 设置审批模式, - if (userTask.getBehavior() instanceof MultiInstanceActivityBehavior) { + if (i.getBehavior() instanceof MultiInstanceActivityBehavior) { MultiInstanceActivityBehavior behavior = - (MultiInstanceActivityBehavior) userTask.getBehavior(); + (MultiInstanceActivityBehavior) i.getBehavior(); node.setNodeMode(Objects.equals(AND_SIGN_EXPRESSION, behavior.getCompletionCondition()) ? AND : OR); @@ -832,10 +844,10 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic List forecastAssigners = springProcessEngineConfiguration.getCommandExecutor() .execute(new CustomForecastUserTaskAssigneeCmd(processInstanceId, - userTask, engineExecutionStartListener)); + i, engineExecutionStartListener)); node.setForecastAssigners(forecastAssigners); if (CollectionUtils.isEmpty(forecastAssigners)) { - getApproverEmptyHandleType(userTask).ifPresent(emptyHandleType -> { + getApproverEmptyHandleType(i).ifPresent(emptyHandleType -> { switch (emptyHandleType) { case autoPassed: node.setApprovalMethod(autoPassed);