Commit 4acb01c3b061156d0ad5889f27fa1009619387ef
1 parent
a008b313
【代码评审】BPM:Simple 设计器 - userTask 监听器
Showing
2 changed files
with
19 additions
and
7 deletions
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 | ... | ... |