Идея на подумать:
1. Добавьте Кложур в Ваш проект.
2. Это даст возможность делать предметно-ориентированные языки с минимальными затратами.
Пример:
(def allowed-wizard-transitions
[
[:from-page "page1" :to-page "page2" :if-properties ["property1" "property2"] :are-valid]
[:from-page "page2" :to-page "page1" :unconditionally]
])
3. Далее на Джаве из этого описания делаете 2 вещи:
3.1. Текстовый файл для GraphViz/dot, из которого можно легко сделать диаграмму, которую можно показать продакт-оунеру.
3.2. Джава-код, который на входе получает
3.2.1. текущую страницу,
3.2.2. страницу, куда хочет перейти пользователь и
3.2.3. состояние (какие данные куда введены).
Возврщает булевое значение -- возможен переход или нет. Или возвращает перечень идентификаторов страниц, на которые пользователь может вернуться из нынешнего состояния.
4. Если надо изенить варианты переходов, меняете текст из п. 2, перегенерируете диаграмму и (при необходимости) Джава-код.
Примечание: Кложур здесь приведен исключительно потому, что я нечто подобное делал для заказчика. В других языках (Котлин, Груви) скорее всего можно сделать что-то подобное.