Commit 0565db2f2d5b09edc4dcf935db7ec384a5d363c4

Authored by jason
1 parent 3c0b9262

【代码评审修改】 异步 http 触发器修改为 Http 回调触发器

yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmTriggerTypeEnum.java
... ... @@ -17,9 +17,10 @@ import java.util.Arrays;
17 17 public enum BpmTriggerTypeEnum implements ArrayValuable<Integer> {
18 18  
19 19 HTTP_REQUEST(1, "发起 HTTP 请求"),
20   - FORM_UPDATE(2, "更新流程表单数据"),
21   - FORM_DELETE(3, "删除流程表单数据"),
22   - HTTP_REQUEST_ASYNC(4, "发起异步 HTTP 请求"); // TODO @jason:发起 HTTP 回调
  20 + HTTP_CALLBACK(2, "发起 HTTP 回调"),
  21 + FORM_UPDATE(10, "更新流程表单数据"),
  22 + FORM_DELETE(11, "删除流程表单数据"),
  23 + ;
23 24  
24 25 /**
25 26 * 触发器执行动作类型
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO.java
... ... @@ -128,7 +128,7 @@ public class BpmSimpleModelNodeVO {
128 128  
129 129 @Schema(description = "附加节点 Id", example = "UserTask_xxx", hidden = true) // 由后端生成(不从前端传递),所以 hidden = true
130 130 @JsonIgnore
131   - private String attachNodeId; // 目前用于触发器节点(异步)。需要 UserTask 和 ReceiveTask(附加节点) 来完成
  131 + private String attachNodeId; // 目前用于触发器节点(HTTP 回调)。需要 UserTask 和 ReceiveTask(附加节点) 来完成
132 132  
133 133 /**
134 134 * 子流程设置
... ... @@ -390,7 +390,7 @@ public class BpmSimpleModelNodeVO {
390 390 private List<KeyValue<String, String>> response;
391 391  
392 392 /**
393   - * 异步 Http 请求,需要指定回调任务 Key,用于回调执行
  393 + * Http 回调请求,需要指定回调任务 Key,用于回调执行
394 394 */
395 395 @Schema(description = "回调任务 Key", example = "xxx", hidden = true)
396 396 private String callbackTaskDefineKey;
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java
... ... @@ -25,7 +25,7 @@ import org.springframework.util.MultiValueMap;
25 25  
26 26 import java.util.*;
27 27  
28   -import static cn.iocoder.yudao.module.bpm.enums.definition.BpmTriggerTypeEnum.HTTP_REQUEST_ASYNC;
  28 +import static cn.iocoder.yudao.module.bpm.enums.definition.BpmTriggerTypeEnum.HTTP_CALLBACK;
29 29 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.*;
30 30 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils.*;
31 31 import static java.util.Arrays.asList;
... ... @@ -175,7 +175,7 @@ public class SimpleModelUtils {
175 175 SequenceFlow sequenceFlow = buildBpmnSequenceFlow(node.getId(), finalTargetNodeId);
176 176 process.addFlowElement(sequenceFlow);
177 177 } else {
178   - // 如果有附加节点:需要先建立和附加节点的连线,再建立附加节点和目标节点的连线。例如说,触发器节点(异步)
  178 + // 如果有附加节点:需要先建立和附加节点的连线,再建立附加节点和目标节点的连线。例如说,触发器节点(HTTP 回调)
179 179 List<SequenceFlow> sequenceFlows = buildAttachNodeSequenceFlow(node.getId(), node.getAttachNodeId(), finalTargetNodeId);
180 180 sequenceFlows.forEach(process::addFlowElement);
181 181 }
... ... @@ -735,17 +735,17 @@ public class SimpleModelUtils {
735 735  
736 736 public static class TriggerNodeConvert implements NodeConvert {
737 737  
738   - // TODO @芋艿:【异步】在看看
  738 + // TODO @芋艿:【回调】在看看
739 739 @Override
740 740 public List<? extends FlowElement> convertList(BpmSimpleModelNodeVO node) {
741 741 Assert.notNull(node.getTriggerSetting(), "触发器节点设置不能为空");
742 742 List<FlowElement> flowElements = new ArrayList<>(2);
743   - // 异步 HTTP 请求。需要附加一个 ReceiveTask、发起请求后、等待回调执行
744   - if (HTTP_REQUEST_ASYNC.getType().equals(node.getTriggerSetting().getType())) {
745   - Assert.notNull(node.getTriggerSetting().getHttpRequestSetting(), "触发器 HTTP 请求设置不能为空");
  743 + // HTTP 回调请求。需要附加一个 ReceiveTask、发起请求后、等待回调执行
  744 + if (HTTP_CALLBACK.getType().equals(node.getTriggerSetting().getType())) {
  745 + Assert.notNull(node.getTriggerSetting().getHttpRequestSetting(), "触发器 HTTP 回调请求设置不能为空");
746 746 ReceiveTask receiveTask = new ReceiveTask();
747 747 receiveTask.setId("Activity_" + IdUtil.fastUUID());
748   - receiveTask.setName("异步 HTTP 请求");
  748 + receiveTask.setName("HTTP 回调");
749 749 node.setAttachNodeId(receiveTask.getId());
750 750 flowElements.add(receiveTask);
751 751 // 重要:设置 callbackTaskDefineKey,用于 HTTP 回调
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java
... ... @@ -287,11 +287,12 @@ public interface BpmTaskService {
287 287 /**
288 288 * 触发流程任务 (ReceiveTask) 的执行
289 289 * <p>
290   - * 1. Simple 模型异步 HTTP 请求触发器节点的回调,触发流程继续执行
  290 + * 1. Simple 模型 HTTP 回调请求触发器节点的回调,触发流程继续执行
291 291 * 2. Simple 模型延迟器节点,到时触发流程继续执行
292 292 *
293 293 * @param processInstanceId 流程示例编号
294 294 * @param taskDefineKey 任务 Key
295 295 */
296 296 void triggerTask(String processInstanceId, String taskDefineKey);
  297 +
297 298 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/trigger/http/BpmAsyncHttpRequestTrigger.java renamed to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/trigger/http/BpmHttpCallbackTrigger.java
... ... @@ -10,22 +10,21 @@ import org.flowable.engine.runtime.ProcessInstance;
10 10 import org.springframework.stereotype.Component;
11 11 import org.springframework.util.MultiValueMap;
12 12  
13   -// TODO @jason:BpmHttpCallbackTrigger
14 13 /**
15   - * BPM 发送异步 HTTP 请求触发器
  14 + * BPM HTTP 回调触发器
16 15 *
17 16 * @author jason
18 17 */
19 18 @Component
20 19 @Slf4j
21   -public class BpmAsyncHttpRequestTrigger extends BpmAbstractHttpRequestTrigger {
  20 +public class BpmHttpCallbackTrigger extends BpmAbstractHttpRequestTrigger {
22 21  
23 22 @Resource
24 23 private BpmProcessInstanceService processInstanceService;
25 24  
26 25 @Override
27 26 public BpmTriggerTypeEnum getType() {
28   - return BpmTriggerTypeEnum.HTTP_REQUEST_ASYNC;
  27 + return BpmTriggerTypeEnum.HTTP_CALLBACK;
29 28 }
30 29  
31 30 @Override
... ... @@ -34,7 +33,7 @@ public class BpmAsyncHttpRequestTrigger extends BpmAbstractHttpRequestTrigger {
34 33 BpmSimpleModelNodeVO.TriggerSetting.HttpRequestTriggerSetting setting = JsonUtils.parseObject(param,
35 34 BpmSimpleModelNodeVO.TriggerSetting.HttpRequestTriggerSetting.class);
36 35 if (setting == null) {
37   - log.error("[execute][流程({}) HTTP 异步触发器请求配置为空]", processInstanceId);
  36 + log.error("[execute][流程({}) HTTP 回调触发器配置为空]", processInstanceId);
38 37 return;
39 38 }
40 39  
... ... @@ -43,8 +42,8 @@ public class BpmAsyncHttpRequestTrigger extends BpmAbstractHttpRequestTrigger {
43 42 MultiValueMap<String, String> headers = buildHttpHeaders(processInstance, setting.getHeader());
44 43 // 2.2 设置请求体
45 44 MultiValueMap<String, String> body = buildHttpBody(processInstance, setting.getBody());
46   - // TODO @芋艿:【异步】在看看
47   - body.add("callbackId", setting.getCallbackTaskDefineKey()); // 异步请求 callbackId 需要传给被调用方,用于回调执行
  45 + // TODO @芋艿:【回调】在看看
  46 + body.add("callbackId", setting.getCallbackTaskDefineKey()); // 回调请求 callbackId 需要传给被调用方,用于回调执行
48 47  
49 48 // 3. 发起请求
50 49 sendHttpRequest(setting.getUrl(), headers, body);
... ...