外部 NocoBase

概要

外部 NocoBase データソースを使用すると、別の NocoBase アプリを現在のアプリに接続し、リモートアプリで設定済みのデータテーブル、フィールドインターフェース、タイトル、リレーションフィールドなどのメタデータを保持できます。

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

データソースの追加

プラグインを有効化した後、「データソース管理」で外部 NocoBase データソースを追加し、リモートアプリのアクセス情報を入力します。

設定項目説明
API アドレスリモート NocoBase アプリの完全な API アドレス(例:https://example.com/api
Originリモート NocoBase アプリのアクセス元(例:https://example.com)。主にリモートアプリのローカルファイルのプレビューアドレスを処理するために使用します
API key現在のアプリからリモート NocoBase にアクセスする際に使用する認証情報
リクエストヘッダースペースなど、リモートアプリに追加で渡す必要があるリクエストヘッダー
タイムアウトリモートアプリへのリクエストのタイムアウト時間

データソースを有効にすると、システムがリモートアプリのデータテーブルを読み込みます。

権限について

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

  • 現在のアプリでは、他の外部データソースと同様に、テーブルやフィールドごとに異なるアクセス権限を設定できます。
  • リモートアプリでは、設定された API key の権限に基づいて、対応するデータの読み取りや操作を行います。

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

注意

外部 NocoBase データソース専用の API key を用意し、必要なデータテーブルと操作権限のみを付与することを推奨します。現在のアプリでは権限があるのに操作に失敗する場合は、リモート 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 パネルを使用する場合、ローカルユーザーは現在のアプリで UI 設定権限を持っている必要があり、リモート API key もリモートアプリで UI 設定権限を持っている必要があります。SQL はクエリパネルのようにデータテーブルやフィールドの権限に基づいてクエリパラメーターを分解しないため、ローカルユーザーと対応する API key に UI 設定権限を付与する際は注意してください。

ワークフロー

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

注意すべき点として、現在のアプリはリモートデータテーブル内部で発生した作成、更新、削除イベントを監視しません。リモートデータテーブルのイベントは、リモートアプリでのみトリガーされます。

トリガー

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

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

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

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

ノード

次の表には、データソースに関連するノードのみを示します。条件、計算、ループ、JSON 処理などの汎用ノードはデータソースの種類に依存しないため、通常のワークフローと同じように使用できます。

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

よくある質問

データテーブルが表示されない

データソースが有効になっているか、API アドレスと API key が正しいかを確認してください。リモートアプリでも、その API key に対応するデータテーブルへのアクセスを許可する必要があります。

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

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

現在のアプリでは権限があるのに操作に失敗する

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

リモートサービスの異常後にデータテーブルを使用できない

リモートアプリで 502 エラー、再起動、または一時的な利用不能が発生すると、現在のアプリでリモートデータテーブルのメタデータを一時的に読み取れなくなる場合があります。リモートサービスが復旧すると、現在のアプリは次回そのデータソースのデータテーブルにアクセスする際に、メタデータを自動的に再読み込みします。

現在のアプリでフィールドを設定できないのはなぜですか

外部 NocoBase データソースでは、リモートアプリのデータテーブル構造とフィールド設定を使用します。フィールドはリモートアプリで調整してから、現在のアプリに戻ってデータテーブルを再読み込みしてください。