外部 NocoBase

はじめに

外部 NocoBase データソースは、別の NocoBase アプリケーションを現在のアプリケーションに接続し、リモートアプリケーションで設定済みのコレクション、フィールドインターフェース、タイトル、関連フィールドなどのメタデータを保持します。

外部データベースデータソースと比べると、通常はフィールドインターフェースを再設定したり、関連フィールドを手動で作成したりする必要はありません。レコードの表示、作成、編集、削除に加えて、ファイルのアップロードとプレビュー、インポートとエクスポート、チャートクエリ、一部のワークフローシナリオにも対応しています。

データソースの追加

プラグインを有効化した後、データソースマネージャーで外部 NocoBase データソースを追加し、リモートアプリケーションのアクセス情報を入力します。

設定項目説明
API URLリモート NocoBase アプリケーションの完全な API URL。例: https://example.com/api
Originリモート NocoBase アプリケーションの公開 Origin。例: https://example.com。主にリモートアプリケーションのローカルファイルのプレビュー URL を処理するために使用します
API key現在のアプリケーションがリモート NocoBase にアクセスするために使用する認証情報
リクエストヘッダーリモートアプリケーションへ追加で送信するヘッダー。スペース情報など
タイムアウトリモートアプリケーションへアクセスするリクエストのタイムアウト

データソースを有効化すると、システムはリモートアプリケーションのコレクションを読み込みます。

権限

外部 NocoBase データソースは、現在のアプリケーションとリモートアプリケーションの両方の権限の影響を受けます。

  • 現在のアプリケーションでは、他の外部データソースと同様に、コレクションやフィールドごとのアクセス権限を設定できます。
  • リモートアプリケーションでは、設定された API key の権限に基づいてデータの読み取りや操作が行われます。

外部 NocoBase データソースは、フロントエンドでボタン表示を細かく制御するための権限メタデータを返しません。そのため、一部のボタンはメインデータソースのように権限に応じて自動的に非表示にならない場合があります。ボタンが表示されているかどうかにかかわらず、送信された操作は現在のアプリケーションのサーバー側権限チェックを通過し、許可されていない操作は拒否されます。

注意

外部 NocoBase データソース専用の API key を用意し、必要なコレクションと操作の権限だけを付与してください。現在のアプリケーション側では権限があるのに操作が失敗する場合は、リモート API key の権限を確認してください。

コレクションの使用

コレクションが正常に読み込まれたら、ページ設定、ブロック設定、チャート、ワークフローでこのデータソースを選択し、リモートアプリケーションのコレクションを使用できます。

リモートアプリケーションのコレクション構造が変更された場合は、現在のアプリケーションでコレクションを再読み込みしてください。

機能

外部 NocoBase データソースは、主にリモートアプリケーションのコレクションとデータを現在のアプリケーションで利用するためのものです。コレクション構造、フィールド設定、実データは引き続きリモートアプリケーションで管理されます。

コレクションとフィールド

現在のアプリケーションは、リモートアプリケーションのコレクション、フィールドインターフェース、タイトル、関連フィールドなどのメタデータを読み込みます。外部データベースデータソースと比べて、通常は現在のアプリケーションでフィールドインターフェースを再設定したり、関連フィールドを手動で作成したりする必要はありません。

現在のアプリケーションでは、外部 NocoBase データソースのフィールドを直接設定することはできません。フィールドの追加、フィールドタイプの調整、関連フィールドの変更が必要な場合は、リモートアプリケーションで変更してから、現在のアプリケーションでコレクションを再読み込みしてください。

レコードと関連データ

外部 NocoBase データソースは、ページブロックでのレコードの表示、作成、編集、削除に対応しており、関連データの表示と管理もできます。操作は現在のアプリケーションから開始され、設定された API key を使ってリモートアプリケーションへ送信されます。

ファイルと添付ファイル

ファイルはリモートアプリケーションが使用するストレージにアップロードされます。現在のアプリケーションはアップロード、プレビュー、ダウンロードのリクエストを開始しますが、ファイル自体は現在のアプリケーションには保存されません。

Origin は主に、リモートアプリケーションのローカルストレージに保存されたファイルのプレビュー URL を処理するために使用します。リモートアプリケーションが相対パスを返す場合、現在のアプリケーションは Origin を使ってファイルアクセス URL を補完します。Origin にはリモート NocoBase アプリケーションの公開アクセスアドレスを入力してください。例:

https://example.com

API URL を Origin として入力しないでください。

インポートとエクスポート

インポートとエクスポートは、外部ファイルを通じてデータソースを読み書きする操作であり、実行はリモートアプリケーションへプロキシされます。現在のアプリケーションはユーザー操作の受付、リクエストの転送、ダウンロード結果の返却を担当し、実際のデータ読み書きはリモートアプリケーションで行われます。

  • レコードのインポート: 現在のアプリケーションがアップロードされたインポートファイルを受け取り、リモートアプリケーションへプロキシしてインポートを実行します。
  • レコードのエクスポート: 現在のアプリケーションがリモートアプリケーションへレコードエクスポートを依頼します。同期モードでは、リモートアプリケーションから返されたレコードファイルをブラウザーへストリーミングしてダウンロードします。非同期モードでは、ローカルの非同期タスクを作成し、リモートアプリケーションでレコードエクスポートを開始し、進捗をローカルタスクへ同期し、ダウンロード時に結果ファイルをリモートアプリケーションからストリーミングします。
  • 添付ファイルのエクスポート: 現在のアプリケーションがリモートアプリケーションへ添付ファイルエクスポートを依頼します。同期モードでは、リモートアプリケーションから返された添付ファイルアーカイブをブラウザーへストリーミングしてダウンロードします。非同期モードでは、ローカルの非同期タスクを作成し、リモートアプリケーションで添付ファイルエクスポートを開始し、進捗をローカルタスクへ同期し、ダウンロード時に添付ファイルアーカイブをリモートアプリケーションからストリーミングします。

テンプレート印刷

テンプレート印刷では、外部 NocoBase データソースのレコードを使用できます。印刷テンプレートと印刷アクション設定は現在のアプリケーションに保存されます。印刷時には、現在のアプリケーションがリモートレコードと関連データを読み取り、現在のアプリケーション内で印刷ファイルを生成します。

チャート

クエリパネル

外部 NocoBase データソースはチャートのクエリパネルで使用できます。現在のアプリケーションは、ローカルで設定されたチャート、データソース、コレクション、フィールドの権限に基づいてクエリパラメーターを処理し、リモートアプリケーションへ結果を要求します。

リモート API key にも対象データへのアクセス権限が必要です。権限がない場合、クエリは失敗します。

SQL パネル

SQL パネルはチャートの SQL クエリモードであり、クエリ専用です。現在のアプリケーションは SQL 設定の保存と呼び出しの開始を担当し、SQL はリモートアプリケーションへプロキシされて実行されます。

SQL パネルを使用する場合、ローカルユーザーには現在のアプリケーションでの UI 設定権限が必要であり、リモート API key にもリモートアプリケーションでの UI 設定権限が必要です。SQL はクエリパネルのようにコレクションやフィールド権限ごとに分解されません。ローカルユーザーと対応する API key への UI 設定権限の付与は慎重に行ってください。

ワークフロー

外部 NocoBase データソースでは、現在のアプリケーションとリモートアプリケーションの両方のワークフローが関係する場合があります。現在のアプリケーションは、ローカルページ、ボタン、API リクエストチェーン内のイベントに応答します。リモートアプリケーションはプロキシされたリクエストを受け取った後、自身のワークフロー設定に従って処理します。

現在のアプリケーションは、リモートコレクション内部で発生する作成、更新、削除イベントを監視しません。リモートコレクションイベントはリモートアプリケーション内でのみ発生します。

トリガー

次の表は、対応するワークフローが有効な場合に、外部 NocoBase データソースの影響を受けるトリガーが現在のアプリケーションとリモートアプリケーションでどのように動作するかを示します。

トリガー現在のアプリケーションリモートアプリケーション説明
アクション前イベント発生グローバルモードのみ発生現在のアプリケーションではグローバルモードが発生し、ローカルモードは現在のアプリケーションのボタンバインドに従います。リモートアプリケーションがプロキシリクエストを受け取った後は、グローバルモードのみ発生します
アクション後イベント発生グローバルモードのみ発生現在のアプリケーションではグローバルモードが発生し、ローカルモードは現在のアプリケーションのボタンバインドに従います。リモートアプリケーションがプロキシリクエストを受け取った後は、グローバルモードのみ発生します
カスタムアクションイベント発生発生しない現在のアプリケーションでバインドされた「ワークフローをトリガー」ボタンはローカルワークフローを起動します。プロキシされた CRUD リクエストはリモートのカスタムアクションイベントを起動しません
コレクションイベント発生しない発生実データはリモートアプリケーションで変更されます。現在のアプリケーションではローカルのコレクションイベントは発生せず、リモートアプリケーションで自身のコレクションイベントが発生します
日付フィールドスケジュールトリガー発生しない発生現在のアプリケーションはリモートコレクションのフィールドに基づいてトリガーしません。リモートアプリケーションは自身の日付フィールド設定に従ってトリガーします

データソースに依存しないトリガーは、現在のアプリケーションとリモートアプリケーションでそれぞれの設定に従って発生します。

現在のアプリケーションで外部 NocoBase データを操作するワークフローを構成する場合は、アクション前イベント、アクション後イベント、またはカスタムアクションイベントを使用してください。リモートアプリケーションに既存のワークフローは、リモートアプリケーション内で独立して実行されます。

ノード

次の表は、データソースに関連するノードのみを示しています。条件、計算、ループ、JSON 処理などの汎用ノードはデータソースタイプに依存せず、通常どおり使用できます。

ノード利用可否説明
レコードをクエリ利用可能リモートアプリケーションのレコードをクエリします
レコードを作成利用可能リモートアプリケーションにレコードを作成します
レコードを更新利用可能リモートアプリケーションのレコードを更新します
レコードを削除利用可能リモートアプリケーションのレコードを削除します
SQL ノード利用不可ワークフロー SQL ノードはデータベースデータソースのみをサポートします
集計ノード利用不可集計ノードはデータベースデータソースのみをサポートします

FAQ

コレクションが表示されない

データソースが有効になっているか、API URL と API key が正しいかを確認してください。リモートアプリケーション側でも、その API key に対象コレクションへのアクセスを許可する必要があります。

ファイルのアップロードは成功するがプレビューできない

現在のアプリケーションまたはリモートアプリケーションがローカルファイルストレージを使用している場合、Origin が対象アプリケーションの公開アクセスアドレスになっているか確認してください。Origin に API URL を指定しないでください。

現在のアプリケーションには権限があるが操作に失敗する

リモートアプリケーションの API key 権限を確認してください。外部 NocoBase データソースは、現在のアプリケーションとリモートアプリケーションの両方の権限の影響を受けます。

リモートサービス異常後にコレクションを使用できない

リモートアプリケーションが 502 を返したり、再起動したり、一時的に利用できない場合、現在のアプリケーションは一時的にリモートコレクションのメタデータを読み取れないことがあります。リモートサービスの復旧後、このデータソースのコレクションへ次回アクセスしたときに、現在のアプリケーションはメタデータを自動的に再読み込みします。

現在のアプリケーションでフィールドを設定できない理由

外部 NocoBase データソースは、リモートアプリケーションのコレクション構造とフィールド設定を使用します。フィールドはリモートアプリケーションで調整し、その後現在のアプリケーションでコレクションを再読み込みしてください。