Concepts
The mental model behind goal-driven orchestration: how Steps connect through Attributes, how a Flow advances through state, the lifecycle of each Step, and the event-sourced architecture that keeps it all deterministic.
Terminology
- Side effect: A change outside Flow state, such as charging a card, sending an email, or updating a database.
- Idempotency / idempotent: A request is idempotent when repeating it does not repeat its side effects. Use the receipt token as the idempotency key for external work.
- Predicate: A condition script that decides whether a Step should run.
- Memoization / memoizable: Reusing a cached successful result for the same inputs instead of running the Step again.
- Aggregate: The event stream for one resource, such as the catalog, the cluster, or one Flow.
- Projection: Current state produced by applying an aggregate’s events in order.
- Upstream / downstream: An upstream Step produces a value; a downstream Step consumes that value later in the Flow.
- Fan-out / fan-in: Fan-out creates multiple Work Items from input values; fan-in combines results for later work.
- Backoff: The delay before another retry attempt.
- Terminal: A Flow outcome is decided (
completedorfailed), so no new Steps start, although previously started work may still produce side effects. - Deactivated: A terminal Flow with no pending, active, or compensating work remaining; no more side effects can be produced by that Flow.
How the engine turns a set of Goal Steps into an execution plan, runs steps in parallel where dependencies allow, and advances the Flow only on committed state so retries are deterministic.
Steps are the units of work, sync HTTP, async HTTP, in-engine scripts, or sub-flows. Each declares its inputs, outputs, and lifecycle, and the engine wires them together by attribute name.
A Flow is one execution run driven by a set of Goal Steps. Covers the lifecycle (active, terminal, deactivated), how state advances, and how Flows compose through sub-flow Steps.
Attributes are how Steps share data. Covers the five roles (required, optional, const, meta, output), the five collection policies (first, last, some, all, none), and Collection Deadlines for optional inputs.
An engine that records every state change and replicates it across a Raft cluster. Two stores (engine and flow), one execution model, and plans that do not change while they run.
All state in Argyll lives in event logs that only grow. Each aggregate records changes for one resource, and each projection is current state produced by applying those events in order. Includes the full event-type catalog.