From 8c3535b27c185a52f5277d098a06a34a46dc7277 Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Mon, 7 Jul 2025 16:56:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E6=B0=B4=E7=BA=BF=E5=BC=95=E6=93=8E?= =?UTF-8?q?=E5=90=8E=E7=BD=AE=E5=A4=84=E7=90=86=E5=99=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/manager/PostHandlerManager.java | 6 ++- .../impl/DefaultRunContextManager.java | 1 + .../impl/MemoryPostHandlerManager.java | 39 +++++++++++++++++++ .../postHandler/PipExecutePostHandler.java | 17 ++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryPostHandlerManager.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/postHandler/PipExecutePostHandler.java diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/PostHandlerManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/PostHandlerManager.java index 9a257b6b..7dbeb93d 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/PostHandlerManager.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/PostHandlerManager.java @@ -1,5 +1,9 @@ package cd.casic.ci.process.engine.manager; -public interface PostHandlerManager { +import cd.casic.ci.process.engine.postHandler.PipExecutePostHandler; +import cd.casic.ci.process.process.dataObject.history.PipPipelineHisInstance; +public interface PostHandlerManager { + public void registerPostHandler(PipExecutePostHandler handler); + public void executePostHandler(PipPipelineHisInstance hisInstance); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java index b81fdb8e..421efbab 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java @@ -51,6 +51,7 @@ public class DefaultRunContextManager implements RunContextManager { private PipPipelineHisInstanceDao hisInstanceDao; @Resource private PipelineService pipelineService; + @Override public Boolean stopPipeline(String pipelineId) { return null; diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryPostHandlerManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryPostHandlerManager.java new file mode 100644 index 00000000..d12d4505 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryPostHandlerManager.java @@ -0,0 +1,39 @@ +package cd.casic.ci.process.engine.manager.impl; + +import cd.casic.ci.process.engine.manager.PostHandlerManager; +import cd.casic.ci.process.engine.postHandler.PipExecutePostHandler; +import cd.casic.ci.process.process.dataObject.history.PipPipelineHisInstance; +import cd.casic.framework.commons.exception.ServiceException; +import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; + +@Component +public class MemoryPostHandlerManager implements PostHandlerManager { + private ConcurrentHashMap> handlerMap = new ConcurrentHashMap<>(); + @Override + public void registerPostHandler(PipExecutePostHandler handler) { + if (handler==null|| StringUtils.isNotEmpty(handler.getPipelineId())) { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"注册后置处理器失败"); + } + List orDefault = handlerMap.getOrDefault(handler.getPipelineId(), new CopyOnWriteArrayList<>()); + orDefault.add(handler); + } + + @Override + public void executePostHandler(PipPipelineHisInstance hisInstance) { + String pipelineId = hisInstance.getPipelineId(); + List pipExecutePostHandlers = handlerMap.get(pipelineId); + if (CollectionUtils.isEmpty(pipExecutePostHandlers)) { + return; + } + for (PipExecutePostHandler postHandler : pipExecutePostHandlers) { + postHandler.executeAfterDone(hisInstance); + } + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/postHandler/PipExecutePostHandler.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/postHandler/PipExecutePostHandler.java new file mode 100644 index 00000000..df26e110 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/postHandler/PipExecutePostHandler.java @@ -0,0 +1,17 @@ +package cd.casic.ci.process.engine.postHandler; + +import cd.casic.ci.process.process.dataObject.history.PipPipelineHisInstance; +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public abstract class PipExecutePostHandler { + private String taskId; + private String pipelineId; + + /** + * 流水线执行结束需要执行的操作 + * */ + public abstract void executeAfterDone(PipPipelineHisInstance pipPipelineHisInstance); +}