Search in sources :

Example 1 with FillDataChooseTaskDTO

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;
}
Also used : FillDataChooseTaskDTO(com.dtstack.taier.scheduler.dto.fill.FillDataChooseTaskDTO) ScheduleTaskTaskShade(com.dtstack.taier.dao.domain.ScheduleTaskTaskShade)

Aggregations

ScheduleTaskTaskShade (com.dtstack.taier.dao.domain.ScheduleTaskTaskShade)1 FillDataChooseTaskDTO (com.dtstack.taier.scheduler.dto.fill.FillDataChooseTaskDTO)1