データプロバイダーは GeneXus のオブジェクトであり、簡単でハイレベルな宣言型でデータコレクション (例: 顧客一覧) やデータ構造 (例: 顧客データ) を提供することを目的としています。 出力は階層構造です: GeneXus では、これらを構造化データタイプ (SDT)、ビジネスコンポーネント (BC)、または SDT や BC のコレクションとして表します。 データプロバイダーの長所は、出力にフォーカスしている点にあります。これにより、GeneXus アナリストは、階層出力構造のデータアイテムをどのように取得するかを宣言するだけで済みます。 次に示すように、Customer トランザクションが定義済みであるとします:
たとえば Web パネルなどのほかのオブジェクトに送信できるよう、顧客データベースをコレクションにロードする必要があると仮定します。
最初に、顧客のデータをロードするための SDT を定義する必要があります。ここで注意しなければならないのは、SDT にトランザクションと同じ名前は付けられないことです。したがって、SDT の名前を Clients にします。次に、コレクションを操作する 2 つの方法について、次のことを検討します。次に示すように、どちらを選択することもできます。
Clients コレクション SDT を定義します:
次に、データプロバイダーを作成します。このデータプロバイダーの名前を「CustomersProvider」とします。作業を減らすために、データプロバイダー作成後に Clients SDT をドラッグします。ソースは次のようになります:
ユーザーは、右側に順に CustomerId および CustomerName の値を入力するだけです。 [ Output ] プロパティは、ドラッグ アンド ドロップ操作で自動的に設定されますが、このプロパティには特に注意が必要です。次の図に、データプロバイダーの出力にする SDT を指定する方法を示します:
|
[ Collection ] プロパティに注意してください。もう 1 つのオプションでは、このプロパティを True に変更します。 |
以降の手順は簡単に行えます。上の画像の Web パネルのような顧客一覧を必要とするオブジェクトから、データプロバイダーの出力を受け取るには Clients SDT データタイプ変数を定義するだけで済みます (たとえば、XML フォーマットに変換するだけ)。
&clients = CustomersProvider()
&xml = &clients.toXML()
詳細については、「ほかの GX オブジェクトでのデータプロバイダーの使用」を参照してください。
Client の SDT を定義します:
1 つ目のオプションと同様に、ここで「CustomersProvider」データプロバイダーを作成する必要があります。前の手順と同じ方法で Client の SDT を [ Source ] エリアにドラッグすると次のようになります:
|
[ Output ] プロパティ:
このプロパティは変更する必要があります。顧客のコレクションをロードする必要があるため、 [ Collection ] プロパティを次のように変更します:
|
[ Collection ] を True に変更すると、 [ Collection Name ] プロパティが表示されます。コレクションの名前を入力して、その名前のグループをルートに追加することにより、ソースを変更します。
以降は 1 つ目のオプションと同様です (Client の SDT データタイプのコレクションとして &clients 変数を定義します)。
|