From cc8214a247b62f215256a22dc97d00bcbd9d95ea Mon Sep 17 00:00:00 2001 From: yangyang01000846 <15195822163@163.com> Date: Fri, 5 Dec 2025 15:05:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9Ahpc=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E5=AE=8C=E6=88=90=E7=BB=93=E6=9E=9C=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flowable/params/BaseExecuteParams.java | 8 -------- .../req/flowable}/AsyncCallbackRequest.java | 3 +-- .../FlowableClientFeignClientImpl.java | 18 +++++++++++++----- .../inter/flowable/IFlowableFeignClient.java | 7 +++++-- .../flowable/controller/ProcessController.java | 5 +++-- .../flowable/delegate/UniversalDelegate.java | 3 +-- .../sdm/flowable/process/ProcessService.java | 14 +++++++------- .../service/IAsyncTaskRecordService.java | 2 +- .../impl/AsyncTaskRecordServiceImpl.java | 2 +- .../hpc/hander/FinishedStatusHandler.java | 11 +++++++++++ 10 files changed, 43 insertions(+), 30 deletions(-) delete mode 100644 common/src/main/java/com/sdm/common/entity/flowable/params/BaseExecuteParams.java rename {flowable/src/main/java/com/sdm/flowable/dto/req => common/src/main/java/com/sdm/common/entity/req/flowable}/AsyncCallbackRequest.java (83%) diff --git a/common/src/main/java/com/sdm/common/entity/flowable/params/BaseExecuteParams.java b/common/src/main/java/com/sdm/common/entity/flowable/params/BaseExecuteParams.java deleted file mode 100644 index 95f29bee..00000000 --- a/common/src/main/java/com/sdm/common/entity/flowable/params/BaseExecuteParams.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.sdm.common.entity.flowable.params; - -import lombok.Data; - -@Data -public class BaseExecuteParams { - -} diff --git a/flowable/src/main/java/com/sdm/flowable/dto/req/AsyncCallbackRequest.java b/common/src/main/java/com/sdm/common/entity/req/flowable/AsyncCallbackRequest.java similarity index 83% rename from flowable/src/main/java/com/sdm/flowable/dto/req/AsyncCallbackRequest.java rename to common/src/main/java/com/sdm/common/entity/req/flowable/AsyncCallbackRequest.java index e36d553a..9df083d4 100644 --- a/flowable/src/main/java/com/sdm/flowable/dto/req/AsyncCallbackRequest.java +++ b/common/src/main/java/com/sdm/common/entity/req/flowable/AsyncCallbackRequest.java @@ -1,6 +1,5 @@ -package com.sdm.flowable.dto.req; +package com.sdm.common.entity.req.flowable; -import com.alibaba.fastjson2.JSONObject; import lombok.Data; import java.io.Serializable; diff --git a/common/src/main/java/com/sdm/common/feign/impl/flowable/FlowableClientFeignClientImpl.java b/common/src/main/java/com/sdm/common/feign/impl/flowable/FlowableClientFeignClientImpl.java index 7ff83f0f..83718f22 100644 --- a/common/src/main/java/com/sdm/common/feign/impl/flowable/FlowableClientFeignClientImpl.java +++ b/common/src/main/java/com/sdm/common/feign/impl/flowable/FlowableClientFeignClientImpl.java @@ -1,8 +1,8 @@ package com.sdm.common.feign.impl.flowable; import com.sdm.common.common.SdmResponse; -import com.sdm.common.entity.flowable.dto.NodeStructureInfo; import com.sdm.common.entity.flowable.dto.ProcessDefinitionDTO; +import com.sdm.common.entity.req.flowable.AsyncCallbackRequest; import com.sdm.common.entity.resp.flowable.DeployFlowableResp; import com.sdm.common.entity.resp.flowable.ProcessInstanceDetailResponse; import com.sdm.common.entity.resp.flowable.ProcessInstanceResp; @@ -11,10 +11,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.List; -import java.util.Map; - -import java.util.HashMap; import java.util.Map; @@ -87,4 +83,16 @@ public class FlowableClientFeignClientImpl implements IFlowableFeignClient { return SdmResponse.failed("查询流程状态以及节点状态失败"); } } + + @Override + public SdmResponse asyncCallback(AsyncCallbackRequest request) { + SdmResponse response; + try { + flowableFeignClient.asyncCallback(request); + } catch (Exception e) { + log.error("工作流节点完成通知异常", e); + return SdmResponse.failed("工作流节点完成通知异常"); + } + return SdmResponse.success(); + } } diff --git a/common/src/main/java/com/sdm/common/feign/inter/flowable/IFlowableFeignClient.java b/common/src/main/java/com/sdm/common/feign/inter/flowable/IFlowableFeignClient.java index 8b7e8cdd..5e0154d5 100644 --- a/common/src/main/java/com/sdm/common/feign/inter/flowable/IFlowableFeignClient.java +++ b/common/src/main/java/com/sdm/common/feign/inter/flowable/IFlowableFeignClient.java @@ -1,8 +1,8 @@ package com.sdm.common.feign.inter.flowable; import com.sdm.common.common.SdmResponse; -import com.sdm.common.entity.flowable.dto.NodeStructureInfo; import com.sdm.common.entity.flowable.dto.ProcessDefinitionDTO; +import com.sdm.common.entity.req.flowable.AsyncCallbackRequest; import com.sdm.common.entity.resp.flowable.DeployFlowableResp; import com.sdm.common.entity.resp.flowable.ProcessInstanceDetailResponse; import com.sdm.common.entity.resp.flowable.ProcessInstanceResp; @@ -12,7 +12,6 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; -import java.util.List; import java.util.Map; @@ -33,4 +32,8 @@ public interface IFlowableFeignClient { @GetMapping("/process/getProcessAndNodeDetailByInstanceId") SdmResponse getProcessAndNodeDetailByInstanceId(@RequestParam String processDefinitionId,@RequestParam(required = false) String processInstanceId,@RequestParam String runId); + + @PostMapping("/process/asyncCallback") + SdmResponse asyncCallback(@RequestBody AsyncCallbackRequest request); + } diff --git a/flowable/src/main/java/com/sdm/flowable/controller/ProcessController.java b/flowable/src/main/java/com/sdm/flowable/controller/ProcessController.java index 104406d2..665353af 100644 --- a/flowable/src/main/java/com/sdm/flowable/controller/ProcessController.java +++ b/flowable/src/main/java/com/sdm/flowable/controller/ProcessController.java @@ -4,12 +4,12 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.flowable.dto.ProcessDefinitionDTO; import com.sdm.common.entity.flowable.executeConfig.HPCExecuteConfig; +import com.sdm.common.entity.req.flowable.AsyncCallbackRequest; import com.sdm.common.entity.resp.flowable.DeployFlowableResp; import com.sdm.common.entity.resp.flowable.ProcessInstanceDetailResponse; import com.sdm.common.entity.resp.flowable.ProcessInstanceResp; import com.sdm.common.feign.inter.flowable.IFlowableFeignClient; import com.sdm.flowable.delegate.handler.HpcHandler; -import com.sdm.flowable.dto.req.AsyncCallbackRequest; import com.sdm.flowable.dto.req.CompleteTaskReq; import com.sdm.flowable.dto.req.RetryRequest; import com.sdm.flowable.process.ProcessService; @@ -166,9 +166,10 @@ public class ProcessController implements IFlowableFeignClient { * @param request 包含异步任务ID和执行结果的请求对象 */ @PostMapping("/asyncCallback") - public void asyncCallback(@RequestBody AsyncCallbackRequest request) { + public SdmResponse asyncCallback(@RequestBody AsyncCallbackRequest request) { // 发送信号唤醒流程实例中等待的节点 processService.asyncCallback(request); + return SdmResponse.success(); } /** diff --git a/flowable/src/main/java/com/sdm/flowable/delegate/UniversalDelegate.java b/flowable/src/main/java/com/sdm/flowable/delegate/UniversalDelegate.java index 0b478b72..02c09189 100644 --- a/flowable/src/main/java/com/sdm/flowable/delegate/UniversalDelegate.java +++ b/flowable/src/main/java/com/sdm/flowable/delegate/UniversalDelegate.java @@ -1,15 +1,14 @@ package com.sdm.flowable.delegate; -import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.flowable.executeConfig.BaseExecuteConfig; import com.sdm.common.entity.req.data.GetFileBaseInfoReq; +import com.sdm.common.entity.req.flowable.AsyncCallbackRequest; import com.sdm.common.entity.resp.data.FileMetadataInfoResp; import com.sdm.common.feign.inter.data.IDataFeignClient; import com.sdm.flowable.constants.FlowableConfig; import com.sdm.flowable.delegate.handler.ExecutionHandler; -import com.sdm.flowable.dto.req.AsyncCallbackRequest; import com.sdm.flowable.service.IAsyncTaskRecordService; import com.sdm.flowable.service.IProcessNodeParamService; import com.sdm.flowable.util.FlowNodeIdUtils; diff --git a/flowable/src/main/java/com/sdm/flowable/process/ProcessService.java b/flowable/src/main/java/com/sdm/flowable/process/ProcessService.java index 4bbf1fd4..6379e7d5 100644 --- a/flowable/src/main/java/com/sdm/flowable/process/ProcessService.java +++ b/flowable/src/main/java/com/sdm/flowable/process/ProcessService.java @@ -1,18 +1,18 @@ package com.sdm.flowable.process; import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.flowable.dto.NodeDetailInfo; +import com.sdm.common.entity.flowable.dto.ProcessDefinitionDTO; +import com.sdm.common.entity.flowable.dto.ProcessInstanceInfo; +import com.sdm.common.entity.req.flowable.AsyncCallbackRequest; +import com.sdm.common.entity.resp.flowable.DeployFlowableResp; +import com.sdm.common.entity.resp.flowable.ProcessInstanceDetailResponse; import com.sdm.flowable.constants.FlowableConfig; import com.sdm.flowable.delegate.UniversalDelegate; -import com.sdm.common.entity.flowable.dto.NodeDetailInfo; -import com.sdm.common.entity.flowable.dto.ProcessInstanceInfo; -import com.sdm.common.entity.flowable.dto.ProcessDefinitionDTO; -import com.sdm.flowable.dto.req.AsyncCallbackRequest; -import com.sdm.common.entity.resp.flowable.ProcessInstanceDetailResponse; -import com.sdm.common.entity.resp.flowable.DeployFlowableResp; +import com.sdm.flowable.dto.req.CompleteTaskReq; import com.sdm.flowable.enums.FlowElementTypeEnums; import com.sdm.flowable.service.IProcessNodeParamService; import com.sdm.flowable.util.Dto2BpmnConverter; -import com.sdm.flowable.dto.req.CompleteTaskReq; import com.sdm.flowable.util.FlowNodeIdUtils; import lombok.extern.slf4j.Slf4j; import org.flowable.bpmn.model.*; diff --git a/flowable/src/main/java/com/sdm/flowable/service/IAsyncTaskRecordService.java b/flowable/src/main/java/com/sdm/flowable/service/IAsyncTaskRecordService.java index 4a7c7c0b..cd109e8e 100644 --- a/flowable/src/main/java/com/sdm/flowable/service/IAsyncTaskRecordService.java +++ b/flowable/src/main/java/com/sdm/flowable/service/IAsyncTaskRecordService.java @@ -1,7 +1,7 @@ package com.sdm.flowable.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.sdm.flowable.dto.req.AsyncCallbackRequest; +import com.sdm.common.entity.req.flowable.AsyncCallbackRequest; import com.sdm.flowable.entity.AsyncTaskRecord; import org.flowable.engine.delegate.DelegateExecution; diff --git a/flowable/src/main/java/com/sdm/flowable/service/impl/AsyncTaskRecordServiceImpl.java b/flowable/src/main/java/com/sdm/flowable/service/impl/AsyncTaskRecordServiceImpl.java index a8252e16..4b5c8899 100644 --- a/flowable/src/main/java/com/sdm/flowable/service/impl/AsyncTaskRecordServiceImpl.java +++ b/flowable/src/main/java/com/sdm/flowable/service/impl/AsyncTaskRecordServiceImpl.java @@ -2,8 +2,8 @@ package com.sdm.flowable.service.impl; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sdm.common.entity.req.flowable.AsyncCallbackRequest; import com.sdm.flowable.dao.AsyncTaskRecordMapper; -import com.sdm.flowable.dto.req.AsyncCallbackRequest; import com.sdm.flowable.entity.AsyncTaskRecord; import com.sdm.flowable.service.IAsyncTaskRecordService; import org.flowable.engine.RuntimeService; diff --git a/pbs/src/main/java/com/sdm/pbs/schedule/hpc/hander/FinishedStatusHandler.java b/pbs/src/main/java/com/sdm/pbs/schedule/hpc/hander/FinishedStatusHandler.java index 0ac6585f..91e537ec 100644 --- a/pbs/src/main/java/com/sdm/pbs/schedule/hpc/hander/FinishedStatusHandler.java +++ b/pbs/src/main/java/com/sdm/pbs/schedule/hpc/hander/FinishedStatusHandler.java @@ -2,6 +2,8 @@ package com.sdm.pbs.schedule.hpc.hander; import com.alibaba.fastjson2.JSONObject; import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.req.flowable.AsyncCallbackRequest; +import com.sdm.common.feign.inter.flowable.IFlowableFeignClient; import com.sdm.common.log.CoreLogger; import com.sdm.common.utils.DateUtils; import com.sdm.common.utils.String2NumberUtil; @@ -26,6 +28,9 @@ public class FinishedStatusHandler implements JobStatusHandler { @Autowired private HpcInstructionService hpcInstructionService; + @Autowired + private IFlowableFeignClient flowableFeignClient; + @Override public void handle(SimulationJob simJob, HpcJobStatusInfo statusInfo) { try { @@ -49,6 +54,12 @@ public class FinishedStatusHandler implements JobStatusHandler { // 通知成功修改状态 newDbJob.setFileStatus("uploading"); simulationJobService.updateById(newDbJob); + // todo 先直接流程结束 + AsyncCallbackRequest asyncCallbackRequest = new AsyncCallbackRequest(); + asyncCallbackRequest.setAsyncTaskId(newDbJob.getJobId()); + asyncCallbackRequest.setResultJson("finished"); + SdmResponse sdmResponse = flowableFeignClient.asyncCallback(asyncCallbackRequest); + CoreLogger.info("flowableFeignClient asyncCallback result:{}", JSONObject.toJSONString(sdmResponse)); } catch (Exception e) { CoreLogger.error("HpcJobStatus finshed handle error:{},newDbJob:{},statusInfo:{}",e.getMessage(), JSONObject.toJSONString(simJob),JSONObject.toJSONString(statusInfo));