Skip to main content

Module workflow

Module workflow 

Source
Expand description

How a board is worked (docs/architecture/orchestrator.md §2.9): the whole dispatch behaviour as data, a statechart in the manner of Amazon States Language and XState. A card is always in one of the workflow’s statuses; a status may run an actor for as long as the card is in it (XState’s invoke, ASL’s Task); events move cards between statuses through transitions that say who may send them, what must hold, and what happens (Jira’s conditions, validators and post functions); the dispatcher’s scheduling is data too.

Nothing here is a mode or a switch: a behaviour exists because a transition, an action or an expression says so. Names (statuses, events, roles, slots, actions) are open strings; conditions, targets, limits and durations are expressions over the card and the workflow’s params, evaluated by the board engine. Hermes’s dispatcher is one instance of this model, hermes_instance, used by a home that declares none.

Structs§

Action
One step a transition, an entry or an exit takes: a primitive the engine provides, named, with its arguments (notify: {roles: [creator], template: …}). Written as a one-key map.
Delayed
A transition taken once a duration has passed in the status (XState’s after, ASL’s Wait).
Dispatch
The dispatcher: when it runs, what it may start, in what order, under which caps.
Expr
An expression over the card, its relations, the event and params (a small CEL-like language: literals, card.*, event.*, params.*, comparisons, &&/||/!, in, and the engine’s functions such as parents.all(p, …)). Written as a string; a bare number, boolean or null is the literal it spells.
Limit
A cap on what the dispatcher starts: cards counted per group, at most max in each.
Reserve
Slots of a limit held for some cards.
Run
What runs while a card is in a status: an actor of a role’s lane in a named session slot of the card.
Status
One status a card can be in.
Transition
A move from the card’s status on an event (or on none: always, after).
Validation
A validator: the expression must hold, else the event is refused with the message.
Workflow
A board’s workflow.

Constants§

HERMES_WORKFLOW
The built-in Hermes workflow’s source.

Functions§

hermes_instance
Hermes’s dispatcher, transcribed as data (hermes_cli/kanban_db.py): the workflow a home runs when it declares none.