Skip to content

Интеграция с внешними сервисами в BPM

В процессе скоринга часто требуется обращение к внешним сервисам: проверка в бюро кредитных историй, антифрод-системы, верификация данных и другие проверки. BPM предоставляет два основных механизма для такой интеграции.

Способы интеграции

СпособКогда использовать
External Worker TaskПростые проверки, polling-модель, не критична задержка
RPC через KafkaДолгие операции, асинхронная обработка

1. External Worker Task

Что это

External Worker — это механизм, при котором внешний сервис сам "забирает" задачи из BPM, выполняет их и возвращает результат. Это похоже на очередь задач: BPMN-процесс создаёт задачу с определённым topic, а ваш сервис периодически опрашивает платформу на наличие новых задач.

Как это работает

Как использовать в BPMN-схеме

В BPMN-схеме используется Service Task с типом "external worker":

  1. Добавьте Service Task на схему
  2. Укажите тип задачи: External Worker
  3. Задайте Topic — уникальный идентификатор для вашего сервиса

Формат Topic

Рекомендуемый формат: {project_code}.{action}.{version}

ПримерОписание
myproject.credit-check.v1Проверка кредитной истории, версия 1
myproject.fraud-detection.v2Антифрод проверка, версия 2
lending.document-verify.v1Верификация документов

Передача данных

  • Входные данные: переменные процесса автоматически передаются в задачу
  • Выходные данные: результат работы сервиса сохраняется в переменные процесса

Типы результатов

После выполнения задачи сервис должен вернуть один из трёх типов результата:

РезультатКогда использоватьЧто происходит
successЗадача выполнена успешноПроцесс продолжается по основному пути
bpmnErrorБизнес-ошибка (например, клиент не прошёл проверку)Процесс переходит на обработчик ошибки (Error Boundary Event)
failТехническая ошибка (сервис недоступен, таймаут)Задача будет повторена согласно настройкам retry

success — используйте, когда проверка прошла и есть результат (положительный или отрицательный). Например: "клиент найден в базе БКИ, кредитный рейтинг 750".

bpmnError — используйте для бизнес-исключений, которые должны изменить ход процесса. Например: "клиент в чёрном списке" — процесс может перейти на ветку отказа. При отправке bpmnError указывается код ошибки, который можно обработать на схеме:

  • Error Boundary Event без кода — ловит все bpmnError
  • Error Boundary Event с кодом — ловит только ошибки с указанным кодом (например, BLACKLIST, FRAUD_DETECTED)

fail — используйте при технических сбоях, когда задачу нужно повторить. Например: "сервис БКИ недоступен" — система повторит запрос позже.

Когда использовать

  • Простые и быстрые проверки (до нескольких секунд)
  • Сервис может работать в режиме polling
  • Допустима небольшая задержка между созданием задачи и её получением

2. Асинхронное взаимодействие через Kafka

Что это

RPC через Kafka — это паттерн Request/Reply, где BPMN-процесс отправляет сообщение в Kafka-топик и ожидает ответа в другом топике. Этот подход подходит для долгих операций и асинхронной обработки.

Как это работает

Как использовать в BPMN-схеме

Для реализации RPC через Kafka в BPMN используются два элемента:

  1. Send Task — для отправки запроса в Kafka
  2. Message Catch Event — для ожидания ответа

Correlation ID

Ключевой момент — связь запроса и ответа через Correlation ID. Это уникальный идентификатор (обычно ID экземпляра процесса), который:

  • Отправляется вместе с запросом
  • Возвращается вместе с ответом
  • Позволяет BPM понять, какому процессу адресован ответ

Когда использовать

  • Долгие операции (минуты, часы)
  • Внешний сервис работает асинхронно
  • Высокая нагрузка и требования к масштабируемости

Сравнение подходов

КритерийExternal WorkerKafka RPC
Сложность использованияНизкаяСредняя
Модель взаимодействияPollingPub/Sub
ЗадержкаЗависит от интервала pollingМинимальная
Подходит дляПростые быстрые проверкиДолгие операции, критичные интеграции
МасштабируемостьСредняяВысокая

Рекомендации по выбору

Используйте External Worker, если:

  • Проверка выполняется быстро (секунды)
  • Логика простая и синхронная
  • Хотите минимум настройки

Используйте Kafka RPC, если:

  • Операция может занять много времени
  • Сервис должен обрабатывать большой поток запросов
  • Нужна асинхронная архитектура