From 1b4a8b6b55c60a33dd9297cf5ddc1b6472e579d6 Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Wed, 6 May 2026 09:14:05 +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 | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/listener/task/SaveCurrentTaskAssigneeLocalListener.java 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 new file mode 100644 index 0000000..0b8a6f4 --- /dev/null +++ b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/extbpm/listener/task/SaveCurrentTaskAssigneeLocalListener.java @@ -0,0 +1,44 @@ +package org.jeecg.modules.extbpm.listener.task; + +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.task.service.delegate.DelegateTask; +import org.jeecg.common.util.SpringContextUtils; + +/** + * Save the current task assignee as an execution local variable. + */ +@Slf4j +public class SaveCurrentTaskAssigneeLocalListener implements TaskListener { + private static final long serialVersionUID = 1L; + private static final String VARIABLE_NAME = "subApproveLeader"; + + private static RuntimeService runtimeService; + + static { + runtimeService = SpringContextUtils.getBean(RuntimeService.class); + } + + @Override + public void notify(DelegateTask delegateTask) { + if (delegateTask == null) { + return; + } + String assignee = delegateTask.getAssignee(); + if (StringUtils.isBlank(assignee)) { + log.warn("SaveCurrentTaskAssigneeLocalListener skipped, taskId={}, taskDefinitionKey={}, assignee is blank", + delegateTask.getId(), delegateTask.getTaskDefinitionKey()); + return; + } + if (StringUtils.isBlank(delegateTask.getExecutionId())) { + log.warn("SaveCurrentTaskAssigneeLocalListener skipped, taskId={}, taskDefinitionKey={}, executionId is blank", + 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); + } +}