diff --git a/carp-framework/carp-framework-dag/src/main/java/cn/sliew/carp/framework/dag/service/impl/DagInstanceServiceImpl.java b/carp-framework/carp-framework-dag/src/main/java/cn/sliew/carp/framework/dag/service/impl/DagInstanceServiceImpl.java index 9ff6d03b..746a7b35 100644 --- a/carp-framework/carp-framework-dag/src/main/java/cn/sliew/carp/framework/dag/service/impl/DagInstanceServiceImpl.java +++ b/carp-framework/carp-framework-dag/src/main/java/cn/sliew/carp/framework/dag/service/impl/DagInstanceServiceImpl.java @@ -28,6 +28,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; @Service public class DagInstanceServiceImpl extends ServiceImpl implements DagInstanceService { @@ -56,7 +57,7 @@ public boolean update(DagInstanceDTO instanceDTO) { public boolean updateStatus(Long id, String fromStatus, String toStatus) { LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate(DagInstance.class) .eq(DagInstance::getId, id) - .eq(DagInstance::getStatus, fromStatus) + .eq(StringUtils.hasText(fromStatus), DagInstance::getStatus, fromStatus) .set(DagInstance::getStatus, toStatus); return update(wrapper); } diff --git a/carp-framework/carp-framework-dag/src/main/java/cn/sliew/carp/framework/dag/service/impl/DagStepServiceImpl.java b/carp-framework/carp-framework-dag/src/main/java/cn/sliew/carp/framework/dag/service/impl/DagStepServiceImpl.java index f5353531..8022485d 100644 --- a/carp-framework/carp-framework-dag/src/main/java/cn/sliew/carp/framework/dag/service/impl/DagStepServiceImpl.java +++ b/carp-framework/carp-framework-dag/src/main/java/cn/sliew/carp/framework/dag/service/impl/DagStepServiceImpl.java @@ -31,6 +31,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import java.util.List; @@ -66,7 +67,7 @@ public boolean update(DagStepDTO stepDTO) { public boolean updateStatus(Long id, String fromStatus, String toStatus) { LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate(DagStep.class) .eq(DagStep::getId, id) - .eq(DagStep::getStatus, fromStatus) + .eq(StringUtils.hasText(fromStatus), DagStep::getStatus, fromStatus) .set(DagStep::getStatus, toStatus); return update(wrapper); } diff --git a/carp-modules/carp-module-workflow/carp-module-workflow-api/src/main/java/cn/sliew/carp/module/workflow/api/controller/WorkflowInstanceController.java b/carp-modules/carp-module-workflow/carp-module-workflow-api/src/main/java/cn/sliew/carp/module/workflow/api/controller/WorkflowInstanceController.java index b1bd33a5..198881c4 100644 --- a/carp-modules/carp-module-workflow/carp-module-workflow-api/src/main/java/cn/sliew/carp/module/workflow/api/controller/WorkflowInstanceController.java +++ b/carp-modules/carp-module-workflow/carp-module-workflow-api/src/main/java/cn/sliew/carp/module/workflow/api/controller/WorkflowInstanceController.java @@ -18,6 +18,7 @@ package cn.sliew.carp.module.workflow.api.controller; +import cn.sliew.carp.framework.common.security.annotations.AnonymousAccess; import cn.sliew.carp.framework.web.response.ApiResponseWrapper; import cn.sliew.carp.module.workflow.api.service.WorkflowInstanceService; import cn.sliew.carp.module.workflow.api.service.param.WorkflowRunParam; @@ -31,6 +32,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +@AnonymousAccess @RestController @ApiResponseWrapper @RequestMapping("/api/carp/workflow/instance") diff --git a/carp-modules/carp-module-workflow/carp-module-workflow-internal/src/main/java/cn/sliew/carp/module/workflow/internal/service/impl/WorkflowInstanceServiceImpl.java b/carp-modules/carp-module-workflow/carp-module-workflow-internal/src/main/java/cn/sliew/carp/module/workflow/internal/service/impl/WorkflowInstanceServiceImpl.java index 97fbf2ac..887be112 100644 --- a/carp-modules/carp-module-workflow/carp-module-workflow-internal/src/main/java/cn/sliew/carp/module/workflow/internal/service/impl/WorkflowInstanceServiceImpl.java +++ b/carp-modules/carp-module-workflow/carp-module-workflow-internal/src/main/java/cn/sliew/carp/module/workflow/internal/service/impl/WorkflowInstanceServiceImpl.java @@ -18,8 +18,11 @@ package cn.sliew.carp.module.workflow.internal.service.impl; +import cn.sliew.carp.framework.common.dict.workflow.WorkflowInstanceState; import cn.sliew.carp.framework.common.dict.workflow.WorkflowStepType; +import cn.sliew.carp.framework.common.dict.workflow.WorkflowTaskInstanceStage; import cn.sliew.carp.framework.dag.service.DagInstanceComplexService; +import cn.sliew.carp.framework.dag.service.DagInstanceService; import cn.sliew.carp.framework.dag.service.DagStepService; import cn.sliew.carp.framework.dag.service.dto.DagInstanceComplexDTO; import cn.sliew.carp.framework.dag.service.dto.DagInstanceDTO; @@ -46,6 +49,8 @@ public class WorkflowInstanceServiceImpl implements WorkflowInstanceService { @Autowired private DagInstanceComplexService dagInstanceComplexService; @Autowired + private DagInstanceService dagInstanceService; + @Autowired private DagStepService dagStepService; @Override @@ -82,14 +87,22 @@ public WorkflowTaskInstance getTask(Long workflowTaskInstanceId) { @Override public Long simpleInitialize(Long workflowDefinitionId) { Long workflowInstanceId = dagInstanceComplexService.initialize(workflowDefinitionId); - // todo 更新状态 + dagInstanceService.updateStatus(workflowInstanceId, null, WorkflowInstanceState.PENDING.getValue()); + List dagStepDTOS = dagStepService.listSteps(workflowInstanceId); + for (DagStepDTO dagStepDTO : dagStepDTOS) { + dagStepService.updateStatus(dagStepDTO.getId(), null, WorkflowTaskInstanceStage.PENDING.getValue()); + } return workflowInstanceId; } @Override public Long run(WorkflowRunParam param) { Long workflowInstanceId = simpleInitialize(param.getId()); - // todo 更新参数 + // 更新参数 + DagInstanceDTO instanceDTO = new DagInstanceDTO(); + instanceDTO.setId(workflowInstanceId); + instanceDTO.setInputs(param.getGlobalVariable()); + dagInstanceService.update(instanceDTO); return workflowInstanceId; }