Внешний NocoBase

Введение

Внешний источник данных NocoBase позволяет подключить другое приложение NocoBase к текущему приложению, сохранив метаданные, настроенные в удалённом приложении, включая таблицы данных, интерфейсы полей, заголовки и поля связей.

По сравнению с источником данных внешней базы данных, после подключения внешнего NocoBase обычно не требуется заново настраивать интерфейсы полей или вручную создавать поля связей. Помимо просмотра, создания, редактирования и удаления записей, также поддерживаются загрузка и предварительный просмотр файлов, импорт и экспорт, запросы для диаграмм и некоторые сценарии рабочих процессов.

Добавление источника данных

После активации плагина добавьте внешний источник данных NocoBase в разделе «Управление источниками данных» и укажите данные для доступа к удалённому приложению.

ПараметрОписание
API-адресПолный API-адрес удалённого приложения NocoBase, например https://example.com/api
OriginИсточник доступа к удалённому приложению NocoBase, например https://example.com; в основном используется для обработки адресов предварительного просмотра локальных файлов удалённого приложения
API keyУчётные данные, используемые текущим приложением для доступа к удалённому NocoBase
Заголовки запросаЗаголовки запроса, которые необходимо дополнительно передавать удалённому приложению, например сведения о пространстве
Тайм-аутВремя ожидания запроса к удалённому приложению

После включения источника данных система загрузит таблицы данных удалённого приложения.

Описание разрешений

На внешний источник данных NocoBase одновременно влияют разрешения текущего и удалённого приложений.

  • В текущем приложении можно, как и для других внешних источников данных, настроить права доступа к различным таблицам и полям;
  • удалённое приложение считывает и изменяет соответствующие данные в зависимости от разрешений настроенного API key.

Внешний источник данных NocoBase не возвращает метаданные разрешений, предназначенные для детального управления отображением состояния кнопок в интерфейсе. Поэтому некоторые кнопки могут не скрываться автоматически в соответствии с разрешениями, как это происходит для основного источника данных. Независимо от того, отображается кнопка или нет, при отправке операции она всё равно проходит проверку разрешений на стороне сервера текущего приложения, и неавторизованные операции будут отклонены.

Внимание

Рекомендуется подготовить отдельный API key для внешнего источника данных NocoBase и предоставить ему только необходимые права доступа к таблицам и операциям. Если в текущем приложении есть необходимые разрешения, но операция завершается ошибкой, проверьте права удалённого API key.

Использование таблиц данных

После успешной загрузки таблиц данных выберите этот источник данных в настройках страниц, блоков, диаграмм или рабочих процессов, чтобы использовать таблицы данных удалённого приложения.

После изменения структуры таблиц данных в удалённом приложении необходимо повторно загрузить таблицы данных в текущем приложении.

Описание возможностей

Внешний источник данных NocoBase в основном используется для работы с таблицами и данными удалённого приложения в текущем приложении. Структура таблиц данных, настройки полей и фактические данные по-прежнему поддерживаются удалённым приложением.

Таблицы данных и поля

Текущее приложение загружает метаданные удалённого приложения, включая таблицы данных, интерфейсы полей, заголовки и поля связей. По сравнению с источником данных внешней базы данных обычно не требуется заново настраивать интерфейсы полей или вручную создавать поля связей в текущем приложении.

Текущее приложение не поддерживает непосредственную настройку полей внешнего источника данных NocoBase. Чтобы добавить поле, изменить его тип или изменить поле связи, выполните эти действия в удалённом приложении, а затем вернитесь в текущее приложение и повторно загрузите таблицы данных.

Записи и связанные данные

Внешний источник данных NocoBase поддерживает просмотр, создание, редактирование и удаление записей в блоках страниц, а также просмотр и обслуживание связанных данных. Операции инициируются текущим приложением, которое обращается к удалённому приложению с помощью настроенного API key.

Файлы и вложения

Файлы загружаются в хранилище, используемое удалённым приложением. Текущее приложение отвечает за отправку запросов на загрузку, предварительный просмотр и скачивание, а сами файлы в текущем приложении не сохраняются.

Origin в основном используется для обработки адресов предварительного просмотра файлов из локального хранилища удалённого приложения. Если удалённое приложение возвращает относительный путь, текущее приложение использует Origin для формирования полного адреса доступа к файлу. В Origin следует указать публичный адрес удалённого приложения NocoBase, например:

https://example.com

Не указывайте API-адрес в поле Origin.

Импорт и экспорт

Импорт и экспорт относятся к операциям чтения и записи данных через внешние файлы и выполняются через удалённое приложение. Текущее приложение отвечает за получение действий пользователя, перенаправление запросов и возврат результата скачивания, а фактическое чтение и запись данных выполняются удалённым приложением.

  • Импорт записей: текущее приложение принимает загруженный файл импорта и перенаправляет его в удалённое приложение для выполнения импорта;
  • Экспорт записей: текущее приложение перенаправляет запрос на экспорт записей в удалённое приложение. В синхронном режиме поток файла записей, возвращённый удалённым приложением, передаётся браузеру для скачивания; в асинхронном режиме создаётся локальная асинхронная задача, в удалённом приложении запускается экспорт записей и синхронизируется прогресс, а при скачивании результата файл записей потоково загружается из удалённого приложения.
  • Экспорт вложений: текущее приложение перенаправляет запрос на экспорт вложений в удалённое приложение. В синхронном режиме пакет вложений, возвращённый удалённым приложением, потоково передаётся браузеру для скачивания; в асинхронном режиме создаётся локальная асинхронная задача, в удалённом приложении запускается экспорт вложений и синхронизируется прогресс, а при скачивании результата пакет вложений потоково загружается из удалённого приложения.

Печать шаблонов

Для печати по шаблону можно использовать записи из внешнего источника данных NocoBase. Шаблоны и настройки действий печати сохраняются в текущем приложении. При печати текущее приложение считывает записи и связанные данные из удалённого приложения и создаёт файл для печати в текущем приложении.

Диаграммы

Панель запросов

Внешний источник данных NocoBase можно использовать в панели запросов диаграмм. Текущее приложение обрабатывает параметры запроса с учётом локально настроенных диаграмм, источника данных, таблиц и разрешений полей, а затем отправляет запрос в удалённое приложение для получения результата.

Удалённый API key также должен иметь соответствующие права доступа к данным, иначе запрос завершится ошибкой.

Панель SQL

Панель SQL относится к режиму SQL-запросов диаграмм и предназначена только для запросов. Текущее приложение отвечает за сохранение конфигурации SQL и отправку вызова, а SQL-запрос перенаправляется для выполнения в удалённое приложение.

При использовании панели SQL локальный пользователь должен иметь права на настройку интерфейса в текущем приложении, а удалённый API key также должен иметь права на настройку интерфейса в удалённом приложении. В отличие от панели запросов, SQL не разбирается на параметры запроса с учётом прав доступа к таблицам и полям. Предоставляйте локальным пользователям и соответствующему API key права на настройку интерфейса с осторожностью.

Рабочие процессы

Внешний источник данных NocoBase может быть связан с двумя наборами рабочих процессов: текущего и удалённого приложения. Текущее приложение обрабатывает события в цепочках запросов локальных страниц, кнопок и API, а удалённое приложение после получения проксируемого запроса действует в соответствии со своей конфигурацией рабочих процессов.

Следует учитывать, что текущее приложение не отслеживает события создания, обновления и удаления, происходящие непосредственно в удалённых таблицах данных. События таблиц данных удалённого приложения срабатывают только в самом удалённом приложении.

Триггеры

В таблице ниже описано, как триггеры, на которые влияет внешний источник данных NocoBase, срабатывают в текущем и удалённом приложениях, если соответствующий рабочий процесс включён.

ТриггерТекущее приложениеУдалённое приложениеОписание
Событие перед запросомСрабатываетСрабатывает только в глобальном режимеВ текущем приложении срабатывает в глобальном режиме, а в локальном режиме — в соответствии с привязкой к кнопке текущего приложения; после получения проксируемого запроса удалённое приложение срабатывает только в глобальном режиме
Событие после запросаСрабатываетСрабатывает только в глобальном режимеВ текущем приложении срабатывает в глобальном режиме, а в локальном режиме — в соответствии с привязкой к кнопке текущего приложения; после получения проксируемого запроса удалённое приложение срабатывает только в глобальном режиме
Событие пользовательской операцииСрабатываетНе срабатываетКнопка «Запустить рабочий процесс», привязанная в текущем приложении, запускает локальный процесс; проксируемые CRUD-запросы не запускают события пользовательских операций в удалённом приложении
Событие таблицы данныхНе срабатываетСрабатываетФактическое изменение данных происходит удалённо, поэтому событие локальной таблицы данных в текущем приложении не срабатывает; удалённое приложение запускает собственное событие таблицы данных
Периодический триггер по полю датыНе срабатываетСрабатываетТекущее приложение не запускает триггер на основе полей удалённой таблицы данных; удалённое приложение запускает его в соответствии со своей настройкой поля даты

Триггеры, не зависящие от источника данных, срабатывают в текущем и удалённом приложениях в соответствии с настройками каждого из них.

Если необходимо организовать в текущем приложении процесс работы с данными внешнего NocoBase, рекомендуется использовать события перед запросом, после запроса или пользовательской операции. Рабочие процессы, уже существующие в удалённом приложении, выполняются независимо самим удалённым приложением.

Узлы

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

УзелДоступностьОписание
Запрос записейДоступенЗапрос записей в удалённом приложении
Создание записейДоступенСоздание записей в удалённом приложении
Обновление записейДоступенОбновление записей в удалённом приложении
Удаление записейДоступенУдаление записей в удалённом приложении
Узел SQLНедоступенУзел SQL рабочего процесса поддерживает только источники данных баз данных
Узел агрегацииНедоступенУзел агрегации поддерживает только источники данных баз данных

Часто задаваемые вопросы

Таблица данных не отображается

Проверьте, включён ли источник данных, а также правильность API-адреса и API key. В удалённом приложении также необходимо разрешить этому API key доступ к соответствующей таблице данных.

Файл успешно загружен, но не открывается в режиме предварительного просмотра

Если текущее или удалённое приложение использует локальное файловое хранилище, проверьте, что в Origin указан публичный адрес соответствующего приложения. В Origin не следует указывать API-адрес.

В текущем приложении есть права, но операция завершается ошибкой

Проверьте права API key удалённого приложения. На внешний источник данных NocoBase одновременно влияют разрешения текущего и удалённого приложений.

После сбоя удалённого сервиса таблица данных недоступна

Если удалённое приложение возвращает ошибку 502, перезапускается или временно недоступно, текущее приложение может временно не иметь возможности прочитать метаданные удалённых таблиц данных. После восстановления удалённого сервиса текущее приложение автоматически повторно загрузит метаданные при следующем обращении к таблицам данных этого источника.

Почему нельзя настроить поля в текущем приложении

Внешний источник данных NocoBase использует структуру таблиц данных и настройки полей удалённого приложения. Измените поля в удалённом приложении, а затем вернитесь в текущее приложение и повторно загрузите таблицы данных.