feat: add BPMN inspection and workflow progress visuals
This commit is contained in:
@@ -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.
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user