Привет, Хабр! На связи 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.
Программа подходит для всех, кто работает с данными, от разработчиков до руководителей.
Регистрируйтесь по ссылке