Получение HTTP-запросов. Пример: настройка подключения, пути передачи данных и сценария для обработки запросов в формате JSON
Введение
Comindware Business Application Platform может получать HTTP-запросы с помощью встроенного HTTP-адаптера.
Здесь на примере сценария приема заказов мы разберем настройку получения и обработки HTTP-запроса в формате JSON.
Настройка для обработки XML и простого текста будет аналогичной.
Исходные данные
Пример JSON-данных из запроса, поступающего в систему из внешней системы:
{
"ListZakazov": [
{
"Zakaz": {
"Client": "Петров",
"nomer": 54,
"tovar":"Яблоко"
}
},
{
"Zakaz": {
"Client": "Иванов",
"nomer": 60,
"tovar":"Банан"
}
},
{
"Zakaz": {
"Client": "Сидоров",
"nomer": 61,
"tovar":"Груша"
}
}
]
}
В приложении имеется шаблон записи «Заказы», с атрибутами:
- Номер — тип данных: Число
- Клиент — тип данных: Текст
- Товар — тип данных: Текст
Примечание
Здесь не рассматривается поиск схожих данных и проверка на их наличие.
Настройка подключения
-
Перейдите в раздел «Администрирование» — «Инфраструктура» — «Подключения». Нажмите кнопку «Создать» и выберите пункт «Подключения REST и OData» — «Получение HTTP-запросов».
Создание подключения -
Настройте свойства нового подключения:
- Системное имя (на латинице) нового подключения;
- Описание — отображаемое название нового подключения;
- Путь URI — путь, на который будут поступать HTTP-запросы;
- Формат данных — JSON. Также поддерживаются XML и простой текст, но здесь рассматривается обработка данных в формате JSON.
-
Сохраните подключение.
Настройка пути передачи данных
- Перейдите в раздел Администрирование — Инфраструктура — Пути передачи данных. Нажмите кнопку «Создать» и выберите пункт «Подключения REST и OData» — «Получение HTTP-запросов».
-
В окне создания нового пути передачи данных укажите:
- Подключение — выберите ранее созданное подключение.
- Системное имя (на латинице) нового пути передачи данных;
- Описание — наглядное наименование нового пути передачи данных.
-
Перейдите на вкладку «Атрибуты сообщения».
Запрос — здесь указывается данные JSON сопоставляются с атрибутами Comindware Business Application Platform.
На данном этапе следует посмотреть структуру JSON-данных, поступающих в запросе, и разобрать их на атрибуты с указанием типов данных:
- ListZakazov — атрибут, который содержит в себе данные по всем заказам. Тип — объект;
- Zakaz — атрибут, который тоже в себе содержит данные по одному заказу. Тип — объект;
- nomer — атрибут, содержащий значение номера заказа. Тип — число;
- Client — атрибут, содержащий значение клиента заказа. Тип — строка;
- tovar — атрибут, содержащий значение товара заказа. Тип — строка.
-
Воссоздайте структуру входных данных JSON в таблице «Запрос» с помощью кнопки «Добавить».
Примечание
Чтобы создать в таблице дочерний атрибут, установите флажок у родительского атрибута и нажмите кнопку «Добавить».
Настройка запроса -
При необходимости настройте ответ — здесь можно составить макет JSON, который будет ответом на запрос, и ответ с ошибкой — здесь можно составить макет JSON, который будет ответом на запрос, в котором произошла ошибка.
- Перейдите на вкладку «Интеграция».
- Укажите атрибуты для десериализации данных. В стандартном варианте следует указать
$
в обоих столбцах. Для поиска определенного атрибута используйте JSONPath. - При необходимости укажите атрибут для заголовков, в котором будут содержаться все атрибуты заголовков запроса, атрибут для параметров запроса, в котором будут содержаться все параметры запроса, и атрибут для тела запроса, в котором будет содержаться всё тело запроса.
- В поле «Базовый путь для приема HTTP-запросов» указан адрес, на который внешняя система должна отправлять запросы в Comindware Business Application Platform.
- Сохраните путь передачи данных.
Настройка сценария для обработки полученного JSON запроса
-
Перейдите на страницу «Администрирование» приложения. Откройте страницу «Сценарии». Нажмите кнопку «Создать». Введите название, системное имя сценария и нажмите кнопку «Сохранить».
Создание сценария -
У начального события измените тип на «Получение сообщения» и настройте его.
- Выберите шаблон записи, куда будут поступать основные данные;
- Выберите ранее созданные подключение и путь передачи данных;
- Задайте имя переменной (любое на латинице).
Настройка события -
Добавьте действие «Повторять по количеству объектов» и настройте его. - Задайте имя переменной (в данном примере указана переменная
local
), в ней будет храниться объект итерации; - Напишите выражение на языке N3, по которому система выберет нужные объекты для итерации.@prefix session: <http://comindware.com/ontology/session#>.
@prefix var: <http://comindware.com/ontology/session/variable#>.
{
session:context var:request ?req. #request — переменная из первого блока, в которой находится разобранный JSON
?req var:ListZakazov ?value. #ListZakazov - переменная, в которой находится массив объектов
}
Настройка действия «Повторять по количеству объектов» -
Внутрь действия «Повторять по количеству объектов» добавьте действие «Создать запись» и укажите шаблон записи «Заказы».
-
Внутрь действия «Создать запись» добавьте действие «Изменить значения атрибутов» и настройте его.
- Добавьте три атрибута (Клиент, Товар и Номер);
- Операцию со значениями у всех атрибутов укажите «Заменить»;
- Значением будет формула
$$local—Zakaz—Client
(для клиента), для остальных атрибутов будет такая же формула, только в конце в местоClient
будет название соответствующего атрибута JSON.
Переменная
$$local
— хранит значение текущего объекта итерации. Пример:{
"Zakaz": {
"Client": "Петров",
"nomer": 54,
"tovar": "Яблоко"
}
},
Переменная
$$local—Zakaz
будет содержать массив данных по заказу из текущего объекта итерации. Пример:{
"Client": "Петров",
"nomer": 54,
"tovar": "Яблоко"
}
Переменная
$$local—Zakaz—Tovar
будет данные информации о товаре по заказу из текущего объекта итерации. Пример:"Яблоко"
Настройка действия «Изменить значения атрибутов» -
Получившийся сценарий должен выглядеть следующим образом:
Сценарий обработки заказа
Тестирование
-
Отправьте запрос из внешней системы в Comindware Business Application Platform на адрес, указанный в поле «Базовый путь для приема HTTP-запросов» в свойствах пути передачи данных.
-
Проверьте обработку запроса: должны быть созданы записи в шаблоне «Заказы», соответствующие полученному запросу, как показано на иллюстрации:
Связанные статьи
Эта статья была полезна 2 чел.