Привет, Хабр! На связи Business Intelligence GlowByte.
В данной статье разберем основы интеграции FineBI c внешними системами. С помощью публичных методов API можно использовать интерфейс, управлять системой удаленно и автоматизировать бизнес-процессы. Существует несколько способов интеграции публичных API в FineBI, и в зависимости от поставленных задач разработчики должны выбрать, какой способ им более подходит, или комбинировать их между собой. Далее рассмотрим доступные варианты, разберем их отличия и особенности и протестируем некоторые методы в http-клиенте Postman.
Web API
Первый метод интеграции публичных API называется веб-API. Он встроен в приложение «из коробки» и не требует установки дополнительных плагинов. Чтобы лучше понять, как работает этот метод, необходимо кратко рассмотреть принцип работы FineBI. После успешного входа в систему пользователю выдается уникальный временный авторизационный токен, который обеспечивает доступ к защищенным ресурсам. Этот токен, называемый Bearer Token или «Токен на предъявителя», можно найти с помощью Инструментов разработчика. Для этого выберите любой запрос на вкладке «Сеть» и в заголовках запроса «Request Headers», «Cookie» найдите запись вида «fine_auth_token=ey…».
Символы, следующие за «fine_auth_token=», представляют собой авторизационный токен сессии. Важно помнить, что данный токен нельзя передавать другим лицам, так как это может быть небезопасно. При работе с веб-API токен передается в конце запроса в качестве параметра fine_auth_token (URL запроса имеет вид http(s)://IP:Порт/webroot/decision/xxx?param1=value1&fine_auth_token=ey…), либо в заголовках как «Authorization»: «Bearer ey…» (более безопасный вариант). Для веб-API запросов доступны только методы GET и POST.
Авторизационный токен можно получить с помощью API-запроса. URL запроса /login/cross/domain?, параметры запроса:
Параметр |
Обязательный |
Описание |
fine_username |
да |
Логин |
fine_password |
да |
Пароль |
encrypted |
нет |
Пароль зашифрован с помощью AES? true / false |
validity |
да |
Срок действия токена Значение -2: 14 дней Значение -1: Management System > System Management > Login > Login Timeout |
callback |
нет |
Callback-функция |
После получения авторизационного токена можем протестировать некоторые методы в Postman.
Обновление датасета
Для вызова запроса обновления датасета нужно вначале получить ID папки и название датасета. Далее согласно документации добавим параметр info, значение которого равно {«packageId»:»ID папки»,»tableName»:»Имя датасета»,»fullLoad»:»false (инкрементальное обновление) или true (полное обновление)»}. Далее нужно заменить специальные символы в значении параметра с помощью функции EncodeURIComponent.
Давайте проверим, что будет, если выполнить данный запрос с авторизационным токеном пользователя, у которого нет доступа к папке Data Analysis Model. Как видим, данный запрос вернет ошибку и сообщение, что у пользователя нет разрешений на запрашиваемый объект.
Полный список доступных методов веб-API:
Обновление данных:
-
глобальное обновление,
-
обновить таблицы/папки,
-
инкрементальное обновление,
-
получить информацию про обновление.
Датасеты:
-
создать/изменить Self-Service/SQL/DB датасет,
-
переименовать датасет,
-
удалить датасет,
-
получить информацию про датасет,
-
получить данные из датасета,
-
получить SQL-запрос датасета c прямым подключением из My Analysis.
Public Data:
-
добавить/переименовать/удалить папку,
-
получить информацию про папку,
-
получить информацию про датасет из папки,
-
получить информацию из корневой папки.
Дашборды:
-
создать новый дашборд,
-
удалить/переименовать дашборд,
-
сохранить дашборд в песочницу (Save as),
-
создать публичную ссылку,
-
экспортировать дашборд/компонент как excel/pdf/png,
-
поделиться дашбордом с другими пользователями,
-
отменить “поделиться”,
-
пользователи, с которыми поделились дашбордом,
-
дашборды, которыми поделились со мной,
-
получить информацию про пользователя и созданные им дашборды,
-
получить информацию из вкладки Publication Management,
-
получить полную информацию про Subject,
-
получить информацию про дашборд,
-
получить список компонентов дашборда.
Интеграция в веб-страницу:
-
страница редактирования дашборда,
-
страница предпросмотра дашборда,
-
страница Public Data,
-
страница предпросмотра датасета в Public Data,
-
страница My Analysis,
-
страница Data в My Analysis для редактирования Self-Service Dataset.
Директории:
-
получить полное дерево Directory.
Полный список можно посмотреть также в документации.
Отметим, что возможности настроить, какие запросы пользователи могут выполнять или отключить использование веб-API, нет.
Итак, мы разобрали первый вариант интеграции FineBI с помощью встроенных запросов веб-API. Основной сценарий использования данного метода – интеграция FineBI c системами во внутреннем контуре, если необходимо сохранить ролевую модель для бизнес-пользователей и разработчиков.
OpenPlatfrom и ClientAPI
Второй доступный способ интеграции публичных API доступен с помощью дополнительных плагинов (сначала необходимо установить плагин OpenPlatform, затем ClientAPI), у плагинов есть пробный период в 90 дней. После установки в System Management появится новый раздел OpenPlatform.
OpenPlatfrom и ClientAPI
Второй доступный способ интеграции публичных API доступен с помощью дополнительных плагинов (сначала необходимо установить плагин OpenPlatform, затем ClientAPI), у плагинов есть пробный период в 90 дней. После установки в System Management появится новый раздел OpenPlatform.
Давайте изучим интерфейс раздела. На вкладке можно настроить максимальную частоту запросов, максимальное количество параллельных запросов, запись в лог, потребление памяти и др.
На вкладке Manage API представлен список доступных API-запросов, распределенных по группам. Для запроса можно настроить частоту запроса, вайт-лист, возможно также сделать запрос публичным (публичныеAPI можно вызвать без аутентификации).
Нажмем на значок карандаша -> Test, откроется встроенный http-клиент, из которого можно протестировать запросы.
На вкладке Manage Clients можно создать клиентов OpenPlatform. При создании клиента можно выбрать три режима шифрования пароля: AkSk direct authentication — без шифрования, SM2 или Digest Signature Authentication — MD5/SM3/SHA256-шифрование (рекомендуемый способ). После создания клиента перейдем в интерфейс редактирования клиента, чтобы получить ID клиента (Client ID) и пароль (Key).
На вкладке Authentication Method можно посмотреть настройки методов шифрования и при необходимости добавить собственные.
На следующей вкладке Manage Permissions можно настроить разрешения на вызов API отдельно для каждого клиента. И на последней вкладке Manage Log можем получить журнал вызванных API-запросов.
Чтобы сделать запрос в заголовках нужно передать 2 ключа: clientId (id клиента) и secret (пароль). Если для пароля клиента задано шифрование, то в заголовки вместо secret передается ключ _sign_, который рассчитывается следующим образом для Digest Signature Authentication в предобработке запроса в Postman:
Давайте протестируем некоторые запросы плагина OpenPlatform. API-запросы плагина OpenPlatform имеют вид http(s)://IP:Порт/webroot/decision/sp/client/api/v3/… В данной документации приведены все доступные запросы. Рекомендуется вначале проверить правильность выполнения запроса в интерфейса плагина.
Выдача лицензий
Следующий запрос позволяет указать типы лицензий пользователей, вместо редактирования вкладки вручную Platform User.
Список групп запросов для плагина OpenPlatform:
-
API данных для отчетов FineReport (получение данных из отчетов, запись в Data, Entry) + отправить SQL-запрос к БД из Data Connections,
-
Управление департаментами,
-
Управление позициями,
-
Получить список отчетов FineReport,
-
Управление ролями,
-
Управление разрешениями,
-
Управление подключениями,
-
Управление сервер-датасетами,
-
Управление Directory,
-
Получение логов в виде JSON с вкладки Platform Log,
-
Управление системой оповещения,
-
Управление запланированными задачами,
-
Управление пользователями.
Далее разберем плагин ClientAPI, который расширяет список доступных запросов OpenPlatform. Многие запросы плагина ClientAPI повторяют запросы Web API. Краткий список запросов по темам, все запросы в документации:
-
Управление разрешениями (папки/датасеты в Public Data, строки/столбцы, дашборды),
-
Датасеты/обновления/папки в Public Data,
-
Управление песочницей My Analysis,
-
“Поделиться” и коллабория дашбордов.
API-запросы ClientAPI имеют вид http(s)://IP:Порт/webroot/decision/sp/client/api/v3/bi/… Давайте попробуем обновить SQL-датасет, используя запрос, предоставляемый плагином ClientAPI:
Созданные клиенты на вкладке Manage Clients не являются обычными пользователями платформы. На них не распространяется ролевая модель, поэтому ограничить доступ клиентов к каким-то объектам нельзя (клиенты обладают правами администратора), можно ограничить только доступ к самим запросам.
Вы могли заметить, что группы Client API две: Client API for FineBI6 V3 и Client API for FineBI6 V3 by fine_auth_token. API-запросы второй группы используют авторизацию токеном fine_auth_token, как веб-API, а не через клиентов. Аналогично есть плагин для API-запросов OpenPlatform, который использует авторизационный токен. Вызов вернет ошибку, если у пользователя (не клиента!), который его вызывает нет разрешений на запрашиваемые разделы или действия (как в веб-API). Схема таких API-запросов: http(s)://IP:Порт/webroot/decision/sp/client/api/module/v3/…
http(s)://IP:Порт/webroot/decision/sp/client/api/module/v3/bi/…
P.S.: Помимо основного метода аутентификации для вызова запросов OpenPlatform и ClientAPI с передачей в заголовки clientId и secret / _sign_, есть также возможность входа с временным “универсальным” токеном. По URL-запросу /sp/client/spi/token сервер вернет access_token, который можно будет передать как параметр или в заголовках для вызова других запросов. Сценарий использования данного метода входа до конца не понятен. Было предположение, что с помощью “универсального” токена можно вызывать веб-API запросы, но нет, не сработало.
Подведем итоги. Доступные API-запросы покрывают значительную часть всего функционала FineBI. Строить дашборды по API, конечно, не получится, но производить практически все администрирование можно не заходя в приложение. Также API открывают широкий простор для “творчества” (примеры от вендора). Пример несложной веб-страницы, которую удалось собрать.
Надеемся, наш эксперимент был наглядным и полезным. Больше полезной информации о работе FineBI вы найдете в нашем сообществе FineBIChat.
Пользуясь случаем, хочу пригласить всех 16 сентября на образовательный проект GlowByte и DataYoga по работе с BI-инструментом FineBI! 🐲
10 дней теории, практики и вдохновения от ведущих российских компаний. Узнайте о возможностях анализа и визуализации данных в FineBI, а также получите практические советы по оптимизации BI-практики от GlowByte.
Программа подходит для всех, кто работает с данными, от разработчиков до руководителей.
Регистрируйтесь по ссылке
ссылка на оригинал статьи https://habr.com/ru/articles/842842/
Добавить комментарий