diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/persistence/core/model/InstanceInfoDO.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/persistence/core/model/InstanceInfoDO.java index 5a2802dc..6fbe55d7 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/persistence/core/model/InstanceInfoDO.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/persistence/core/model/InstanceInfoDO.java @@ -43,7 +43,7 @@ public class InstanceInfoDO { /** * 任务状态 {@link InstanceStatus} */ - private int status; + private Integer status; // 执行结果(允许存储稍大的结果) @Lob @Column(columnDefinition="TEXT") diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/persistence/core/repository/InstanceInfoRepository.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/persistence/core/repository/InstanceInfoRepository.java index 616d3c37..3b217b87 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/persistence/core/repository/InstanceInfoRepository.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/persistence/core/repository/InstanceInfoRepository.java @@ -2,8 +2,6 @@ package com.github.kfcfans.oms.server.persistence.core.repository; import com.github.kfcfans.oms.server.persistence.core.model.InstanceInfoDO; import com.google.errorprone.annotations.CanIgnoreReturnValue; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -62,12 +60,6 @@ public interface InstanceInfoRepository extends JpaRepository findByAppIdAndType(long appId, int type, Pageable pageable); - Page findByJobIdAndType(long jobId, int type, Pageable pageable); - // 只会有一条数据,只是为了统一 - Page findByInstanceIdAndType(long instanceId, int type, Pageable pageable); - // 数据统计 long countByAppIdAndStatus(long appId, int status); long countByAppIdAndStatusAndGmtCreateAfter(long appId, int status, Date time); diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/workflow/WorkflowService.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/workflow/WorkflowService.java index 3849f8c6..a12b4380 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/workflow/WorkflowService.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/workflow/WorkflowService.java @@ -5,10 +5,10 @@ import com.github.kfcfans.oms.common.OmsException; import com.github.kfcfans.oms.common.TimeExpressionType; import com.github.kfcfans.oms.common.request.http.SaveWorkflowRequest; import com.github.kfcfans.oms.common.response.WorkflowInfoDTO; -import com.github.kfcfans.oms.server.common.utils.WorkflowDAGUtils; import com.github.kfcfans.oms.server.common.SJ; import com.github.kfcfans.oms.server.common.constans.SwitchableStatus; import com.github.kfcfans.oms.server.common.utils.CronExpression; +import com.github.kfcfans.oms.server.common.utils.WorkflowDAGUtils; import com.github.kfcfans.oms.server.persistence.core.model.WorkflowInfoDO; import com.github.kfcfans.oms.server.persistence.core.repository.WorkflowInfoRepository; import org.springframework.beans.BeanUtils; @@ -58,7 +58,9 @@ public class WorkflowService { wf.setStatus(req.isEnable() ? SwitchableStatus.ENABLE.getV() : SwitchableStatus.DISABLE.getV()); wf.setTimeExpressionType(req.getTimeExpressionType().getV()); - wf.setNotifyUserIds(SJ.commaJoiner.join(req.getNotifyUserIds())); + if (req.getNotifyUserIds() != null) { + wf.setNotifyUserIds(SJ.commaJoiner.join(req.getNotifyUserIds())); + } // 计算 NextTriggerTime if (req.getTimeExpressionType() == TimeExpressionType.CRON) { diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/controller/InstanceController.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/controller/InstanceController.java index bdb00b48..5b1ee3da 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/controller/InstanceController.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/controller/InstanceController.java @@ -20,6 +20,7 @@ import com.github.kfcfans.oms.server.web.response.InstanceInfoVO; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; @@ -110,18 +111,12 @@ public class InstanceController { Sort sort = Sort.by(Sort.Direction.DESC, "gmtModified"); PageRequest pageable = PageRequest.of(request.getIndex(), request.getPageSize(), sort); - // 查询全部数据 - if (request.getJobId() == null && request.getInstanceId() == null) { - return ResultDTO.success(convertPage(instanceInfoRepository.findByAppIdAndType(request.getAppId(), request.getType().getV(), pageable))); - } + InstanceInfoDO queryEntity = new InstanceInfoDO(); + BeanUtils.copyProperties(request, queryEntity); + queryEntity.setType(request.getType().getV()); - // 根据JobId查询 - if (request.getJobId() != null) { - return ResultDTO.success(convertPage(instanceInfoRepository.findByJobIdAndType(request.getJobId(), request.getType().getV(), pageable))); - } - - // 根据InstanceId查询 - return ResultDTO.success(convertPage(instanceInfoRepository.findByInstanceIdAndType(request.getInstanceId(), request.getType().getV(), pageable))); + Page pageResult = instanceInfoRepository.findAll(Example.of(queryEntity), pageable); + return ResultDTO.success(convertPage(pageResult)); } private PageResult convertPage(Page page) { diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/controller/WorkflowController.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/controller/WorkflowController.java index 39c54c19..41b343c3 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/controller/WorkflowController.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/controller/WorkflowController.java @@ -44,6 +44,12 @@ public class WorkflowController { return ResultDTO.success(null); } + @GetMapping("/enable") + public ResultDTO enableWorkflow(Long workflowId, Long appId) { + workflowService.enableWorkflow(workflowId, appId); + return ResultDTO.success(null); + } + @GetMapping("/delete") public ResultDTO deleteWorkflow(Long workflowId, Long appId) { workflowService.deleteWorkflow(workflowId, appId); diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/request/QueryInstanceRequest.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/request/QueryInstanceRequest.java index aac0c352..4b41c5ec 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/request/QueryInstanceRequest.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/web/request/QueryInstanceRequest.java @@ -23,4 +23,5 @@ public class QueryInstanceRequest { private InstanceType type; private Long instanceId; private Long jobId; + private Long wfInstanceId; } diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/OhMyWorker.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/OhMyWorker.java index 66bc3073..f768ef6b 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/OhMyWorker.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/OhMyWorker.java @@ -153,6 +153,7 @@ public class OhMyWorker implements ApplicationContextAware, InitializingBean, Di }catch (OmsException oe) { throw oe; }catch (Exception ignore) { + log.warn("[OhMyWorker] assert appName by url({}) failed, please check the server address.", realUrl); } } log.error("[OhMyWorker] no available server in {}.", config.getServerAddress());