Настройка вызова

Blitz REST API Server позволяет настроить вызовы внешних сервисов (action), исполнение которой обусловлено действием по модификации данных.

Для конфигурирования вызовов внешних сервисов в метаданные, описывающие объект, следует добавить дополнительный атрибут – actions. Он представляет собой набор действий, вызываемых при модификации записей данного типа. Каждое действие описывается параметрами:

  • протокол, по которому будет вызван внешний сервис (protocol). В настоящее время поддерживается только значение REST;
  • метод (method) – метод, при совершении которого над объектом будет вызвано действие. Возможны значения:

    • create – создание объекта;
    • remove – удаление объекта;
    • update – изменение объекта.

Например, метод create означает, что если запись данного объекта была создана, то будет вызвано действие;

  • аргументы (args) – массив, элементами которого являются адреса (URL) внешнего сервиса, вызываемые при изменении объекта;
  • признак вызова действия, если изменение совершено над зависимым объектом (activeIfNotRoot). Например, действие сконфигурировано для адресов. Имеется организация и зависимый элемент – ее адрес. При изменении адреса в составе организации действие будет выполнено при activeIfNotRoot=true, и не выполнено – при activeIfNotRoot=false.

Пример конфигурирования действия:

    "actions": [
        {
            "protocol": "REST",
            "method": "create",
            "args": ["http://localhost:2000/create/contact"],
            "activeIfNotRoot": true
        },
        {
            "protocol": "REST",
            "method": "remove",
            "args": ["http://localhost:2000/remove/contact"],
            "activeIfNotRoot": true
        },
        {
            "protocol": "REST",
            "method": "update",
            "args": ["http://localhost:2000/update/contact"],
            "activeIfNotRoot": true
        }        
    ],

Параметры вызова внешних сервисов

При наступлении определенных в конфигурации условий происходит вызов сервиса, указанного в атрибуте «аргументы» (args) методом POST. В качестве тела запроса передается json, содержаший следующие атрибуты:

  • events – перечень событий в виде массива объектов. Если происходит изменение или добавление объектов, то будет передан массив с данными измененных или добавленных объектов. Если происходит удаление объектов, то будет передан перечень идентификаторов удаляемых записей;
  • status – статус операции, может принимать значения OK или FALSE. В случае поступления статуса FALSE это следует интерпретировать как попытку изменить указанный перечень объектов, однако попытка не удалась и объекты были возвращены в исходное состояние.

При недоступности внешнего сервиса Blitz REST API Server осуществляет повторный вызов сервиса. Параметры повторного вызова:

  • число попыток вызова – 3;
  • время между попытками – 10 секунд;
  • размер буфера – 1 МБ. Если сообщение не вместилось в буфер, оно повторно отправлено не будет.

Требования к работе внешнего сервиса

Внешний сервис должен обрабатывать сообщения от Blitz REST API Server с учетом того, что данные передаются в пакетах (chunks), определенных спецификацией HTTP.