1. Добавление  диалогов или информационных сообщений  при  сохранении НР-объекта.

    1. Если в сценарии сохранения объекта требуется добавить диалог(и), то нужно разработать класс-стратегию StrategyRESTUpdate.

    2.  В стратегии в result нужно передать ресурс диалога  через метод setDialog. В этом случае клиент отобразит диалог и сохранения объекта не произойдет. 

    3. Схема диалога должна наследовать со схемы DialogForSave.

    4. При нажатии на кнопку submit диалога клиент повторно отправляет запрос на сохранение объекта. В этом случае в метод стратегии внутри ресурса сохраняемого объекта в элементе $clientContext придет  ресурс диалога с клиента с введенными пользователем данными.

    5. В схеме сохраняемого объекта должно быть предусмотрено свойство с фиксированным  именем  $clientContext (см. пример схема SOEmployee). Схема  $clientContext соответствовать структуре ClientContext (см. подробнее  Передача параметров операции) в части задания элемента data.resource. Схема диалога  задается в data.resource.

    6.  Каждый раз по кнопке submit диалога клиент будет возвращать внутри ресурса сохраняемого объекта в элементе $clientContext структуру, в поле data.resource которой будет ресурс диалога с клиента. 

    7. Далее при повторных попытках сохранить объект из  диалога по кнопке submit,  в ресурс диалога можно передавать порядковый номер диалога (если диалогов более одного) для последующей обработки в стратегии. 

    8. Если в диалог не передать кнопку submit, то пользователь не сможет вызвать операцию сохранения повторно. По кнопке cancel диалог закрывается.
      См. пример в объекте "Справочник должностей". Схема PositionClassifier. В схеме PositionClassifier св. $clientContext. Через св. $clientContext идет обмен ресурсом диалога между клиентом и сервером при сохранении. См. обработчик сохранения UpdateBeforePositionClassifierRESTStrategy.

  2. Правило разработки класса-стратегии  получения черновика объекта.

    1. Для разработки класса-стратегии получения черновика используется интерфейс StrategyCreateDraft .
    2. Метод класса-стратегия должен вернуть в объект события результат CreateFormActionResult запроса на получение черновика объекта. Это может быть сам черновик или  ресурс диалога.  
    3. Схема  диалога должна удовлетворять одному из требований:
      1. Схема диалога должна наследовать со схемы Dialog.
      2. В ресурсе диалога должен быть реквизит  mode со значением «dialog». В схеме диалога должен быть предусмотрен реквизит mode с типом String.
    4. Данные диалога передаются с клиента на сервер по кнопке  submit (см. Термины). Ресурс диалога приходит в параметре params объекта события TunableObjectCreateDraftEvent (см. п.7 Передача клиентского контекста).  Таким образом, можно добавить интерактив из нескольких диалогов в клиентский сценарий получения черновика объекта.
    5. По кнопке cancel диалога сценарий получения черновика прекращается.
Статус

КомментарийДополнительный комментарий