feat(flow): 添加任务执行入口和实例管理功能
- 在 FlowTaskRuntimeEntry 中添加事务注解支持 - 为 FlowTaskRuntimeService 接口添加方法间隔 - 在 TeFlowController 中引入任务实例ID列表管理 - 新增 demo 接口用于任务执行和实例清理 - 实现任务实例的自动停止和清理机制 - 集成 flowControlService 的 stop 功能用于流程控制
This commit is contained in:
parent
3868194932
commit
79da694baf
@ -27,6 +27,8 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Api(tags = "测试--流程服务")
|
@Api(tags = "测试--流程服务")
|
||||||
@RestController
|
@RestController
|
||||||
@ -41,13 +43,31 @@ public class TeFlowController extends BaseController {
|
|||||||
private final FlowControlService flowControlService;
|
private final FlowControlService flowControlService;
|
||||||
private final FlowActionExecutorService flowActionExecutorService;
|
private final FlowActionExecutorService flowActionExecutorService;
|
||||||
private final TiTouchOperateService tiTouchOperateService;
|
private final TiTouchOperateService tiTouchOperateService;
|
||||||
|
private final List<String> taskInstIdList = new ArrayList<>();
|
||||||
@ApiOperation("流程发布")
|
@ApiOperation("流程发布")
|
||||||
@PostMapping("/publish")
|
@PostMapping("/publish")
|
||||||
public AjaxResult publish(@RequestBody TeDetectionItem detectionItem) {
|
public AjaxResult publish(@RequestBody TeDetectionItem detectionItem) {
|
||||||
return toAjax(teDetectionItemService.publish(detectionItem.getId()));
|
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("任务执行入口")
|
@ApiOperation("任务执行入口")
|
||||||
@PostMapping("/execute")
|
@PostMapping("/execute")
|
||||||
@Anonymous
|
@Anonymous
|
||||||
|
|||||||
@ -42,6 +42,8 @@ public class FlowTaskRuntimeEntry implements FlowTaskRuntimeService {
|
|||||||
private final TaskInstHolder taskInstHolder;
|
private final TaskInstHolder taskInstHolder;
|
||||||
private final FlowTaskAsyncDispatcher flowTaskAsyncDispatcher;
|
private final FlowTaskAsyncDispatcher flowTaskAsyncDispatcher;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public String executeTask(TeTaskExecuteNormalVO taskExecuteNormalVO) {
|
public String executeTask(TeTaskExecuteNormalVO taskExecuteNormalVO) {
|
||||||
return executeTaskInternal(
|
return executeTaskInternal(
|
||||||
|
|||||||
@ -18,6 +18,7 @@ public interface FlowTaskRuntimeService {
|
|||||||
*/
|
*/
|
||||||
String executeTask(TeTaskExecuteNormalVO taskExecuteNormalVO);
|
String executeTask(TeTaskExecuteNormalVO taskExecuteNormalVO);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 执行试运行任务(TRIAL 模式)
|
* 执行试运行任务(TRIAL 模式)
|
||||||
*
|
*
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user