Введение
Comindware Platform позволяет отправлять HTTP-запросы типа POST для взаимодействия с внешними системами.
Здесь представлены инструкции по настройке подключения, пути передачи данных, шаблона записи и сценария для отправки запросов типа POST в формате JSON с составным содержимым и прикреплёнными файлами.
Прикладная задача
Имеется шаблон «Реестр документов», содержащий записи с прикреплёнными файлами.
Требуется настроить кнопку для отправки прикреплённых файлов во внешнюю систему с помощью HTTP-запроса типа POST.
Настройка подключения
- На странице Администрирование» выберите пункт «Инфраструктура» — «Подключения» .
- Откройте или создайте подключение типа «Подключения REST и OData» — «Отправка HTTP-запросов».
-
Настройте подключение к серверу:
- Системное имя — введите уникальное имя подключения. Не должно начинаться с цифры. Разрешены английские и русские буквы, цифры и символ «_». Рекомендуется использовать английские буквы.
- Отключить — установите этот флажок, если требуется временно деактивировать данное подключение.
- Описание — введите наглядное описание подключения, например «Подключение для отправки HTTP-запросов».
- Запись в файловые журналы — выберите, какие события следует записывать в журналы:
- Полные сведения об обработке сообщения;
- Только ошибки;
- Отключить — не регистрировать в журнале события отправки запросов.
- URI — введите URL-адрес сервера, принимающего HTTP-запросы, например
http://example.com/api. Символ/в конце URL не требуется. - Формат данных — выберите представление данных:
- JSON — используется в данном примере;
- XML;
- Простой текст.
- Кодировка данных — укажите формат кодировки данных, используемый сервером, по умолчанию: UTF-8.
- Тип аутентификации — выберите способ проверки подлинности, используемый сервером:
- Отсутствует;
- Базовая;
- Аутентификация Windows.
- Имя пользователя — укажите учётную запись для подключения к серверу.
- Пароль — введите пароль к учётной записи для подключения к серверу.
- Домен — укажите домен пользователя сервера.
-
Проверьте соединение с сервером, нажав соответствующую кнопку.
- При необходимости нажмите кнопку «Скачать журнал», чтобы просмотреть журнал событий отправки запросов.
- Сохраните подключение.
Настройка пути передачи данных
- Откройте страницу «Администрирование» — «Архитектура» или страницу «Администрирование» приложения.
- Выберите пункт «Пути передачи данных» .
- Откройте двойным нажатием в списке или создайте путь передачи данных типа «Подключения REST и OData» — «Отправка HTTP-запросов».
-
Настройте свойства пути передачи данных на следующих вкладках:
-
Сохраните путь передачи данных.
Основные свойства
На вкладке «Основные свойства» настройте параметры использования пути передачи данных:
- Подключение — выберите подключение для отправки HTTP-запросов.
- Системное имя — введите уникальное имя пути передачи данных. Не должно начинаться с цифры. Разрешены английские и русские буквы, цифры и символ «_». Рекомендуется использовать английские буквы.
- Отключить — установите этот флажок, если требуется временно деактивировать путь передачи данных.
- Описание — введите наглядное описание пути передачи данных, например «Путь передачи данных для отправки файлов по HTTP».
- Номер шины данных — выберите номер от 0 до 3, если требуется распределить потоки данных нескольких путей для повышения производительности.
Атрибуты сообщений
Составление атрибута сообщения типа «Объект»
Чтобы составить атрибут сообщения типа «Объект» для хранения имени и содержимого файла, необходимо создать структуру из родительского и дочерних атрибутов:
- Создайте атрибут типа «Объект», задайте его имя, но оставьте значение пустым.
- Установите флажок у имени родительского атрибута в таблице и нажмите кнопку «Добавить».
- Дважды нажмите значок рядом с родительским атрибутом.
- В таблице отобразится строка дочернего атрибута.
- Задайте системное имя и тип дочернего атрибута.
- Выберите тип сообщения «Отправка HTTP-запросов с составным содержимым» или «Отправка HTTP-запросов».
- В таблицу «Запрос» добавьте атрибут типа «Объект», например File.
-
Добавьте дочерние атрибуты name и content типа «Строка».
Внимание!
Системные имена атрибутов сообщения для передачи имени и содержимого файла должны быть обязательно
nameиcontentстрочными буквами.
Интеграция
-
Если на вкладке «Атрибуты сообщений» выбран тип сообщения «Отправка HTTP-запросов с составным содержимым», настройте параметры на вкладке «Интеграция» следующим образом:
- Выберите метод запроса POST.
- В таблицу «Атрибуты для формирования тела запроса (POST, PUT)» добавьте атрибут File с форматом данных «Файловая структура».
-
Если на вкладке «Атрибуты сообщений» выбран тип сообщения «Отправка HTTP-запросов», настройте параметры на вкладке «Интеграция» следующим образом:
- Выберите метод запроса POST.
- В поле «Атрибуты для сериализации в тело запроса» укажите File.
Настройка шаблона записи
- Создайте шаблон записи «Реестр документов» с системным именем DocumentRegistry.
-
Создайте атрибут «Вложения»:
- Тип данных: документ
- Системное имя: Attachment
- Хранить несколько значений: флажок установлен
-
Создайте кнопку «Отправить вложения» со следующими свойствами:
- Контекст операции: запись
- Операция: вызвать событие «Нажата кнопка»
- Результат выполнения: обновить данные
-
Поместите атрибут «Вложения» и кнопку «Отправить вложения» на форму.
Настройка сценария
Логика работы сценария отправки файлов
- Сценарий срабатывает при нажатии кнопки «Отправить вложения» на форме записи с прикреплёнными файлами.
- Запускается цикл, перебирающий все прикреплённые файлы.
-
- Формируются переменные с именем и содержимым файла:
$$nameи$$content. -
Формируется переменная-объект для отправки в теле HTTP-запроса:
{"Message":{"File":{"name": "STRING","content": "STRING"}}}
На каждой итерации цикла формируется и отправляется отдельный HTTP-запрос, содержащий данные файла в формате JSON:
$$Message->File->nameприсваивается значение переменной$$name.$$Message->File->contentприсваивается значение переменной$$content.-
Содержимое переменной
$$Messageв формате JSON отправляется в качестве HTTP-запроса:{"File":{"name": "STRING","content": "STRING"}} -
Содержимое переменной
$$Messageочищается для использования в следующей итерации цикла.
- Формируются переменные с именем и содержимым файла:
Создание архива
Чтобы не отправлять каждый файл отдельно, можно сформировать архив вложений и прикрепить его к атрибуту типа «Документ». Прикреплённый к этому атрибуту архив будет отправлен по HTTP, а цикл уже не понадобится. Для этого необходимо убрать действие «Повторять по количеству объектов» из приведённого ниже сценария, а также можно использовать C#-скрипт для создания архива файлов и прикрепления его к атрибуту, см. «Атрибуты типа «Запись» и «Документ». Скачивание архива с файлами из связанных записей и его прикрепление к атрибуту».
- Создайте сценарий «Отправка документов через HTTP».
- В свойствах события «Нажатие кнопки» выберите контекстный шаблон «Реестр документов» и кнопку «Отправить вложения».
-
После события «Нажатие кнопки» создайте действие «Повторять по количеству объектов» со следующими свойствами:
- Объект для поиска: атрибут «Вложения»
-
Внутри действия «Повторять по количеству объектов» создайте действие «Проверить результат выражения» со следующими свойствами:
-
На вкладке «Основные»:
- Сообщение об ошибке: Ошибка отправки вложения
-
Выражение: N3
# Импортируем функции для работы с данными текущего сеанса и переменными@prefix object: <http://comindware.com/ontology/object#>.@prefix document: <http://comindware.com/ontology/document#>.@prefix operator: <http://comindware.com/ontology/session/operator#>.@prefix variable: <http://comindware.com/ontology/session/variable#>.{# Находим атрибут Attachment (Вложение)# в шаблоне DocumentRegistry (Реестр документов).("DocumentRegistry" "Attachment") object:findProperty ?Attachment.# Помещаем объект с файлом из ?Attachment в ?AttachmentItem.?item ?Attachment ?AttachmentItem.# Помещаем содержимое файла из ?AttachmentItem в ?content.?AttachmentItem document:content ?content.# Помещаем имя файла из ?AttachmentItem в ?name.?AttachmentItem document:title ?name.# Создаём в сценарии переменную content и помещаем в неё ?contentvariable:content operator:replace ?content.# Создаём в сценарии переменную name и помещаем в неё ?namevariable:name operator:replace ?name.true -> ?value.}
-
На вкладке «Дополнительно»:
- Сбрасывать кэш значений: флажок установлен
-
-
Внутрь действия «Повторять по количеству объектов» добавьте действие «Изменить значения переменных» со следующими свойствами:
- На вкладке «Основные»:
- Операция со значениями переменных: заменить
- Набор переменных: Message
- На вкладке «Дополнительно»:
- Сбрасывать кэш значений: флажок установлен
- На вкладке «Основные»:
-
В действии «Изменить значение переменных» на вкладке «Основные» добавьте переменные:
Сопоставление переменных и объектов с атрибутами сообщения
Для передачи значения переменной с именем и содержимым файла в атрибут сообщения типа «Объект», необходимо создать родительскую и дочерние переменные с такой же структурой, как у атрибута сообщения:
- Создайте родительскую переменную, присвойте ей имя, но оставьте значение пустым.
- Установите флажок у имени родительской переменной в таблице и нажмите кнопку «Создать».
- Дважды нажмите значок рядом с родительской переменной.
- В таблице отобразится строка дочерней переменной.
- Присвойте дочерней переменной имя и значение.
Имена переменных, значения которых передаются в атрибуты сообщений с помощью действия сценария «Отправить сообщение», должны совпадать с системными именами атрибутов сообщения.
-
File — с дочерними переменными:
- content — значение: формула
$$content- name — значение: формула
$$nameЗдесь
$$contentи$$name— переменные, которые были созданы на шаге 4.
-
Внутрь действия «Повторять по количеству объектов» добавьте действие «Отправить сообщение» со следующими свойствами:
- На вкладке «Основные»:
- Подключение: выберите подключение для отправки файлов по HTTP.
- Путь передачи данных: выберите путь передачи данных для отправки файлов по HTTP.
- Переменная с сообщением: Message
- На вкладке «Дополнительно»:
- Сбрасывать кэш значений: флажок установлен
- На вкладке «Основные»:
-
Внутрь действия «Повторять по количеству объектов» добавьте действие «Проверить результат выражения» со следующими свойствами:
-
На вкладке «Основные»:
- Сообщение об ошибке: Ошибка очистки переменных
-
Выражение: N3
# Импортируем функции для работы с переменными@prefix variable: <http://comindware.com/ontology/session/variable#>.@prefix operator: <http://comindware.com/ontology/session/operator#>.{# Очищаем переменную Messagevariable:Message operator:clear ?item.# Возвращаем значение truetrue -> ?value.}
-
На вкладке «Дополнительно»:
- Сбрасывать кэш значений: флажок установлен
-

Тестирование
- Создайте запись в шаблоне «Реестр документов».
- Загрузите файлы в поле «Вложения».
- Сохраните запись.
- Нажмите кнопку «Отправить вложения».
- На сервер, настроенный в подключении для отправки файлов по HTTP, должен поступить HTTP-запрос, содержащий файлы, прикреплённые к атрибуту «Вложения».