Search in sources :

Example 11 with ScheduleJobDetails

use of com.dtstack.taier.scheduler.server.ScheduleJobDetails in project Taier by DTStack.

the class CycleJobBuilder method savaJobList.

/**
 * 保存周期实例
 *
 * @param scheduleJobDetails 实例详情
 */
@Transactional(rollbackFor = Exception.class)
@DtDruidRemoveAbandoned
public void savaJobList(List<ScheduleJobDetails> scheduleJobDetails) {
    List<ScheduleJobDetails> savaJobDetails = Lists.newArrayList();
    for (ScheduleJobDetails scheduleJobDetail : scheduleJobDetails) {
        savaJobDetails.add(scheduleJobDetail);
        List<ScheduleJobDetails> flowBean = scheduleJobDetail.getFlowBean();
        if (CollectionUtils.isNotEmpty(flowBean)) {
            savaJobDetails.addAll(flowBean);
        }
    }
    scheduleJobService.insertJobList(savaJobDetails, getType());
}
Also used : ScheduleJobDetails(com.dtstack.taier.scheduler.server.ScheduleJobDetails) DtDruidRemoveAbandoned(com.dtstack.taier.scheduler.druid.DtDruidRemoveAbandoned) Transactional(org.springframework.transaction.annotation.Transactional)

Example 12 with ScheduleJobDetails

use of com.dtstack.taier.scheduler.server.ScheduleJobDetails in project Taier by DTStack.

the class FillDataJobBuilder method buildFillDataJobGraph.

/**
 * 创建一天的补数据实例
 *
 * @param fillName 补数据名称
 * @param fillId 补数据id
 * @param all all list 所有节点
 * @param run run list 可运行节点
 * @param triggerDay 具体目标天
 * @param beginTime  每天时间范围 开始范围
 * @param endTime 每天时间范围 结束范围
 * @throws Exception
 */
@Transactional(rollbackFor = Exception.class)
private void buildFillDataJobGraph(String fillName, Long fillId, Set<Long> all, Set<Long> run, String triggerDay, String beginTime, String endTime) throws Exception {
    List<Long> allList = Lists.newArrayList(all);
    List<List<Long>> partition = Lists.partition(allList, environmentContext.getJobLimitSize());
    AtomicJobSortWorker sortWorker = new AtomicJobSortWorker();
    for (List<Long> taskKey : partition) {
        jobGraphBuildPool.submit(() -> {
            try {
                List<ScheduleJobDetails> saveList = Lists.newArrayList();
                for (Long taskId : taskKey) {
                    try {
                        ScheduleTaskShade scheduleTaskShade = scheduleTaskService.lambdaQuery().eq(ScheduleTaskShade::getTaskId, taskId).eq(ScheduleTaskShade::getIsDeleted, Deleted.NORMAL.getStatus()).one();
                        if (scheduleTaskShade != null) {
                            List<ScheduleJobDetails> jobBuilderBeanList = Lists.newArrayList();
                            // 非工作流任务子任务
                            if (scheduleTaskShade.getFlowId() == 0) {
                                // 生成补数据实例
                                jobBuilderBeanList = RetryUtil.executeWithRetry(() -> buildJob(scheduleTaskShade, fillName, triggerDay, beginTime, endTime, fillId, sortWorker), environmentContext.getBuildJobErrorRetry(), 200, false);
                            } else {
                                Long flowId = scheduleTaskShade.getFlowId();
                                if (!allList.contains(flowId)) {
                                    // 生成周期实例
                                    jobBuilderBeanList = RetryUtil.executeWithRetry(() -> buildJob(scheduleTaskShade, fillName, triggerDay, beginTime, beginTime, fillId, sortWorker), environmentContext.getBuildJobErrorRetry(), 200, false);
                                }
                            }
                            for (ScheduleJobDetails jobBuilderBean : jobBuilderBeanList) {
                                addMap(run, saveList, taskId, jobBuilderBean);
                            }
                        }
                    } catch (Exception e) {
                        LOGGER.error("taskKey : {} error:", taskId, e);
                    }
                }
                savaFillJob(saveList);
            } catch (Exception e) {
                LOGGER.error("fill error:", e);
            }
        });
    }
}
Also used : ScheduleJobDetails(com.dtstack.taier.scheduler.server.ScheduleJobDetails) ScheduleTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskShade) Transactional(org.springframework.transaction.annotation.Transactional)

Example 13 with ScheduleJobDetails

use of com.dtstack.taier.scheduler.server.ScheduleJobDetails in project Taier by DTStack.

the class FillDataJobBuilder method addMap.

/**
 * @param run  run list 可运行节点
 * @param saveList 生成实例集合
 * @param taskId 任务id
 * @param jobBuilderBean 构建出来的实际
 */
private void addMap(Set<Long> run, List<ScheduleJobDetails> saveList, Long taskId, ScheduleJobDetails jobBuilderBean) {
    ScheduleJob scheduleJob = jobBuilderBean.getScheduleJob();
    if (run.contains(taskId)) {
        scheduleJob.setFillType(FillJobTypeEnum.RUN_JOB.getType());
    } else {
        scheduleJob.setFillType(FillJobTypeEnum.MIDDLE_JOB.getType());
    }
    saveList.add(jobBuilderBean);
    // saveMap.put(scheduleJob.getJobId(),jobBuilderBean);
    List<ScheduleJobDetails> flowBean = jobBuilderBean.getFlowBean();
    if (CollectionUtils.isNotEmpty(flowBean)) {
        for (ScheduleJobDetails builderBean : flowBean) {
            ScheduleJob flowScheduleJob = builderBean.getScheduleJob();
            flowScheduleJob.setFillType(FillJobTypeEnum.RUN_JOB.getType());
            saveList.add(jobBuilderBean);
        }
    }
}
Also used : ScheduleJobDetails(com.dtstack.taier.scheduler.server.ScheduleJobDetails) ScheduleJob(com.dtstack.taier.dao.domain.ScheduleJob)

Aggregations

ScheduleJobDetails (com.dtstack.taier.scheduler.server.ScheduleJobDetails)13 ScheduleJob (com.dtstack.taier.dao.domain.ScheduleJob)9 ScheduleTaskShade (com.dtstack.taier.dao.domain.ScheduleTaskShade)5 Deleted (com.dtstack.taier.common.enums.Deleted)4 ScheduleJobJob (com.dtstack.taier.dao.domain.ScheduleJobJob)4 Collectors (java.util.stream.Collectors)4 CollectionUtils (org.apache.commons.collections.CollectionUtils)4 Logger (org.slf4j.Logger)4 LoggerFactory (org.slf4j.LoggerFactory)4 Autowired (org.springframework.beans.factory.annotation.Autowired)4 TaskStatus (com.dtstack.taier.pluginapi.enums.TaskStatus)3 ScheduleJobService (com.dtstack.taier.scheduler.service.ScheduleJobService)3 List (java.util.List)3 Transactional (org.springframework.transaction.annotation.Transactional)3 EScheduleType (com.dtstack.taier.common.enums.EScheduleType)2 JobCheckStatus (com.dtstack.taier.common.enums.JobCheckStatus)2 OperatorType (com.dtstack.taier.common.enums.OperatorType)2 ScheduleJobOperatorRecord (com.dtstack.taier.dao.domain.ScheduleJobOperatorRecord)2 JudgeJobExecOperator (com.dtstack.taier.scheduler.server.scheduler.exec.JudgeJobExecOperator)2 ScheduleJobOperatorRecordService (com.dtstack.taier.scheduler.service.ScheduleJobOperatorRecordService)2