Files
govoplan-workflow/README.md
T

3.0 KiB

govoplan-workflow

Repository type: module (platform).

govoplan-workflow owns process orchestration for GovOPlaN.

The module should execute configurable state machines and command handoffs between modules without importing their implementations. It coordinates cases, tasks, forms, files, templates, mail, appointments, payments, and records through capabilities, events, commands, and DTOs.

Workflow exposes a workflow-specific node library, a full definition editor, validation APIs, tenant-isolated definitions, and immutable graph revisions. Activation pins the exact revision that future instances will execute. It uses Core's domain-neutral definition graph contract, but applies Workflow constraints: exactly one trigger, at least one outcome, governed configuration fields, connected nodes, and permitted loops for correction and retry paths. Dataflow uses the same graph contract with its own acyclic transformation library.

The executable runtime persists revision-pinned instances, append-only transition evidence, resumable human handoffs, retries, cancellation, and stable external output references. Dataflow nodes enqueue work through Dataflow's lifecycle capability; Workflow never imports Dataflow internals. Core's periodic worker reconciles linked runs after re-resolving the stored automation principal, while the operator surface exposes progress, review actions, evidence references, and direct navigation to Dataflow results.

Definitions can be complete flows or non-runnable templates at system, tenant, group, or user scope. Policy resolves whether a definition can be viewed, edited, started, reused, derived, or automated and returns the ordered source path shown in the editor. Derivation copies an immutable graph revision and records its hash, node-library version, source scope, actor, Policy decision, and effective ancestor limits.

BPMN 2.0 is Workflow's canonical graph language. The existing native graph editor models BPMN events, activities, gateways, data, collaborations, and artifacts directly; there is no separate modeler or browser-side BPMN library. XML import projects BPMN semantics and DI geometry into that graph, while XML export renders a deterministic interchange document from the graph. Immutable revisions pin both representations and the native profile version. Unsupported runtime semantics remain editable and portable, but activation fails closed.

The start-node library distinguishes explicit user, API, scheduled, event, and parent-workflow starts. Manual starts and Dataflow/human handoffs are operational. The other trigger and generic capability nodes remain explicit definition contracts until their event/schedule dispatchers and versioned operation providers are implemented.

See docs/CONCEPT.md for the complete module concept. See docs/BPMN_INTEROPERABILITY.md for the notation, conformance, and adapter boundary.