From 27a640048ac20dccffa165aad8b4430b6ed609a4 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 9 Sep 2024 16:13:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-2924)=20-=20=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E5=A2=9E=E5=8A=A0=E5=AE=8C=E6=88=90=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E6=93=8D=E4=BD=9C=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/engine/cmd/CustomActivityTriggerCmd.java | 13 +++++++++---- .../impl/BpmnProcessInstanceServiceImpl.java | 14 +++++++++++++- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java index 687f17fef..918e0cfb7 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomActivityTriggerCmd.java @@ -7,14 +7,16 @@ import org.flowable.common.engine.impl.interceptor.CommandContext; import org.flowable.engine.RuntimeService; import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl; import org.flowable.engine.impl.util.CommandContextUtil; -import org.flowable.engine.runtime.Execution; +import org.flowable.task.service.impl.persistence.entity.TaskEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.Serializable; import java.util.Objects; +import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_OPERATION_DESC; import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.ACTIVITY_TRIGGER_NOT_EXISTS; +import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.addComment; /** * 自定义(同步)流转业务姐弟那的命令器实现 @@ -40,11 +42,14 @@ public class CustomActivityTriggerCmd extends AbstractCommand implements S public Void execute(CommandContext commandContext) { ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(commandContext); - RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); - Execution execution = runtimeService.createExecutionQuery().executionId(dto.getTriggerId()).singleResult(); - if (Objects.isNull(execution)) { + + TaskEntity task = (TaskEntity) processEngineConfiguration.getTaskService() + .createTaskQuery().executionId(dto.getTriggerId()).singleResult(); + if (Objects.isNull(task)) { throw new WorkflowEngineException(ACTIVITY_TRIGGER_NOT_EXISTS, dto.getTriggerId()); } + addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, "已处理"); + RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); runtimeService.trigger(dto.getTriggerId()); return null; } 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 2b1603062..c4b05732b 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 @@ -1255,10 +1255,22 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic .filter(i -> Objects.equals(i.getTaskDefinitionKey(), e.getActivityId())).findAny(); if (processingTask.isPresent()) { + // 多实例的情况,需要合并节点 processingTask.ifPresent(i -> { - List assigners = new ArrayList<>(); + List assigners = new ArrayList<>(ListUtils.emptyIfNull(i.getForecastAssignees())); assigners.add(i.getAssigneeSnapshot()); assigners.add(BpmnTaskDelegateAssigner.toObjectCompatible(CollectionUtils.isEmpty(ListUtils.emptyIfNull(e.getAssigneeFull())) ? null : e.getAssigneeFull().get(0))); + switch (i.getNodeMode()) { + case AND: + i.setOperationDesc(assigners.size() + "人会签,需要全部同意"); + break; + case OR: + i.setOperationDesc(assigners.size() + "人或签,仅一人同意即可"); + break; + default: + // 不修改操作描述 + break; + } i.setAssigneeSnapshot(null); i.setForecastAssignees(assigners); });