Импорт данных из ELMA
Пример решения задачи на базе аналитической low-code платформы Loginom:
- Скачать бесплатно Loginom Community Edition
- Скачать бесплатно пакет, реализующий описанный сценарий
Компания ELMA – разработчик системы управления бизнес-процессами ELMA BPM и дополнительных приложений для автоматизации бизнеса, реализованных на ее основе. В системе существует набор корневых сервисов, которые служат для взаимодействия с сервером на уровне SDK. Основные возможности, которые предоставляют сервисы: авторизация, получение метаданных системы, чтение данных сущностей, отслеживание изменений сущностей на сервере.
Для всех веб-сервисов ELMA установлено единое корневое пространство имен. В данном примере показана возможность импорта данных из сервиса чтения данных сущностей IEntityService.
Системные требования
Платформа ELMA любых редакций версии 3.15.7.45427 и новее. В данном описании указаны ссылки на общедоступную демо-версию http://bpm-demo.elma-bpm.ru. Для применения сценария на действующей системе необходимо использовать реальный URL, который находится в компетенции администратора ELMA.
Исходные данные
Имя переменной |
Метка | Примечание |
---|---|---|
Токен приложения | Требуется для идентификации доверенного приложения. Создается платформой ELMA, подробнее описано в разделе справки "Доверенные приложения и сессии соединения" | |
Идентификатор типа объекта | Необходимый идентификатор можно найти в разделе "Список типов объектов (сущностей)" |
Исходные данные заданы как набор переменных для сценария для удобства редактирования.
Алгоритм
- Передача запроса на сервис авторизации и получение токена авторизации AuthToken.
- Передача авторизованного с помощью AuthToken запроса на получение всех объектов типа "Контрагент" (Идентификатор 1fb7545c-b103-44b1-9b01-dacb986db75d).
- Преобразование JSON-ответа от ELMA в таблицу.
Сценарий

Все объекты "Контрагент"
Передает GET-запрос к веб-сервису чтения данных объектов http://bpm-demo.elma-bpm.ru/API/REST/Entity/help/operations/Query. Так как данный сервис может выдавать данные только по одному объекту, в мастере настройки необходимо создать параметр запроса с именем type, в котором будет передаваться значение нужного объекта.

На следующей странице мастера настройки необходимо указать имя пользователя и пароль, от имени которого будет производиться запрос.

AuthToken
В подмодели заключены узлы для передачи запроса к сервису авторизации http://bpm-demo.elma-bpm.ru/API/REST/Authorization/LoginWith?basic=1 и преобразования полученного токена в переменную для дальнейшего использования в сценарии.

Примечание: время жизни токена составляет 15 минут. При необходимости получения нового токена, нужно просто перезапустить подмодель AuthToken.
REST-запрос
Передает значение параметра type в теле запроса и полученный токен в заголовке запроса. Так как параметр type задан в виде переменной, для преобразования в таблицу применен соответствующий узел "Переменные в таблицу".
Преобразование JSON в таблицу
Преобразует JSON-ответ формата {key:value} в таблицу с помощью JavaScript. Извлеченная информация из тела ответа содержится в столбцах parent, key, type, value.
Извлечение информации

Узлы внутри подмодели предназначены в основном для составления имен полей, так как в структуре JSON запрашиваемого объекта есть вложенные объекты.

В связи с тем, что у вложенных объектов одинаковые имена полей (Id, Name, Uid), для их различия производится конкатенация имени объекта с именами вложений, если объект не имеет пустое значение (null). В данном примере объекты MarketingGroup и MarketingActivity пустые, и в результирующей таблице фигурируют под теми же именами. Объекты Type и Industry имеют некоторые значения, соответственно будут представлены как Type Id, Type Name, Type Uid и т.д.
По умолчанию имена полей в результирующей таблице идут в алфавитном порядке, в примере же некоторые поля были перемещены вверх для наглядности. Ключевым полем является столбец root_key, уникальные значения которого извлекаются сценарием из структуры JSON.
