Keep a step's assignment rows and their notify settings when a canvas modeler saves it

Fixes #3630243.

A canvas modeler (BPMN.io) edits a step's users and roles as one flat field each. On save, Assignments::getValueFromFlatValues() rebuilt a single row per audience with the settings of the first row it replaced, so a step offered to Alice (notified) and to Bob (not notified) came back as one row notifying both, after a save that changed nothing.

  • Assignments::getValueFromFlatValues() now reconciles the field with the rows: each row keeps its place and its settings and loses only the names the field no longer lists; a row left empty is dropped; an added name joins the first standing row of its audience, or a new row with the settings of the first row the field emptied.
  • docs/concepts.md says so.

Tests (AssignmentProjectionTest): testCanvasSaveKeepsEachRowOfAnAudience fails on 1.x (the two rows fold into one); testCanvasSaveMovesOnlyTheNamesThatChanged and testCanvasSaveReplacingEveryNameKeepsTheFirstRowSettings each fail on a mutation of the branch they cover.

AI-Generated: Yes (Claude Code was used to help write the fix, its tests and this description. I reviewed them, and the new test was confirmed to fail without the fix and to pass with it.)

Merge request reports

Loading
Loading