Выполнение действий программно

В редких случаях может понадобиться выполнить действия сервера программно. Это позволяет заменить реализации UI процедур по умолчанию кастомизированными процедурами и/или автоответами.

Чтобы выполнить действие программно:

  • Получите объект Context действия из ContextManager
  • Вызовите ActionsUtils.initAction() статический метод, предоставляющий имя Context и действия. ActionExecutionMode должна быть выставлена либо на NORMAL, либо на HEADLESS, если UI процедуры фактически не выполняются человеком-оператором. initAction() вернет ActionIdentifier, которое позднее будет использоваться для степпинга действия.
  • Вызовите ActionsUtils.stepAction() в цикле, пока не вернет null. Каждая итерация stepAction() будет возвращать определенную UI процедуру для ручного выполнения как GenericActionCommand. Каждый вызов, начиная со второго, должен включать ваш сформированный вручную запрос GenericActionResponse к ранее полученному GenericActionCommand.
  • Обработайте каждую GenericActionCommand согласно ее типу, параметрам и заголовку.

Каждое событие запускается как отдельный поток SberMobile Server. Если по какой-то причине, вы прекратите вызывать stepAction() до того, как вернется null, поток действия на стороне сервера зациклится до прекращения соединения (или навсегда, если действие выполнено вручную изнутри плагина сервера). Действие сервера невозможно остановить, пока оно не дойдет до логического конца.