Issue #3613014: Build composite (All/Any) flow conditions in the form modeler

Composite flow conditions (all / any) could be selected on a sequence flow but not populated: CompositeConditionBase::buildConfigurationForm() was empty, so the child tree could only be authored by hand-editing config. The engine and config schema already supported the nested tree; only the editor (and a lossless BPMN.io roundtrip) were missing.

This adds a recursive sub-condition editor in the form modeler (orchestra_cm) only, and keeps the tree intact across a BPMN.io save.

Form modeler editor

  • ConditionTreeBuilder: a self-contained helper that seeds a keyed working tree from the stored conditions, adds / removes / re-plugs children by path, harvests submitted settings back into the tree, renders the recursive editor, and converts the tree back to the stored list.
  • OrchestraCmForm: renders the editor in place of the raw field for composite conditions, keeps the working tree in form state across the add / remove / re-plug Ajax, and assembles the tree into the flow condition on save. Nests to any depth.

Lossless BPMN.io roundtrip

  • CompositeConditionBase carries its children as a single JSON conditions field (portable across the flat camunda:field serializer) and declares conditions in defaultConfiguration().
  • Orchestra::ownerComponentDefaultConfig() returns the condition plugin's defaults for LINK components, so bpmn_io rehydrates the conditions field to an array on import. A composite built in the form modeler survives a later BPMN.io save unchanged. BPMN.io gets no editor, only preservation.

Tests

  • ModelOwnerTest::testCompositeConditionRoundTrip() (kernel): a nested any(all(comparison, count), comparison) survives usedComponents() then addComponent().
  • ConditionTreeBuilderTest (kernel): the tree operations (working/config roundtrip, add, nest, remove, re-plug, harvest).
  • CompositeConditionTest (FunctionalJavascript): builds, nests, fills, saves and removes children in a real browser and asserts the persisted tree.

Docs (docs/modeling.md) and French translations included.

Merge request reports

Loading