Commit 4acb01c3b061156d0ad5889f27fa1009619387ef

Authored by YunaiV
1 parent a008b313

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

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 {
439 439 }
440 440 // 设置监听器
441 441 addUserTaskListener(node, userTask);
442   - // 设置Simple设计器节点配置
  442 + // 设置 Simple 设计器节点配置
  443 + // TODO @lesan:只设置到 flowableListener 里面,整个 node 太大了!因为很多都保存过啦。
443 444 addSimpleConfigInfo(userTask, node);
444 445 return userTask;
445 446 }
446 447  
447 448 private void addUserTaskListener(BpmSimpleModelNodeVO node, UserTask userTask) {
448 449 List<FlowableListener> flowableListeners = new ArrayList<>(3);
449   - if (node.getTaskCreateListener().getEnable()) {
  450 + if (node.getTaskCreateListener() != null
  451 + && Boolean.TRUE.equals(node.getTaskCreateListener().getEnable())) {
450 452 FlowableListener flowableListener = new FlowableListener();
451 453 flowableListener.setEvent(TaskListener.EVENTNAME_CREATE);
452 454 flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
453 455 flowableListener.setImplementation(DELEGATE_EXPRESSION);
454 456 flowableListeners.add(flowableListener);
455 457 }
456   - if (node.getTaskAssignListener().getEnable()) {
  458 + if (node.getTaskAssignListener() != null
  459 + && Boolean.TRUE.equals(node.getTaskAssignListener().getEnable())) {
457 460 FlowableListener flowableListener = new FlowableListener();
458 461 flowableListener.setEvent(TaskListener.EVENTNAME_ASSIGNMENT);
459 462 flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
460 463 flowableListener.setImplementation(DELEGATE_EXPRESSION);
461 464 flowableListeners.add(flowableListener);
462 465 }
463   - if (node.getTaskCompleteListener().getEnable()) {
  466 + if (node.getTaskCompleteListener() != null
  467 + && Boolean.TRUE.equals(node.getTaskCompleteListener().getEnable())) {
464 468 FlowableListener flowableListener = new FlowableListener();
465 469 flowableListener.setEvent(TaskListener.EVENTNAME_COMPLETE);
466 470 flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/listener/BpmUserTaskListener.java
1 1 package cn.iocoder.yudao.module.bpm.service.task.listener;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
  4 +import cn.hutool.core.util.StrUtil;
4 5 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO;
5 6 import cn.iocoder.yudao.module.bpm.enums.definition.BpmListenerMapType;
6 7 import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
... ... @@ -24,6 +25,7 @@ import org.springframework.web.client.RestTemplate;
24 25 import java.util.List;
25 26 import java.util.Map;
26 27  
  28 +import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.HEADER_TENANT_ID;
27 29 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils.parseSimpleConfigInfo;
28 30  
29 31 /**
... ... @@ -62,18 +64,23 @@ public class BpmUserTaskListener implements TaskListener {
62 64 parseListenerMap(listenerHandler.getHeader(), processVariables, headers);
63 65 parseListenerMap(listenerHandler.getBody(), processVariables, body);
64 66 // 2.1 请求头默认参数
65   - headers.add("tenant-id", delegateTask.getTenantId());
  67 + if (StrUtil.isNotEmpty(delegateTask.getTenantId())) {
  68 + headers.add(HEADER_TENANT_ID, delegateTask.getTenantId());
  69 + }
66 70 // 2.2 请求体默认参数
  71 + // TODO @芋艿:哪些默认参数,后续再调研下;
67 72 body.add("processInstanceId", delegateTask.getProcessInstanceId());
68 73 body.add("assignee", delegateTask.getAssignee());
69 74 body.add("taskDefinitionKey", delegateTask.getTaskDefinitionKey());
70 75 body.add("taskId", delegateTask.getId());
71 76  
72 77 // 3. 异步发起请求
  78 + // TODO @芋艿:确认要同步,还是异步
73 79 HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(body, headers);
74 80 ResponseEntity<String> responseEntity = restTemplate.exchange(listenerHandler.getPath(), HttpMethod.POST,
75 81 requestEntity, String.class);
76   - log.info("[BpmUserTaskListener][的响应结果({})]", responseEntity);
  82 + // TODO @lesan:日志打印,可以更全哈,例如说,请求参数、对应的 task id,哪个 listener
  83 + log.info("[notify][的响应结果({})]", responseEntity);
77 84 // 4. 是否需要后续操作?TODO 芋艿:待定!
78 85 }
79 86  
... ... @@ -92,12 +99,13 @@ public class BpmUserTaskListener implements TaskListener {
92 99 });
93 100 }
94 101  
  102 + // TODO @lesan:改成 jdk8 写法哈。主要考虑好兼容!
95 103 private BpmSimpleModelNodeVO.ListenerHandler getListenerHandlerByEvent(String eventName, BpmSimpleModelNodeVO node) {
96 104 return switch (eventName) {
97 105 case TaskListener.EVENTNAME_CREATE -> node.getTaskCreateListener();
98 106 case TaskListener.EVENTNAME_ASSIGNMENT -> node.getTaskAssignListener();
99 107 case TaskListener.EVENTNAME_COMPLETE -> node.getTaskCompleteListener();
100   - default -> null;
  108 + default -> null; // TODO @lesan:这个抛出异常,可控一点
101 109 };
102 110 }
103 111  
... ...