Внешние запросы

Запуск процесса при поступлении внешнего HTTP-запроса на определенный адрес.

Создание адреса для приема внешних запросов

  1. В отделе «Управление» в каталоге «Внешние запросы» добавьте новую запись (точку приема запросов, по которой будет запускаться процесс).

  2. Укажите название. Например, ту задачу, которую выполняет процесс.

  3. Укажите уникальный «URL-идентификатор». Он определяет адрес приема запросов. Полный адрес, по которому КОСКО BPM будет слушать запросы, формируется из этого идентификатора по правилу:

    { Адрес сервера }/api/webrequest/{ URL-идентификатор }

  4. В поле «Выполнить» выберите или создайте новый сценарий.

Синхронный и асинхронный запуск процесса

С ответом внешней системе. Если некая внешняя система или сайт отправит любой HTTP-запрос на указанный адрес, то КОСКО BPM запустит процесс по назначенному сценарию, передав ему параметры запроса через переменные. Выходные переменные процесса будут возвращены в качестве ответа внешней системе. Пока выполняется процесс, система будет держать HTTP-соединение с внешней системой, чтобы вернуть ей ответ. Ограничение на длительность исполнения процесса — 60 секунд. По истечении таймаута система разрывает HTTP-соединение с инициатором запроса и принудительно прекращает сценарий.

Без ответа внешней системе. Для запуска долгих процессов, ответ от которых не требуется возвращать внешней системе, процессы можно запускать асинхронно. В этом случае внешней системе будет сразу передан пустой ответ и соединение будет закрыто, а запущенный процесс будет выполняться до его завершения. Результаты процесса не будут возвращены внешней системе, но будут сохранены в каталоге «Процессы». Для асинхронного запуска процессов укажите параметр async=true в GET-параметрах запроса внешней системы к КОСКО BPM. Пример:

{ Адрес сервера }/api/webrequest/{ URL-идентификатор }/?async=true

Параметры события

Процесс запускается с передачей всех параметров внешнего HTTP-запроса.

  • script (объект) — параметры запущенного сценария.

    • id (строка) — идентификатор сценария в каталоге «Сценарии».

  • user (объект) — сотрудник, вызвавший событие.

    • id (строка) — идентификатор сотрудника или null, если сотрудник не определен (событие вызвано системой).

Дополнительные параметры события

Процесс запускается с передачей всех параметров внешнего HTTP-запроса:

  • url (строка) — полный URL-адрес внешнего запроса и всех параметров.

  • method (строка) — HTTP-метод запроса, например: GET, POST, PATCH, PUT, HEAD.

  • headers (объект) — коллекция HTTP-заголовков запроса. Ключи объекта — названия заголовков.

  • cookies (объект) — коллекция куков запроса. Ключи объекта — идентификаторы куки-переменных.

  • query (объект) — коллекция GET-параметров запроса (параметры, переданные в URL после знака ?). Например, для запроса {адрес}?sort=id&limit=10 объект query будет { sort: "id", limit: "10" }.

  • body (объект) — содержимое тела запроса, например POST-параметры. Пример обращения к POST-параметрам внутри сценария: body.paramname, body.email и т.д.

Синхронный запрос

Процессы, запущенные синхронно (по умолчанию), возвращают ответ запрашивающей системе в том же соединении. Таймаут на исполнение синхронных процессов — 60 секунд.

Чтобы вернуть значения как результат процесса, нужно задать переменные в сценарии до компонента «Конец процесса», например с помощью компонента «Назначение переменных». Система ожидает возврата от сценария следующих переменных:

  • $status (число) — код HTTP-ответа. Например, 200 — успех.

  • $headers (объект) — коллекция HTTP-заголовков ответа на запрос. Ключи объекта — названия заголовков.

  • $body (объект/строка) — тело возвращаемого ответа.

Асинхронный запрос

Процессы, запущенные асинхронно (с GET-параметром async=true), не ожидают результат.

Кроссдоменные запросы (CORS)

Если вы запускаете процесс AJAX-запросом с сайта, то браузер заблокирует такой запрос по политике безопасности кросс-доменных запросов (CORS). Чтобы решить эту проблему, процесс должен вернуть HTTP-заголовок «Access-Control-Allow-Origin».