Skip to content

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

@os-zhuang

Description

@os-zhuang

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

The model-level BPMN ⇄ structured-construct mapping shipped in #1500 (@objectstack/spec automation/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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions