# Compose platform → services → workflows Prerequisites: [addressing](../beginner/addresses.md), [dynamic linking](dynamic-linking.md), and [SpellContract](late-binding.md). Run saved Intermediate lesson 26 from a checkout, or unpack the complete collection so its `_dynamic_world.py` helper stays beside the script. The application has three categories with separate books and owners: | Category | Owns | Needs from the previous category | | --- | --- | --- | | `platform` | `ConfigStore` | Nothing | | `services` | `ReportService` | `ConfigContract` named `platform` | | `workflows` | `ReportWorkflow` | `ReportingContract` named `reporting` | For the first edge, conjure the provider and consumer, link, pull the provider's spell, and meld the service. Repeat the same five steps for the next edge using that completed service as the provider's product. ## Read the result The script asserts that `workflow.service is service`: the resolved service crosses the second boundary. Its `run()` result combines the workflow, report, and the region value returned by the platform store. Inspect all three class definitions in the complete linked example alongside the core operations below. When applying this pattern, give each root an application owner and end those owned runtimes explicitly. Keep the [scoped-cleanup pattern](scopes.md) beside the composition pattern; construction and shutdown are both part of your design. ## The workflow in code These are the core steps from the saved example. Use its complete linked script for all class definitions and setup. ```{literalinclude} ../downloads/02_intermediate/26_conduit_categories_as_factories.py :language: python :pyobject: main :linenos: ``` ## Runnable examples - [Conduit categories as factories](../examples/intermediate/26-conduit-categories-as-factories.md) — Intermediate 26 - [Late binding with SpellContract: runnable example](../examples/intermediate/36-late-binding-with-spellcontract.md) — Intermediate 36 - [Clusters unique per cluster](../examples/intermediate/25-clusters-unique-per-cluster.md) — Intermediate 25 [All intermediate examples](../examples/intermediate/index.md) · [Level contents](index.md) · [Full contents](../contents.md) [Canonical page source](https://github.com/Synaptic724/melder/blob/1211e838099a342c9dde48f064b1e772b6060e13/docs/intermediate/connected-subsystems.md)