瀏覽代碼

【代码评审】BPM:Simple 设计器 - userTask 监听器

YunaiV 7 月之前
父節點
當前提交
4acb01c3b0

+ 8 - 4
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<FlowableListener> 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);

+ 11 - 3
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<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(body, headers);
         ResponseEntity<String> 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:这个抛出异常,可控一点
         };
     }