From 3bfcac3d195d5cca42b4dcd930f38188b6d47558 Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Wed, 6 May 2026 15:13:21 +0800 Subject: [PATCH] =?UTF-8?q?yxk-20260506-=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E7=9B=91=E5=90=ACclass=EF=BC=9A=20SaveCurrentTaskAssigneeLocal?= =?UTF-8?q?Listener=E4=BF=9D=E5=AD=98=E5=BD=93=E5=89=8D=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=8A=9E=E7=90=86=E4=BA=BA=E5=88=B0=E5=AD=90=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E7=9A=84=E5=B1=80=E9=83=A8=E5=8F=98=E9=87=8F=E4=B8=AD=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SaveCurrentTaskAssigneeLocalListener.java | 22 ++++++++++++++++--- .../common/expression/FlowNodeExpression.java | 18 ++++++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/listener/task/SaveCurrentTaskAssigneeLocalListener.java b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/listener/task/SaveCurrentTaskAssigneeLocalListener.java index 0b8a6f4..bce4e23 100644 --- a/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/listener/task/SaveCurrentTaskAssigneeLocalListener.java +++ b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/listener/task/SaveCurrentTaskAssigneeLocalListener.java @@ -4,9 +4,13 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.TaskListener; +import org.flowable.engine.runtime.Execution; import org.flowable.task.service.delegate.DelegateTask; import org.jeecg.common.util.SpringContextUtils; +import java.util.LinkedHashSet; +import java.util.Set; + /** * Save the current task assignee as an execution local variable. */ @@ -37,8 +41,20 @@ public class SaveCurrentTaskAssigneeLocalListener implements TaskListener { delegateTask.getId(), delegateTask.getTaskDefinitionKey()); return; } - runtimeService.setVariableLocal(delegateTask.getExecutionId(), VARIABLE_NAME, assignee); - log.info("SaveCurrentTaskAssigneeLocalListener success, taskId={}, taskDefinitionKey={}, variableName={}, assignee={}", - delegateTask.getId(), delegateTask.getTaskDefinitionKey(), VARIABLE_NAME, assignee); + Set executionIds = new LinkedHashSet<>(); + executionIds.add(delegateTask.getExecutionId()); + + Execution execution = runtimeService.createExecutionQuery() + .executionId(delegateTask.getExecutionId()) + .singleResult(); + if (execution != null && StringUtils.isNotBlank(execution.getParentId())) { + executionIds.add(execution.getParentId()); + } + + for (String executionId : executionIds) { + runtimeService.setVariableLocal(executionId, VARIABLE_NAME, assignee); + } + log.info("SaveCurrentTaskAssigneeLocalListener success, taskId={}, taskDefinitionKey={}, variableName={}, assignee={}, executionIds={}", + delegateTask.getId(), delegateTask.getTaskDefinitionKey(), VARIABLE_NAME, assignee, executionIds); } } diff --git a/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/process/common/expression/FlowNodeExpression.java b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/process/common/expression/FlowNodeExpression.java index 7f131af..7ee533f 100644 --- a/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/process/common/expression/FlowNodeExpression.java +++ b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/process/common/expression/FlowNodeExpression.java @@ -342,9 +342,21 @@ public class FlowNodeExpression { task.getId(), task.getTaskDefinitionKey()); return; } - runtimeService.setVariableLocal(task.getExecutionId(), variableName, assignee); - log.info("saveCurrentTaskAssigneeLocal success, taskId={}, taskDefinitionKey={}, variableName={}, assignee={}", - task.getId(), task.getTaskDefinitionKey(), variableName, assignee); + Set executionIds = new LinkedHashSet<>(); + executionIds.add(task.getExecutionId()); + + Execution execution = runtimeService.createExecutionQuery() + .executionId(task.getExecutionId()) + .singleResult(); + if (execution != null && StringUtils.isNotBlank(execution.getParentId())) { + executionIds.add(execution.getParentId()); + } + + for (String executionId : executionIds) { + runtimeService.setVariableLocal(executionId, variableName, assignee); + } + log.info("saveCurrentTaskAssigneeLocal success, taskId={}, taskDefinitionKey={}, variableName={}, assignee={}, executionIds={}", + task.getId(), task.getTaskDefinitionKey(), variableName, assignee, executionIds); } private List splitUsernames(Object value) {