pub struct DependencyResolver;Expand description
Resolves step dependencies and builds execution order
Handles:
- Building execution order from dependency graph
- Detecting and reporting circular dependencies
- Waiting for dependencies before executing step
Implementations§
Source§impl DependencyResolver
impl DependencyResolver
Sourcepub fn resolve_execution_order(
workflow: &Workflow,
) -> WorkflowResult<Vec<String>>
pub fn resolve_execution_order( workflow: &Workflow, ) -> WorkflowResult<Vec<String>>
Build execution order from dependency graph
Uses topological sort to determine the order in which steps should execute based on their dependencies. Returns error if circular dependencies are detected.
Sourcepub fn detect_circular_dependencies(workflow: &Workflow) -> WorkflowResult<()>
pub fn detect_circular_dependencies(workflow: &Workflow) -> WorkflowResult<()>
Detect circular dependencies in workflow
Uses depth-first search to detect cycles in the dependency graph. Returns error if any circular dependency is found.
Sourcepub fn get_all_dependencies(
workflow: &Workflow,
step_id: &str,
) -> WorkflowResult<HashSet<String>>
pub fn get_all_dependencies( workflow: &Workflow, step_id: &str, ) -> WorkflowResult<HashSet<String>>
Get all dependencies for a step (transitive closure)
Returns all steps that must be completed before the given step can execute, including transitive dependencies.
Sourcepub fn get_dependent_steps(
workflow: &Workflow,
step_id: &str,
) -> WorkflowResult<HashSet<String>>
pub fn get_dependent_steps( workflow: &Workflow, step_id: &str, ) -> WorkflowResult<HashSet<String>>
Get all steps that depend on a given step (reverse dependencies)
Returns all steps that have the given step as a dependency (direct or transitive).
Sourcepub fn can_execute_step(
workflow: &Workflow,
completed_steps: &[String],
step_id: &str,
) -> WorkflowResult<bool>
pub fn can_execute_step( workflow: &Workflow, completed_steps: &[String], step_id: &str, ) -> WorkflowResult<bool>
Check if a step can be executed
A step can be executed if all its dependencies have been completed.
Sourcepub fn get_ready_steps(
workflow: &Workflow,
completed_steps: &[String],
in_progress_steps: &[String],
) -> WorkflowResult<Vec<String>>
pub fn get_ready_steps( workflow: &Workflow, completed_steps: &[String], in_progress_steps: &[String], ) -> WorkflowResult<Vec<String>>
Get steps that are ready to execute
Returns all steps whose dependencies are satisfied and haven’t been executed yet.
Sourcepub fn validate_dependencies(workflow: &Workflow) -> WorkflowResult<()>
pub fn validate_dependencies(workflow: &Workflow) -> WorkflowResult<()>
Validate dependency graph
Checks for:
- Missing dependencies (references to non-existent steps)
- Circular dependencies
- Duplicate step IDs