Разбивка сообщения на части
В этом разделе приведено описание вариантов реализации разбивки сообщения, содержащего массив элементов.
В Платформу отправляется сообщение, содержащее массив элементов. Платформа разбивает полученное сообщение на отдельные сообщения и отправляет их Системе-получателю.
Предварительные условия
Созданы следующие элементы:
Внешний тип данных Инициирующее сообщение в сценарии разбивки сообщения
Тип данных Результат в сценарии разбивки сообщения
Инициация процесса
Инициатором выступает Система-отправитель в сценарии разбивки сообщения, на которую поступает сообщение соответствующее внешнему типу данных Инициирующее сообщение в сценарии разбивки сообщения для запуска процесса.
Система-отправитель в сценарии разбивки сообщения
Тип: Расширенное Rest API
Порт для публикации API: любой свободный
Обработчик Инициирующий запрос в сценарии разбивки сообщения
Тип: Веб-обработчик
Шаблон пути: /СценарийСинхронныйОтветИнициирующийЗапрос
Тип метода: Post
На вкладке В Platform добавлена переменная ИнициирующееСообщение с внешним типом Инициирующее сообщение в сценарии разбивки сообщения.
параметр Массив: включен
Входящий процесс трансформации в сценарии разбивки сообщения
Разделение массива поэлементно, на каждый элемент массива зарегистрировано новое сообщение с приведением к типу данных
Для реализации первого варианта сценария созданы следующие элементы:
Входящий процесс трансформации в сценарии разбивки сообщения со следующими параметрами:
Входящие данные: переменная ИнициирующийЗапрос с внешним типом Инициирующее сообщение в сценарии разбивки сообщения, выбран параметр Массив.
Параметр Автостарт: включен
На вкладке Схема добавлен шаг алгоритма:
Код алгоритма:
int re = InitMessage.BodyArrayCount(); for(int i = 0; i < re; i++) { Message newMessage = new Message(); newMessage.SetBody(InitMessage.CastToDataType<Человек>(i)); SetMessage(newMessage); Logger.Info($"выбрал - {newMessage}"); Transport.RegisterMessage(newMessage); }
Описание процесса
Бизнес-процесс Процесс сценария разбивки сообщения 1 вариант со следующими параметрами:
Параметр Автостарт: включен
Переменная обработки: Результат с внешний типом Инициирующее сообщение в сценарии разбивки сообщения
На вкладке Схема добавлен шаг Отправка:
Сообщение: переменная Результат
Тип получателя: Модуль
Получатель: Система-получатель в сценарии разбивки сообщения
Ожидание: Ожидание не требуется
Система-получатель в сценарии разбивки сообщения со следующими параметрами:
Тип: Веб-сервисы
Протокол: REST
Формат: JSON
Способ получения сообщений из Платформы: Внешний сервис вызывает методы Platform
Порт: должен быть свободным
Создайте запрос в Postman:
Выберите метод Post.
В URL введите адрес Системы-отправителя в сценарии разбивки сообщения и шаблон пути обработчика Инициирующий запрос в сценарии разбивки сообщения
В теле запроса введите следующий код:
[ { "имя": "Иван", "фамилия": "Сорокин" }, { "имя": "Илья", "фамилия": "Перышкин" } ]
Отправьте запрос.
Результат запроса: ответ 200.
В Центре Мониторинга и администрирования в Системе-получателе в сценарии разбивки сообщения на вкладке Очередь будут отображаться два сообщения. Каждое сообщение содержит один элемент массива.
В результате будет выполнено разделение массива поэлементно, и на каждый элемент массива зарегистрировано новое сообщение с приведением к типу данных.
Для реализации второго варианта сценария созданы следующие элементы:
Входящий процесс трансформации в сценарии разбивки сообщения вариант 2 со следующими параметрами:
Системы: выбрана Система-отправитель в сценарии разбивки сообщения.
Входящие данные: выбрана переменная ИнициирующееСообщение с внешним типом Инициирующее сообщение в сценарии разбивки сообщения.
Выбран параметр Массив.
Параметр Автостарт: включен
На вкладке Схема добавлен шаг Алгоритм:
Код алгоритма:
foreach(var item in ИнициирующееСообщение) { Logger.Verbose($"Регистрация сообщения {item}"); Message message = new Message(); message.SetBody(item); SetOutMessage(message);
}
Бизнес процесс Процесс сценария разбивки сообщения 2 вариант со следующими параметрами:
Параметр Автостарт: включен.
Переменная обработки: Сообщение с внешним типом Инициирующее сообщение в сценарии разбивки сообщения
На вкладке Схема добавлен шаг Отправка:
Сообщение: Переменная Сообщение
Тип получателя: Модуль
Получатель: Система-получатель в сценарии разбивки сообщения
Ожидание: Ожидание не требуется
Выключите параметр Автостарт для трансформации Входящий процесс трансформации в сценарии разбивки сообщения.
Установите параметр Автостарт для трансформации Входящий процесс трансформации в сценарии разбивки сообщения вариант 2.
Создайте запрос в Postman:
Выберите метод Post.
В URL введите адрес Системы-отправителя в сценарии разбивки сообщения и шаблон пути обработчика Инициирующий запрос в сценарии разбивки сообщения
В теле запроса введите следующий код:
[ { "имя": "Иван", "фамилия": "Сорокин" }, { "имя": "Илья", "фамилия": "Перышкин" } ]
Отправьте запрос.
Результат запроса: ответ 200.
В Центре Мониторинга и администрирования в Системе-получателе в сценарии разбивки сообщения на вкладке Очередь будут отображаться два сообщения. Каждое сообщение содержит один элемент массива.
В результате будет выполнено разделение массива поэлементно, и на каждый элемент массива зарегистрировано новое сообщение без приведения к типу данных.
Для реализации второго варианта сценария созданы Входящий процесс трансформации в сценарии разбивки сообщения вариант 3 со следующими параметрами:
Системы: выбрана Система-отправитель в сценарии разбивки сообщения.
Входящие данные: выбрана переменная ИнициирующееСообщение с внешним типом Инициирующее сообщение в сценарии разбивки сообщения.
Исходящие данные: выбрана переменная Результат с типом Результат в сценарии разбивки сообщения.
Выбран параметр Массив.
Параметр Автостарт: включен
На вкладке Схема добавлен шаг Алгоритм:
Код алгоритма:
foreach(var item in ИнициирующееСообщение) { Logger.Verbose($"Регистрация сообщения {item}"); Message message = new Message(); РезультатВСценарииРазбивкиСообщения результат = new РезультатВСценарииРазбивкиСообщения(); результат.Имя = item.Имя; результат.Фамилия = item.Фамилия; //Или заполнить все поля //результат.InitFromJson(item.ToJson()); message.SetBody(результат); SetOutMessage(message); }
Выключите параметр Автостарт для трансформации Входящий процесс трансформации в сценарии разбивки сообщения вариант 2.
Установите параметр Автостарт для трансформации Входящий процесс трансформации в сценарии разбивки сообщения вариант 3.
Создайте запрос в Postman:
Выберите метод Post.
В URL введите адрес Системы-отправителя в сценарии разбивки сообщения и шаблон пути обработчика Инициирующий запрос в сценарии разбивки сообщения
В теле запроса введите следующий код:
[ { "имя": "Иван", "фамилия": "Сорокин" }, { "имя": "Илья", "фамилия": "Перышкин" } ]
Отправьте запрос.
Результат запроса: ответ 200.
В Центре Мониторинга и администрирования в Системе-получателе в сценарии разбивки сообщения на вкладке Очередь будут отображаться два сообщения. Содержимое каждого сообщения соответствует отправленным элементам массива.
Для каждого элемента массива будет зарегистрировано новое сообщение. Исходное сообщение будет также отправлено.
Для реализации второго варианта сценария созданы следующие элементы:
Входящий процесс трансформации в сценарии разбивки сообщения вариант 4 со следующими параметрами:
Системы: выбрана Система-отправитель в сценарии разбивки сообщения
Входящие данные: выбрана переменная ИнициирующееСообщение с внешним типом Инициирующее сообщение в сценарии разбивки сообщения
Выбран параметр Массив
Параметр Автостарт: включен
На вкладке Схема добавлен шаг Алгоритм:
Код алгоритма:
foreach(var item in ИнициирующееСообщение) { Logger.Verbose($"Регистрация сообщения {item}"); Message message = new Message(); message.SetBody(item); SetOutMessage(message);
}
Бизнес процесс Процесс сценария разбивки сообщения 4 вариант со следующими параметрами:
Параметр Автостарт: включен.
Переменная обработки: ИнициирующееСообщение с внешним типом Инициирующее сообщение в сценарии разбивки сообщения.
На вкладке Схема добавлен шаг Отправка:
Сообщение: переменная ИнициирующееСообщение
Тип получателя: Модуль
Получатель: Система-получатель в сценарии разбивки сообщения
Ожидание: Ожидание не требуется
Выключите параметр Автостарт для трансформации Входящий процесс трансформации в сценарии разбивки сообщения вариант 3.
Установите параметр Автостарт для трансформации Входящий процесс трансформации в сценарии разбивки сообщения вариант 4.
Создайте запрос в Postman:
Выберите метод Post.
В URL введите адрес Системы-отправителя в сценарии разбивки сообщения и шаблон пути обработчика Инициирующий запрос в сценарии разбивки сообщения
В теле запроса введите следующий код:
[ { "имя": "Иван", "фамилия": "Сорокин" }, { "имя": "Илья", "фамилия": "Перышкин" } ]
Отправьте запрос.
Результат запроса: ответ 200.
В Центре Мониторинга и администрирования в Системе-получателе в сценарии разбивки сообщения на вкладке Очередь будут отображаться три сообщения. Содержимое каждого сообщения соответствует отправленным элементам массива и его элементам.