use of com.dtstack.taier.scheduler.dto.fill.FillDataChooseTaskDTO in project Taier by DTStack.
the class BatchFillDataTask method getRunList.
@Override
public Set<Long> getRunList() {
Set<Long> runList = Sets.newHashSet();
FillDataChooseTaskDTO rootTaskId = this.fillDataInfoBO.getRootTaskId();
if (rootTaskId == null) {
List<FillDataChooseTaskDTO> taskIds = this.fillDataInfoBO.getTaskChooseList();
taskIds.forEach(task -> runList.add(task.getTaskId()));
} else {
List<Long> taskIds = Lists.newArrayList(rootTaskId.getTaskId());
runList.addAll(taskIds);
int level = 0;
List<ScheduleTaskTaskShade> scheduleTaskTaskShades = getScheduleTaskTaskShades(taskIds);
while (CollectionUtils.isNotEmpty(scheduleTaskTaskShades)) {
List<Long> taskId = scheduleTaskTaskShades.stream().map(ScheduleTaskTaskShade::getTaskId).collect(Collectors.toList());
runList.addAll(taskId);
level++;
if (level > environmentContext.getFillDataRootTaskMaxLevel()) {
LOGGER.warn("rootTaskId:{} max:{} break cycle", rootTaskId.getTaskId(), level);
break;
}
scheduleTaskTaskShades = getScheduleTaskTaskShades(taskId);
}
}
return runList;
}
Aggregations