From 79da694baf6e7112ba417c827782b32ab90cf16a Mon Sep 17 00:00:00 2001 From: lixiaolong <702156524@qq.com> Date: Sat, 16 May 2026 13:55:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(flow):=20=E6=B7=BB=E5=8A=A0=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=89=A7=E8=A1=8C=E5=85=A5=E5=8F=A3=E5=92=8C=E5=AE=9E?= =?UTF-8?q?=E4=BE=8B=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 FlowTaskRuntimeEntry 中添加事务注解支持 - 为 FlowTaskRuntimeService 接口添加方法间隔 - 在 TeFlowController 中引入任务实例ID列表管理 - 新增 demo 接口用于任务执行和实例清理 - 实现任务实例的自动停止和清理机制 - 集成 flowControlService 的 stop 功能用于流程控制 --- .../web/controller/test/TeFlowController.java | 22 ++++++++++++++++++- .../runtime/engine/FlowTaskRuntimeEntry.java | 2 ++ .../engine/FlowTaskRuntimeService.java | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeFlowController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeFlowController.java index 1b1fd0f..07fb58a 100644 --- a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeFlowController.java +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeFlowController.java @@ -27,6 +27,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; @Api(tags = "测试--流程服务") @RestController @@ -41,13 +43,31 @@ public class TeFlowController extends BaseController { private final FlowControlService flowControlService; private final FlowActionExecutorService flowActionExecutorService; private final TiTouchOperateService tiTouchOperateService; - + private final List taskInstIdList = new ArrayList<>(); @ApiOperation("流程发布") @PostMapping("/publish") public AjaxResult publish(@RequestBody TeDetectionItem detectionItem) { return toAjax(teDetectionItemService.publish(detectionItem.getId())); } + + @ApiOperation("任务执行入口") + @PostMapping("/demo") + @Anonymous + public AjaxResult demo(@Valid @RequestBody TeTaskExecuteNormalVO taskExecuteNormalVO) { + if (taskInstIdList.size() > 0) { + try { + taskInstIdList.forEach(flowControlService::stop); + } catch (Exception e) { + // 忽略 + } + taskInstIdList.clear(); + } + String insId = flowTaskRuntimeService.executeTask(taskExecuteNormalVO); + taskInstIdList.add(insId); + return AjaxResult.success(); + } + @ApiOperation("任务执行入口") @PostMapping("/execute") @Anonymous diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java index 22bb8bc..83b4266 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeEntry.java @@ -42,6 +42,8 @@ public class FlowTaskRuntimeEntry implements FlowTaskRuntimeService { private final TaskInstHolder taskInstHolder; private final FlowTaskAsyncDispatcher flowTaskAsyncDispatcher; + + @Transactional(rollbackFor = Exception.class) public String executeTask(TeTaskExecuteNormalVO taskExecuteNormalVO) { return executeTaskInternal( diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeService.java index 6135f0f..80fd8d0 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeService.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/flow/runtime/engine/FlowTaskRuntimeService.java @@ -18,6 +18,7 @@ public interface FlowTaskRuntimeService { */ String executeTask(TeTaskExecuteNormalVO taskExecuteNormalVO); + /** * 执行试运行任务(TRIAL 模式) *