Skip to content

BPMN 2.0 XML (de)serialization plugin on top of the construct mapping (ADR-0031 follow-up) #1504

Description

@os-zhuang

Follow-up to ADR-0031 / #1479 (now complete).

The model-level BPMN ⇄ structured-construct mapping shipped in #1500 (@objectstack/specautomation/bpmn-mapping.ts): exportConstructsToBpmn / importBpmnToConstructs translate between the structured constructs (loop/parallel/try_catch) and the BPMN gateway/boundary/multi-instance vocabulary on the flow model, round-trippable via the osConstruct extension marker.

What's still missing is the wire format: actual BPMN 2.0 XML parse/emit, so flows round-trip with external BPM tools (Camunda, Activiti, jBPM, …).

Scope

  • A plugin (per automation/bpmn-interop.zod.ts, which already defines BpmnImportOptions / BpmnExportOptions / BpmnInteropResult / BUILT_IN_BPMN_MAPPINGS) that:
    • parses BPMN 2.0 XML → flat flow graph, then calls importBpmnToConstructs to fold gateways/boundary/multi-instance into constructs;
    • takes a flow, calls exportConstructsToBpmn, then emits BPMN 2.0 XML (incl. DI layout from node positions, and extensionElements carrying the osConstruct marker for lossless round-trip).
  • Honour BpmnImportOptions.unmappedStrategy and surface BpmnDiagnostics.

Notes

  • Needs an XML parser/serializer dependency — keep it in the plugin, not core.
  • ADR-0031 marks XML interop "Priority: Low", so this is deliberately deferred from the core roadmap.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions