データプロバイダーの概要
データプロバイダーは、Formsアプリケーションで使用できるデータを提供します。 RESTデータプロバイダーはFormsアプリケーションに含まれています。 これにより、 RESTウェブサービス からデータを使用し、フォームフィールドを自動入力することができます。
よくある例としては、RESTデータプロバイダーを使用して、[リストから選択]フィールドのオプションに国のリストを入力することが挙げられます。
登録済みのJSON Webサービス
データソースの中には、 restcountries.com データプロバイダーのようなサードパーティーのソースから取得するものもあります。 また、Liferay DXPには独自に登録されたWebサービスがあります。 ローカルサーバーを実行している場合は、 http://localhost:8080/api/jsonws でリストを参照してください。 国のリストを入力する場合、2つのget-countries
JSON Web サービスがありますが、どちらでも動作します。 [Invoke] をクリックすると、結果が生成されます。
Liferayのウェブサービスを使用して、ローカルなテスト環境でデータプロバイダーとテストをするには、ローカルネットワークアクセスを有効にする必要があります。 ローカルネットワーク上のデータへのアクセスを有効にする を参照して下さい。
[Result] タブには、次のアフガニスタンのレコードのように、JSON構文を使用した国のリストが表示されます。
[
{
"a2": "AF",
"a3": "AFG",
"countryId": "20",
"idd": "093",
"mvccVersion": "0",
"name": "afghanistan",
"nameCurrentValue": "Afghanistan",
"number": "4"
},
...
Webサービスから選択可能なフィールドを選択します。 get-countries
の場合は、適切に大文字で表記された国の完全な名前が含まれているため、ほとんどの場合nameCurrentValue
となります。
[URL例]タブで、データプロバイダーの作成時に使用するURLを探します。 これは、get-countries
JSON Webサービスにアクセスする際に生成されるものと同じです。 ユーザーは、登録されているJSON WebサービスのURLを、これと同じ手順で見つけることができます。
データプロバイダー設定リファレンス
フォームアプリケーションからデータプロバイダーを設定するには、 [サイト管理] → [コンテンツ & データ] → [フォーム] へ行きます。 [データプロバイダー] タブをクリックし、()アイコンをクリックして開始します。 データプロバイダーを設定する際には、いくつかのフィールドに入力する必要があります。
URL
内部または外部のRESTサービスのエンドポイントのURLを入力します。 上記の例では、https://restcountries.com/にあるRESTサービスを示していて、このサービスにはregion
で国を検索するエンドポイントが含まれています。
https://restcountries.com/rest/v2/region/{region}
データプロバイダーのURLには、パスパラメーターとクエリパラメーターの2種類のパラメーターを指定できます。
パスパラメーターは、REST Webサービスを呼び出すURLの一部で、https://service-url.com/service/{path_parameter_name}
というパターンを使用して追加されます。
たとえば、 restcountries.com
サービスのregion
エンドポイントのパスパラメーターは{region}
です。 パスパラメーターはURLの必須部分なので、URLのパスパラメーターに一致する [パラメーター] フィールド値を持つ入力(下記参照)を指定してください。
クエリパラメーターは、サービス呼び出しの出力を絞り込むためのURLの補完的な部分で、?query_parameter=query_parameter_value
というパターンに従います。
https://restcountries.com/rest/v2/all?fields=capital
パスパラメーターとは異なり、クエリパラメーターはオプションです。
ユーザー名とパスワード
必要に応じて、REST Webサービスへの認証に使用する認証情報を入力します。
初回リクエスト時のデータキャッシュ
データがキャッシュされている場合は、RESTサービス・プロバイダーへの2回目の呼び出しが不要になるため、リストを選択フィールドの2回目のロードがより速くなります。
タイムアウト
リクエストを中止する前にREST呼び出しの応答を待機する時間(ミリ秒単位)を入力します。
入力
RESTサービスからのパスパラメーターまたはクエリパラメーターを設定して、RESTサービスの応答を絞り込みます。 ラベル、パラメータ、タイプ(テキストまたは数値)を指定します。
出力
出力は、オートコンプリートが有効なリストから選択フィールドまたはテキストフィールドに表示するパラメーターです。 複数の出力を追加することができます。 出力は入力によって絞り込むことができますが(上記参照)、入力フィルタリングを設定せずに表示することもできます。 ラベル、パス、タイプ(テキスト、数字、リスト)を指定します。
複数の入力を追加することができます。 入力値を指定する方法を提供するには、 自動入力ルールを使用します。 ユーザーが1つのフィールドに入力すると、その入力内容がRESTサービスに送信されます。 RESTサービスの応答データは、入力パラメータによってフィルタリングされます。
出力パスフィールドは JsonPath構文 で指定されるため、必ず$
で始まる必要があります。 パスが返すデータのタイプは、[Type]フィールドで選択したタイプと一致する必要があります。 restcountries.com
サービスを使用して、[パス]フィールドに$..name
と入力することで、name
フィールドを出力として指定します。 より複雑なJsonPath式を構築する必要がある場合(たとえば、人口1億人以上のすべての国の名前が必要な場合 — restcountries.com
サービスを使用した $..[?(@.population>100000000)].name
)は、 こちら や こちら のようにJsonPath
エバリュエーターを使用することを検討してください。
ある値を表示し、別の値をデータベースに保存するには、[Paths]フィールドにセミコロンで区切って両方を入力します($..name;$..numericCode
)。
restcountries.com
データプロバイダーを使用している場合は、ユーザーには国名が表示され、データベースには数字の国コードが保存されます。