Верификация и маркировка запроса
Бизнес-сценарий: необходимо обработать запрос по параметру «идентификатор пользователя», запросить профиль пользователя, получить информацию о рейтинге и провести проверку входящего запроса на наличие совпадений с заданным значением. В случае обнаружения совпадения рейтинг понижается на 0,1 и запись маркируется как подозрительная. Если совпадений не найдено, то в ответе будет информация о том, что сообщений не найдено.
В случае обнаружения подозрительного контента в результате обработки запроса будет создаваться запись в таблице в базе данных, в которую будут сохраняться идентификатор клиента, идентификатор операции, обновленный рейтинг, причина обновления рейтинга, текст запроса.
Для проверки сценария будет использоваться Postman.
Предварительное условие: в приложении должно быть создано и доступно в интерфейсе подключение к БД, куда будут отправляться SQL запросы.
Шаг 1. Подготовка окружения
Для успешной работы сценария потребуется использование базы данных Postgres.
В необходимой схеме требуется создать 2 таблицы:
-
Profile – Используется для хранения профилей клиентов и корректировки рейтинга
-
Suspicious_operation – Используется для хранения подозрительных записей которые были детектированы в процессе роботы интеграционного маршрута.
Для создания таблиц можно использовать скрипты:
CREATE TABLE public.profile ( user_id varchar NULL, user_status varchar NULL,rating numeric NULL,rating_count numeric NULL);
CREATE TABLE public.suspicious_operation (user_id varchar NULL, operation_id varchar NULL, rating numeric NULL, reason varchar NULL, text_data varchar NULL);
Таблицу profile необходимо наполнить несколькими профилями клиентов.
Пример:

Шаг 2. Создайте домен
-
Откройте страницу Управление доменами и потоками.
-
Нажмите Создать над таблицей доменов/потоков, выберите опцию «Новый домен».
-
Задайте имя домена. Имя должно быть уникальным в системе. Сохраните домен.
Шаг 3. Создайте интеграционный поток
-
Нажмите Создать над таблицей доменов/потоков, выберите опцию «Новый поток».
-
Выберите созданный на предыдущем шаге домен и задайте имя потока, например «Верификация Запроса». Сохраните поток.
На экране откроется редактор потоков, в котором необходимо смоделировать интеграционный поток.
Шаг 4. Сконфигурируйте поток
При конфигурации потока выстройте цепочку блоков в рабочей области редактора потоков, как описано ниже, заполните параметры блоков, примените изменения в блоках и сохраните поток.
Чтобы найти каждый из блоков, которые надо вставить в процесс, пользуйтесь строкой поиска в палитре – набирайте начало или другой фрагмент названия блока и список блоков будет отфильтрован по введенному фрагменту.
-
Перетащите на место инициатора HTTP Trigger, который будет стартовать поток.
Заполните следующие параметры и нажмите Применить:
Path – путь, по которому обрабатывается запрос, например /api/v1/user
-
Перетащите на место блока Отправители и обработчики блок Choice, в котором будут размещены ветки для сценариев обнаружения подозрительного контента или его отсутствия.
-
После блока-инициатора HTTP Trigger вставьте блок Unmarshal, который будет преобразовывать входящие данные в Java-объекты.
-
После блока Unmarshall вставьте блок Set Property для получения тела запроса. Заполните параметры и примените изменения.
Name – название блока, например, InputReq
Language – язык, на котором написано выражение. Выберите язык simple
Expression – выражение, которое будет применено в блоке. Введите:
${body} -
После первого блока Set Property вставьте второй блок Set Property для получения идентификатора пользователя. Заполните параметры и примените изменения.
Name – название блока, например, user_id
Language – Выберите язык simple
Expression – Введите:
${body[user_id]} -
После блоков Set Property, перед блоком Choice добавьте блок SQL – основной блок, с помощью которого будет реализовано обращение в базу данных за профилем клиента и его рейтингом. Заполните параметры и примените изменения.
Query – SQL запрос в базу. Введите:
select * from profile where user_id = :#user_idConnection – выберите подключение к БД, созданное предварительно.
-
Добавьте блок Set Header в ветку When блока Choice для модификации рейтинга. Заполните параметры и примените изменения.
Name – задайте имя блока, например, NewRating
Language – выберите groovy
Expression – введите:
\body[0]['rating'].subtract(0.1 as BigDecimal) -
Добавьте блок SQL в ветку When блока Choice после блока Set Header – посредством этого блока в случае обнаружения подозрительных данных будет производиться корректировка рейтинга. Заполните параметры и примените изменения.
Query – SQL запрос в базу. Введите:
update profile p set rating = (:#NewRating) where user_id = (:#${exchangeProperty.InputReq['user_id']})Connection – выберите подключение к БД.
-
Добавьте второй блок SQL в ветку When после первого блока SQL. Этот блок предназначен для добавления новой записи в таблицу с данными об изменении рейтинга.
Query – Введите:
insert into suspicious_operation values (:#${exchangeProperty.InputReq['user_id']},:#${exchangeProperty.InputReq['operation_id']}, :#NewRating,'suspicious_activity',:#${exchangeProperty.InputReq['text_data']} )Connection – выберите подключение к БД.
-
Для того чтобы возвращать ответ об обнаружении подозрительного контента, добавьте блок Script в ветку When блока Choice. Заполните параметры и примените изменения.
Language – выберите groovy
Expression – введите:
exchange.getMessage().setBody("Found")
-
Для того чтобы возвращать ответ об отсутствии подозрительного контента, добавьте блок Script в ветку Otherwise блока Choice. Заполните параметры и примените изменения.
Language – выберите groovy
Expression – введите:
exchange.getMessage().setBody("Found")
Построенный поток будет выглядеть так, как показано на рисунке ниже.

-
Нажмите Сохранить справа над рабочей областью, чтобы завершить создание потока.
-
Подтвердите сохранение версии.
Шаг 5. Активируйте поток
-
Нажмите Активировать справа над в рабочей областью редактора.
-
Вместо кнопки Активировать на экране появится кнопка Деактивировать. Слева от нее на кнопке будет отображен текущий статус версии потока Активируемая версия. Процесс активации занимает короткое время, после чего на плашке появится надпись Активная версия.
Поток успешно развернут.
Шаг 6. Протестируйте поток
-
Нажмите на кнопку Активная версия: 1
-
В открывшемся поп-апе скопируйте адрес вызова потока нажатием на кнопку .
-
Вызовите поток в Postman.
-
В случае обнаружения подозрительного контента, проверьте в БД в таблице suspicious_operation наличие новой записи об изменении рейтинга пользователя, а также измененное значение рейтинга в таблице профилей пользователей.
Пример запроса:
"user_id": "U123456789",
"operation_id": "OP987654321",
"service_id": "SRV001",
"operation_number": "TRX20250317001",
"text_data": "Отправляю данные для обработки. Лови отчеты по результатам.",
"operation_datetime": "2025-03-17T10:15:30Z"
Пример успешной работы интеграционного потока:
