From 6d56f5e21385be1ba2663e218c141a4286eff4b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= <2270033969@qq.com> Date: Tue, 9 Jul 2024 17:28:42 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20#5595=20=E3=80=90=E9=9C=80=E6=B1=82?= =?UTF-8?q?=E3=80=91=E5=8D=8F=E5=90=8C=E7=AE=A1=E7=90=86=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81=E6=94=AF=E6=8C=81=E6=B5=81=E7=A8=8B=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit b8de059c6f3e042b7fd1e91177ed36ba1e141f44) --- .../listeners/FlowProcessEventListener.java | 5 ++- .../NodeTaskCompleteNotifyService.java | 44 +++++++++++++++++++ .../pig4cloud/pigx/flow/task/dto/Node.java | 2 + 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/NodeTaskCompleteNotifyService.java diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/listeners/FlowProcessEventListener.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/listeners/FlowProcessEventListener.java index 84ae9760c..cb8c1b150 100644 --- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/listeners/FlowProcessEventListener.java +++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/listeners/FlowProcessEventListener.java @@ -5,6 +5,8 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import com.pig4cloud.pigx.common.security.util.SecurityUtils; +import com.pig4cloud.pigx.flow.engine.service.NodeTaskCompleteNotifyService; import com.pig4cloud.pigx.flow.task.api.feign.RemoteFlowTaskService; import com.pig4cloud.pigx.flow.task.dto.*; import com.pig4cloud.pigx.flow.task.utils.NodeUtil; @@ -119,7 +121,6 @@ public class FlowProcessEventListener implements FlowableEventListener { processNodeRecordParamDto.setNodeName(activityName); remoteFlowTaskService.endNodeEvent(processNodeRecordParamDto); - } if (event.getType().toString().equals(FlowableEngineEventType.VARIABLE_UPDATED.toString())) { @@ -193,6 +194,8 @@ public class FlowProcessEventListener implements FlowableEventListener { remoteFlowTaskService.taskEndEvent(processNodeRecordAssignUserParamDto); + + SpringUtil.getBean(NodeTaskCompleteNotifyService.class).sendNotify(SecurityUtils.getToken(),processNodeRecordAssignUserParamDto); } if (event.getType().toString().equals(FlowableEngineEventType.TASK_ASSIGNED.toString())) { // 任务被指派了人员 diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/NodeTaskCompleteNotifyService.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/NodeTaskCompleteNotifyService.java new file mode 100644 index 000000000..249a694ae --- /dev/null +++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/NodeTaskCompleteNotifyService.java @@ -0,0 +1,44 @@ +package com.pig4cloud.pigx.flow.engine.service; + +import cn.hutool.core.lang.Validator; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.json.JSONUtil; +import com.pig4cloud.pigx.common.core.util.RetOps; +import com.pig4cloud.pigx.common.security.util.NonWebTokenContextHolder; +import com.pig4cloud.pigx.flow.task.api.feign.RemoteFlowTaskService; +import com.pig4cloud.pigx.flow.task.dto.ProcessNodeRecordAssignUserParamDto; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +/** + * 节点任务完成通知处理 + * + * @author lengleng + * @date 2024/7/9 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class NodeTaskCompleteNotifyService { + + private final RemoteFlowTaskService remoteFlowTaskService; + + @Async + public void sendNotify(String token, ProcessNodeRecordAssignUserParamDto taskCompleteParamDto) { + NonWebTokenContextHolder.setToken(token); + RetOps.of(remoteFlowTaskService.queryNodeOriData(taskCompleteParamDto.getFlowId(), taskCompleteParamDto.getNodeId())) + .getData() + .ifPresent(node -> { + if (Validator.isUrl(node.getEventConfig())) { + HttpResponse response = HttpRequest.post(node.getEventConfig()) + .body(JSONUtil.toJsonStr(taskCompleteParamDto)) + .timeout(10000) + .execute(); + log.debug("节点任务完成通知处理完成:{},数据:{}", response.getStatus(), taskCompleteParamDto); + } + }); + } +} diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/Node.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/Node.java index 54ae18d38..a86d17983 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/Node.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/Node.java @@ -29,6 +29,8 @@ public class Node { @JsonProperty("childNode") private Node children; + private String eventConfig; + private Integer assignedType; private Boolean multiple;