feat: add BPMN inspection and workflow progress visuals

This commit is contained in:
2026-07-30 17:42:10 +02:00
parent a6e0e89829
commit c505e81006
9 changed files with 736 additions and 12 deletions
+37
View File
@@ -0,0 +1,37 @@
# BPMN Interoperability
GovOPlaN distinguishes BPMN notation and XML interchange from executable
workflow semantics.
## Current Contract
- `GET /api/v1/workflow/bpmn/profile` publishes the exact native support
profile.
- `POST /api/v1/workflow/bpmn/inspect` safely parses bounded BPMN 2.0 XML,
inventories every BPMN model element, detects duplicate IDs and selected
dangling references, and classifies elements as interchange-only, natively
mappable, or natively executable.
- XML entities, DTD-based expansion, oversized documents, and malformed roots
are rejected.
- The native GovOPlaN graph remains the authoritative executable definition.
Inspection is not XML Schema validation and does not claim that every BPMN
semantic construct can be executed. A future `bpmn-js`/`bpmn-moddle` adapter
can provide complete visual notation and XML round-tripping without forcing
unsupported elements into the native runner.
## Execution Boundary
Adding a BPMN shape is not equivalent to implementing its token semantics,
event subscriptions, compensation, transactions, choreography, or conformance
behavior. Each executable mapping therefore needs:
1. an explicit native semantic mapping;
2. validation rules and lifecycle behavior;
3. resumability and idempotency tests;
4. migration and round-trip fixtures;
5. a declared fallback when the installed runtime cannot execute it.
Unsupported constructs remain visible and preserved by the future interchange
adapter, but activation must remain blocked until an execution adapter declares
support.
+24
View File
@@ -0,0 +1,24 @@
# Workflow Visual Model
The Campaign review flow is the reference for runtime workflow progress:
- a compact stage rail communicates order, current state, completion, warning,
failure, partial progress, and locks;
- the active handoff owns the detailed controls;
- evidence remains visible without turning every stage into a permanent card;
- unavailable stages stay visibly unavailable while non-blocking optional
stages do not interrupt the connector state.
Workflow now applies that language to instance progress without importing
Campaign code. Once the state vocabulary has stabilized, the rail should move
to Core as a generic process-stage component and Campaign should consume it.
Navigation has three distinct layers:
1. the platform siderail selects a module or focused View;
2. the module workspace selects an object or definition;
3. the workflow stage rail describes progress inside that object.
A focused View or active Workflow may suppress unrelated platform and module
navigation, but must always provide a visible escape back to the normal View.
Modules should not add another persistent navigation tier for workflow stages.