Skip to content

Dependencies

Dependencies control execution order between activities. The library provides small helpers that read closer to workflow code than raw dependsOn arrays.

Chain activities

lookup.then(copy).then(notebook)

By default, .then() creates a dependency on Succeeded.

Use shorthand chaining

lookup >> copy >> notebook

>> is equivalent to .then() and works well for linear flows.

Branch on non-success conditions

copy.then(notify, on="Failed")
copy.then(cleanup, on="Completed")

Supported conditions mirror Fabric dependency conditions such as Succeeded, Failed, Completed, and Skipped.

Fan in multiple predecessors

join.after(copy_a, copy_b)

This is useful when a later activity should wait for several parallel branches.

Nested scopes matter

Control-flow activities such as IfCondition, ForEach, Switch, and Until contain nested activity scopes. Validation prevents cross-scope dependencies that Fabric would not accept.

Validation catches graph mistakes

Before serialization, the pipeline graph is validated for:

  • duplicate activity names
  • unknown dependency targets
  • cross-scope dependencies
  • dependency cycles

That lets you catch orchestration mistakes in code review or CI rather than in Fabric after deployment.

examples/etl_with_lock_pattern.py shows cleanup wiring with .then(..., on="Completed"). examples/parameterized_elt_controller.py shows nested ForEach / Switch scopes.