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());
}
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);
}
});
}
}
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);
}
}
}
Aggregations