validate method
void
validate()
验证任务依赖关系,检测循环依赖
Implementation
void validate() {
final visited = <String>{};
final recursionStack = <String>{};
void checkCircularDependency(String taskId) {
if (recursionStack.contains(taskId)) {
throw CircularDependencyException(recursionStack.toList() + [taskId]);
}
if (visited.contains(taskId)) return;
visited.add(taskId);
recursionStack.add(taskId);
final task = _taskMap[taskId];
if (task != null) {
for (final depId in task.dependencies) {
if (_taskMap.containsKey(depId)) {
checkCircularDependency(depId);
}
}
}
recursionStack.remove(taskId);
}
for (final task in tasks) {
if (!visited.contains(task.id)) {
checkCircularDependency(task.id);
}
}
}