Команды формы
В новой концепции почти все действия клиента контролируется апи.
Это реализовано с помощью команд.
После валидации формы клиенту будет отправлен объект BoiFormResultUpdate, который содержит различные виды команд.
Есть следующие виды команд:
BoiFormCommandUpdate
BoiFieldFormCommandUpdate
BoiFieldFormCommandUpdateSometimes
BoiFormCommandUpdate
Данный тип команды группирует в себе все команды, которые относятся к самой форме.
Пример: показ кнопок, показ уведомления по форме, закрытие формы.
BoiFieldFormCommandUpdate
Данные тип команды группирует в себе все команды, которые относятся к полям формы.
Пример: обновление значения поля, показ ошибок у поля.
BoiFieldFormCommandUpdateSometimes
Данные тип команды группирует в себе все команды, которые относятся к метаданным полей формы.
Пример: скрытие поля, показ поля, изменение объязательности или свойства "Только для чтения".
Разница между веб командами и мобильными командами
Из за того, что веб версия формы и мобильная версия формы архитектурно отличаются, команды для них тоже отличаются. Однако основая логика у них одинаковая, отличие - в path (путь).
Поэтому было принято решение конвертировать веб команды в мобильные команды вместо написания DRY кода.
Но разработчику не надо во всех местах конвертировать команды - достаточно над методом, который возвращает BoiFormResultUpdate написать аннотацию @CommandReturnConvert.
Есть одно ограничение: метод, надо которым пишется данная аннотация, в виде параметра должен принимать AuthUserInfo в любом порядке.
Данная логика реализована с помощью AOP.
Сама логика конвертации находится в InstanceCommandConvertRegister.convertToMobileCommands(), если добавится новая команда и команда требует другого подхода для мобильной версий, то надо именно сюда написать логику