Input dialog parameter для Form type = Custom

Добрый день.

Возможно ли доработать редактор процессов для того, чтобы для Custom Form type в User Task была возможность указывать не только Form params, но и/или Input dialog parameters? Цель - словить их в ProcessFormContext.
Ну т.е. сейчас проблематика следующая: я могу с помощью Form params связать переменную процесса с параметром формы и даже, наверное смогу вытащить “тип параметра формы” из типа переменной, но указать обязательность заполнения или заголовок уже не получится. А тут вроде бы и подходящая структура уже есть…

1 симпатия

Добрый день!
А какую задачу вы решаете формой с типом custom? Делаете свой аналог Input dialog формы, но с какой-то своей особенной отрисовкой компонентов?

Максим, добрый день.
Что я делаю:

  1. Открываю форму редактирования объекта, который “положили” в процесс (условно - согласуемый документ)
  2. Генерирую в этой форме кнопки-ауткамы
  3. Хочу дать возможность внести комментарий. Для этого при нажатии на кнопку-ауткам, открываю диалоговое окно, в котором и хотел бы сгенерировать поля - в частности поле для ввода комментария.

Попробую объяснить, правильно ли я понял ваш случай. Поправьте, если не так. Т.е. вы открываете стандартный редактор сущности, смотрите есть ли процессная таска, связанная с данной сущностью, если есть, читаете информацию об этой таске и рисуете кнопки для её ауткамов. Потом, при нажатии на любой из ауткамов вы своим кастомным кодом отрисовываете форму. И наполнение этой отрисовываемой формы (поля, обязательность) вы хотите конфигурировать в модели процесса? Если так, то вы, наверное, можете попробовать для UserTask в модели процесса тип формы сделать InputDialog, а когда будете обрабатывать событие по кнопке-ауткаму, то с помощью BprocFormService получить мета-информацию о форме (список полей input-диалога) и отрисовать форму как вам нужно.

1 симпатия

Да, Максим, все верно.

Тогда я теряю возможность открывать из списка задач форму редактирования сущности (будет открыт тот самый inputDialog), что меня не устраивает.

Тогда я теряю возможность открывать из списка задач форму редактирования сущности

Так всё-таки процессная форма у вас - это редактор сущности (т.е. CUBA Screen)? И ваша задача - из этого скрина (который является процессной формой для задачи) открывать по кнопкам для ауткамов другие диалоги, и эти другие диалоги (для ввода комментариев и т.п.) вы тоже хотите динамически конфигурировать в свойствах юзер-таски?

Верно.

Верно. Это задача максимум, конечно, и она явно не предполагалась, как типовой сценарий использования.
Мне хотелось бы добиться поведения, как в устаревшем аддоне с фрагментом, который располагался на форме и при выполнении задачи запрашивал комментарий. Здесь я правда использовать фрагмент не планирую, а буду использовать суперкласс, который и возьмет на себя генерацию кнопок для ауткамов и модального диалога для ввода комментария. Просто хотелось бы сделать все менее хардкодно, чтобы конфигурацию этого диалога с запросом комментария находилась в описании процесса.

Приходит в голову пока только такое решение: использовать форму с типом CUBA Screen. У формы определить form param “outcomes_config” и в моделере в поле для значения строкового параметра формы вводить форматированный текст, который будет содержать конфигурацию диалогов для ауткамов. Это может быть json или какой-то ваш произвольный формат. В контроллере формы парсите этот json и рисуете кнопки с нужными диалогами. Вариант, мягко говоря, не самый удобный и красивый, но ничего лучшего сходу не придумывается.

Максим, похожим образом я сейчас и делаю. Мой вопрос можно ли добавить в редактор Input dialog parameters и пробрасывать их в FormData в список FormField для Form type = Custom. Это ломать ничего не должно в существующих подходах, а возможности для расширения сильно увеличит.

В вашем случае вам это как-то поможет, но случай у вас довольно специфичный. В общем случае будет трудно объяснить кому-либо в т.ч. описать в документации зачем для формы с типом custom задаются input dialog parameters.