Search in sources :

Example 16 with ScheduleTaskShade

use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.

the class TaskService method frozenTask.

/**
 * 修改任务运行状态
 *
 * @param taskIdList 任务id
 * @param scheduleStatus 调度状态
 * @return 是否更新成功
 */
public Boolean frozenTask(List<Long> taskIdList, Integer scheduleStatus) {
    if (CollectionUtils.isEmpty(taskIdList)) {
        LOGGER.error("taskIdList is null");
        return Boolean.FALSE;
    }
    if (EScheduleStatus.getStatus(scheduleStatus) == null) {
        LOGGER.error("scheduleStatus is null");
        return Boolean.FALSE;
    }
    ScheduleTaskShade scheduleTask = new ScheduleTaskShade();
    scheduleTask.setScheduleStatus(scheduleStatus);
    return this.lambdaUpdate().in(ScheduleTaskShade::getTaskId, taskIdList).eq(ScheduleTaskShade::getIsDeleted, Deleted.NORMAL.getStatus()).update(scheduleTask);
}
Also used : ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade)

Example 17 with ScheduleTaskShade

use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.

the class TaskTaskService method displayLevelNode.

/**
 * 展示固定层级的节点
 *
 * @param taskShade  头任务
 * @param level      层级
 * @param directType 方向
 * @return
 */
private List<TaskNodeVO> displayLevelNode(ScheduleTaskShade taskShade, Integer level, Integer directType) {
    List<TaskNodeVO> taskNodeVOS = Lists.newArrayList();
    if (level <= 0) {
        // 已经到达需要查询的节点层数,不需要继续向下查询,直接返回即可
        return taskNodeVOS;
    }
    List<ScheduleTaskTaskShade> taskTaskShades;
    List<Long> taskIdList;
    // 查询节点
    if (DisplayDirect.CHILD.getType().equals(directType)) {
        // 向下
        taskTaskShades = this.lambdaQuery().eq(ScheduleTaskTaskShade::getParentTaskId, taskShade.getTaskId()).eq(ScheduleTaskTaskShade::getIsDeleted, Deleted.NORMAL.getStatus()).list();
        taskIdList = taskTaskShades.stream().map(ScheduleTaskTaskShade::getTaskId).collect(Collectors.toList());
    } else {
        // 向上
        taskTaskShades = this.lambdaQuery().eq(ScheduleTaskTaskShade::getTaskId, taskShade.getTaskId()).eq(ScheduleTaskTaskShade::getIsDeleted, Deleted.NORMAL.getStatus()).list();
        taskIdList = taskTaskShades.stream().map(ScheduleTaskTaskShade::getParentTaskId).collect(Collectors.toList());
    }
    if (CollectionUtils.isEmpty(taskTaskShades)) {
        return taskNodeVOS;
    }
    // 查询任务
    List<ScheduleTaskShade> taskShadeList = taskService.lambdaQuery().in(ScheduleTaskShade::getTaskId, taskIdList).eq(ScheduleTaskShade::getFlowId, 0).eq(ScheduleTaskShade::getIsDeleted, Deleted.NORMAL.getStatus()).list();
    Map<Long, ScheduleTaskShade> taskShadeMap = taskShadeList.stream().collect(Collectors.toMap(ScheduleTaskShade::getTaskId, g -> (g)));
    for (ScheduleTaskTaskShade taskTaskShade : taskTaskShades) {
        ScheduleTaskShade taskShadeSon;
        if (DisplayDirect.CHILD.getType().equals(directType)) {
            taskShadeSon = taskShadeMap.get(taskTaskShade.getTaskId());
        } else {
            taskShadeSon = taskShadeMap.get(taskTaskShade.getParentTaskId());
        }
        TaskNodeVO vo = new TaskNodeVO();
        if (taskShadeSon != null) {
            setNode(taskShadeSon, vo);
            if (DisplayDirect.CHILD.getType().equals(directType)) {
                vo.setChildNode(displayLevelNode(taskShadeSon, level - 1, directType));
            } else {
                vo.setParentNode(displayLevelNode(taskShadeSon, level - 1, directType));
            }
        }
        taskNodeVOS.add(vo);
    }
    return taskNodeVOS;
}
Also used : ServiceImpl(com.baomidou.mybatisplus.extension.service.impl.ServiceImpl) QueryTaskDisplayDTO(com.dtstack.taier.scheduler.dto.schedule.QueryTaskDisplayDTO) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade) UserService(com.dtstack.taier.develop.service.user.UserService) ReturnTaskDisplayVO(com.dtstack.taier.develop.vo.schedule.ReturnTaskDisplayVO) TaskNodeVO(com.dtstack.taier.develop.vo.schedule.TaskNodeVO) EnvironmentContext(com.dtstack.taier.common.env.EnvironmentContext) TenantService(com.dtstack.taier.develop.service.console.TenantService) Autowired(org.springframework.beans.factory.annotation.Autowired) Set(java.util.Set) Collectors(java.util.stream.Collectors) ScheduleTaskTaskShadeMapper(com.dtstack.taier.dao.mapper.ScheduleTaskTaskShadeMapper) Sets(com.google.common.collect.Sets) DisplayDirect(com.dtstack.taier.common.enums.DisplayDirect) ScheduleTaskTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskTaskShade) List(java.util.List) Tenant(com.dtstack.taier.dao.domain.Tenant) Lists(com.google.common.collect.Lists) CollectionUtils(org.apache.commons.collections.CollectionUtils) Service(org.springframework.stereotype.Service) Map(java.util.Map) JobUtils(com.dtstack.taier.develop.utils.JobUtils) EScheduleJobType(com.dtstack.taier.common.enums.EScheduleJobType) Deleted(com.dtstack.taier.common.enums.Deleted) TaskNodeVO(com.dtstack.taier.develop.vo.schedule.TaskNodeVO) ScheduleTaskTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskTaskShade) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade)

Example 18 with ScheduleTaskShade

use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.

the class TaskTaskService method findChildNode.

/**
 * 查询孩子节点
 *
 * @param root        顶节点
 * @param taskTaskMap 节点关系集合
 * @return 节点列表
 */
private List<TaskNodeVO> findChildNode(TaskNodeVO root, Map<Long, ScheduleTaskShade> taskMaps, Map<Long, List<ScheduleTaskTaskShade>> taskTaskMap) {
    List<ScheduleTaskTaskShade> scheduleTaskTaskShades = taskTaskMap.get(root.getTaskId());
    List<TaskNodeVO> taskNodeVOS = Lists.newArrayList();
    if (CollectionUtils.isEmpty(scheduleTaskTaskShades)) {
        return taskNodeVOS;
    }
    for (ScheduleTaskTaskShade taskTaskShade : scheduleTaskTaskShades) {
        ScheduleTaskShade taskShade = taskMaps.get(taskTaskShade.getTaskId());
        TaskNodeVO vo = new TaskNodeVO();
        vo.setTaskId(taskTaskShade.getTaskId());
        if (taskShade != null) {
            setNode(taskShade, vo);
        }
        vo.setChildNode(findChildNode(vo, taskMaps, taskTaskMap));
        taskNodeVOS.add(vo);
    }
    return taskNodeVOS;
}
Also used : ScheduleTaskTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskTaskShade) TaskNodeVO(com.dtstack.taier.develop.vo.schedule.TaskNodeVO) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade)

Example 19 with ScheduleTaskShade

use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.

the class TaskStatusJudgeJobExecOperator method isExec.

@Override
public JobCheckRunInfo isExec(ScheduleJobDetails scheduleJobDetails) {
    ScheduleTaskShade scheduleTaskShade = scheduleJobDetails.getScheduleTaskShade();
    ScheduleJob scheduleJob = scheduleJobDetails.getScheduleJob();
    JobCheckRunInfo checkRunInfo = new JobCheckRunInfo();
    // 任务已经删除
    if (scheduleTaskShade == null || Deleted.DELETED.getStatus().equals(scheduleTaskShade.getIsDeleted())) {
        checkRunInfo.setPass(Boolean.FALSE);
        checkRunInfo.setStatus(JobCheckStatus.TASK_DELETE);
        checkRunInfo.setLogInfo(JobCheckStatus.TASK_DELETE.getMsg());
        return checkRunInfo;
    }
    // 任务停止: 不管什么情况任务都是冻结状态
    if (EScheduleStatus.STOP.getVal().equals(scheduleTaskShade.getScheduleStatus())) {
        checkRunInfo.setPass(Boolean.FALSE);
        checkRunInfo.setStatus(JobCheckStatus.TASK_STATUS_STOP);
        checkRunInfo.setLogInfo(String.format(JobCheckStatus.TASK_STATUS_STOP.getMsg(), scheduleTaskShade.getName(), EScheduleStatus.getStatus(scheduleTaskShade.getScheduleStatus())));
        return checkRunInfo;
    }
    // 任务冻结:冻结任务只对正常的周期实例有效,补数据还是可以正常运行
    if (EScheduleStatus.FREEZE.getVal().equals(scheduleTaskShade.getScheduleStatus()) && EScheduleType.NORMAL_SCHEDULE.getType().equals(scheduleJob.getType())) {
        checkRunInfo.setPass(Boolean.FALSE);
        checkRunInfo.setStatus(JobCheckStatus.TASK_STATUS_STOP);
        checkRunInfo.setLogInfo(String.format(JobCheckStatus.TASK_STATUS_STOP.getMsg(), scheduleTaskShade.getName(), EScheduleStatus.getStatus(scheduleTaskShade.getScheduleStatus())));
        return checkRunInfo;
    }
    checkRunInfo.setPass(Boolean.TRUE);
    return checkRunInfo;
}
Also used : ScheduleJob(com.dtstack.taier.dao.domain.ScheduleJob) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade)

Example 20 with ScheduleTaskShade

use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.

the class SyncOperatorPipeline method pipeline.

@Override
public void pipeline(Map<String, Object> actionParam, Map<String, Object> pipelineParam) throws Exception {
    ScheduleTaskShade taskShade = (ScheduleTaskShade) pipelineParam.get(taskShadeKey);
    ScheduleJob scheduleJob = (ScheduleJob) pipelineParam.get(scheduleJobKey);
    List<ScheduleTaskParamShade> taskParamShades = (List) pipelineParam.get(taskParamsToReplaceKey);
    String taskParams = (String) actionParam.get("taskParams");
    String job = (String) actionParam.get("job");
    EDeployMode deployMode = TaskParamsUtils.parseDeployTypeByTaskParams(taskParams, taskShade.getComputeType());
    job = this.replaceSyncJobString(actionParam, taskShade, scheduleJob, taskParamShades, job, deployMode);
    // 构造savepoint参数
    String savepointArgs = null;
    String taskExeArgs = null;
    if (isRestore(job)) {
        String savepointPath = this.getSavepointPath(taskShade.getTenantId(), deployMode, taskShade.getComponentVersion());
        savepointArgs = buildSyncTaskExecArgs(savepointPath, taskParams);
        taskParams += String.format(" \n %s=%s", KEY_OPEN_CHECKPOINT, Boolean.TRUE);
    }
    job = URLEncoder.encode(job.replace(CommonConstant.JOB_ID, scheduleJob.getJobId()), Charsets.UTF_8.name());
    taskExeArgs = String.format(JOB_ARGS_TEMPLATE, scheduleJob.getJobName(), job);
    if (savepointArgs != null) {
        taskExeArgs += " " + savepointArgs;
    }
    actionParam.put("exeArgs", taskExeArgs);
    actionParam.put("taskParams", taskParams);
}
Also used : ScheduleJob(com.dtstack.taier.dao.domain.ScheduleJob) ScheduleTaskParamShade(com.dtstack.taier.dao.dto.ScheduleTaskParamShade) EDeployMode(com.dtstack.taier.pluginapi.enums.EDeployMode) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade)

Aggregations

ScheduleTaskShade (com.dtstack.taier.dao.domain.ScheduleTaskShade)33 ScheduleJob (com.dtstack.taier.dao.domain.ScheduleJob)13 RdosDefineException (com.dtstack.taier.common.exception.RdosDefineException)12 Deleted (com.dtstack.taier.common.enums.Deleted)7 List (java.util.List)7 Collectors (java.util.stream.Collectors)7 CollectionUtils (org.apache.commons.collections.CollectionUtils)7 Autowired (org.springframework.beans.factory.annotation.Autowired)7 UserService (com.dtstack.taier.develop.service.user.UserService)6 Lists (com.google.common.collect.Lists)6 Timestamp (java.sql.Timestamp)6 Map (java.util.Map)6 Service (org.springframework.stereotype.Service)6 JSONObject (com.alibaba.fastjson.JSONObject)5 ServiceImpl (com.baomidou.mybatisplus.extension.service.impl.ServiceImpl)5 EnvironmentContext (com.dtstack.taier.common.env.EnvironmentContext)5 ScheduleTaskTaskShade (com.dtstack.taier.dao.domain.ScheduleTaskTaskShade)5 EScheduleJobType (com.dtstack.taier.common.enums.EScheduleJobType)4 Tenant (com.dtstack.taier.dao.domain.Tenant)4 User (com.dtstack.taier.dao.domain.User)4