From 4acb01c3b061156d0ad5889f27fa1009619387ef Mon Sep 17 00:00:00 2001 From: YunaiV Date: Wed, 8 Jan 2025 09:40:38 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E8=AF=84=E5=AE=A1?= =?UTF-8?q?=E3=80=91BPM=EF=BC=9ASimple=20=E8=AE=BE=E8=AE=A1=E5=99=A8=20-?= =?UTF-8?q?=20userTask=20=E7=9B=91=E5=90=AC=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flowable/core/util/SimpleModelUtils.java | 12 ++++++++---- .../service/task/listener/BpmUserTaskListener.java | 14 +++++++++++--- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java index f33e73199c..952cd6c26a 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java @@ -439,28 +439,32 @@ public class SimpleModelUtils { } // 设置监听器 addUserTaskListener(node, userTask); - // 设置Simple设计器节点配置 + // 设置 Simple 设计器节点配置 + // TODO @lesan:只设置到 flowableListener 里面,整个 node 太大了!因为很多都保存过啦。 addSimpleConfigInfo(userTask, node); return userTask; } private void addUserTaskListener(BpmSimpleModelNodeVO node, UserTask userTask) { List flowableListeners = new ArrayList<>(3); - if (node.getTaskCreateListener().getEnable()) { + if (node.getTaskCreateListener() != null + && Boolean.TRUE.equals(node.getTaskCreateListener().getEnable())) { FlowableListener flowableListener = new FlowableListener(); flowableListener.setEvent(TaskListener.EVENTNAME_CREATE); flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION); flowableListener.setImplementation(DELEGATE_EXPRESSION); flowableListeners.add(flowableListener); } - if (node.getTaskAssignListener().getEnable()) { + if (node.getTaskAssignListener() != null + && Boolean.TRUE.equals(node.getTaskAssignListener().getEnable())) { FlowableListener flowableListener = new FlowableListener(); flowableListener.setEvent(TaskListener.EVENTNAME_ASSIGNMENT); flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION); flowableListener.setImplementation(DELEGATE_EXPRESSION); flowableListeners.add(flowableListener); } - if (node.getTaskCompleteListener().getEnable()) { + if (node.getTaskCompleteListener() != null + && Boolean.TRUE.equals(node.getTaskCompleteListener().getEnable())) { FlowableListener flowableListener = new FlowableListener(); flowableListener.setEvent(TaskListener.EVENTNAME_COMPLETE); flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/listener/BpmUserTaskListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/listener/BpmUserTaskListener.java index 1d543d25d7..1680b26691 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/listener/BpmUserTaskListener.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/listener/BpmUserTaskListener.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.bpm.service.task.listener; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO; import cn.iocoder.yudao.module.bpm.enums.definition.BpmListenerMapType; import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils; @@ -24,6 +25,7 @@ import org.springframework.web.client.RestTemplate; import java.util.List; import java.util.Map; +import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.HEADER_TENANT_ID; import static cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils.parseSimpleConfigInfo; /** @@ -62,18 +64,23 @@ public class BpmUserTaskListener implements TaskListener { parseListenerMap(listenerHandler.getHeader(), processVariables, headers); parseListenerMap(listenerHandler.getBody(), processVariables, body); // 2.1 请求头默认参数 - headers.add("tenant-id", delegateTask.getTenantId()); + if (StrUtil.isNotEmpty(delegateTask.getTenantId())) { + headers.add(HEADER_TENANT_ID, delegateTask.getTenantId()); + } // 2.2 请求体默认参数 + // TODO @芋艿:哪些默认参数,后续再调研下; body.add("processInstanceId", delegateTask.getProcessInstanceId()); body.add("assignee", delegateTask.getAssignee()); body.add("taskDefinitionKey", delegateTask.getTaskDefinitionKey()); body.add("taskId", delegateTask.getId()); // 3. 异步发起请求 + // TODO @芋艿:确认要同步,还是异步 HttpEntity> requestEntity = new HttpEntity<>(body, headers); ResponseEntity responseEntity = restTemplate.exchange(listenerHandler.getPath(), HttpMethod.POST, requestEntity, String.class); - log.info("[BpmUserTaskListener][的响应结果({})]", responseEntity); + // TODO @lesan:日志打印,可以更全哈,例如说,请求参数、对应的 task id,哪个 listener + log.info("[notify][的响应结果({})]", responseEntity); // 4. 是否需要后续操作?TODO 芋艿:待定! } @@ -92,12 +99,13 @@ public class BpmUserTaskListener implements TaskListener { }); } + // TODO @lesan:改成 jdk8 写法哈。主要考虑好兼容! private BpmSimpleModelNodeVO.ListenerHandler getListenerHandlerByEvent(String eventName, BpmSimpleModelNodeVO node) { return switch (eventName) { case TaskListener.EVENTNAME_CREATE -> node.getTaskCreateListener(); case TaskListener.EVENTNAME_ASSIGNMENT -> node.getTaskAssignListener(); case TaskListener.EVENTNAME_COMPLETE -> node.getTaskCompleteListener(); - default -> null; + default -> null; // TODO @lesan:这个抛出异常,可控一点 }; }