Если в сценарии сохранения объекта требуется добавить диалог(и), то нужно разработать класс-стратегию StrategyRESTUpdate.
В стратегии в result нужно передать ресурс диалога через метод setDialog. В этом случае клиент отобразит диалог и сохранения объекта не произойдет.
Схема диалога должна наследовать со схемы DialogForSave.
При нажатии на кнопку submit диалога клиент повторно отправляет запрос на сохранение объекта. В этом случае в метод стратегии внутри ресурса сохраняемого объекта в элементе $clientContext придет ресурс диалога с клиента с введенными пользователем данными.
В схеме сохраняемого объекта должно быть предусмотрено свойство с фиксированным именем $clientContext (см. пример схема SOEmployee). Схема $clientContext соответствовать структуре ClientContext (см. подробнее Передача параметров операции) в части задания элемента data.resource. Схема диалога задается в data.resource.
Каждый раз по кнопке submit диалога клиент будет возвращать внутри ресурса сохраняемого объекта в элементе $clientContext структуру, в поле data.resource которой будет ресурс диалога с клиента.
Далее при повторных попытках сохранить объект из диалога по кнопке submit, в ресурс диалога можно передавать порядковый номер диалога (если диалогов более одного) для последующей обработки в стратегии.
Если в диалог не передать кнопку submit, то пользователь не сможет вызвать операцию сохранения повторно. По кнопке cancel диалог закрывается.
См. пример в объекте "Справочник должностей". Схема PositionClassifier. В схеме PositionClassifier св. $clientContext. Через св. $clientContext идет обмен ресурсом диалога между клиентом и сервером при сохранении. См. обработчик сохранения UpdateBeforePositionClassifierRESTStrategy.
|