最近のアクセス:
ページ
履歴
バックリンク
ほかのトランザクションのビューとしてのダイナミックトランザクション
GeneXus 15
では、データモデリングとトランザクションの機能について興味深いいくつかの改善が行われています。具体的には、
データプロバイダーを関連付けた
トランザクションを定義できます。これにより、トランザクションの基本機能と特殊な機能 (
ダイナミックトランザクション
など) を利用できるようになります。
この改善にともなう影響として、開発がトランザクション/項目属性のパラダイムへと向かう傾向が強くなります。GeneXus 開発者はこのパラダイムを十分に理解しており、制御が可能なため、開発がより簡単になります。
「基本機能」の適用例: トランザクションにデータプロバイダー (
トランザクションの [ Data Provider ] プロパティ
) を関連付けるように定義すると、興味深い処理 (例: データプロバイダーからの作成/再編成時におけるトランザクションのデータの挿入) を実行できます。これにより、「ロードプロシージャー」が不要になり、それらの実行について開発者が頭を悩ます必要もなくなります。
「特殊な機能」の例 (ダイナミックトランザクション): これらのプロパティを使用して、トランザクションを「挿入する」データプロバイダーを定義することで、トランザクションをそのほかのトランザクションの「ビュー」(SQL の VIEW) として定義できます。たとえば、1 つのトランザクションを複数の構造の UNION として設定し、単一のトランザクションとして管理できます。
このような定義の適用範囲は無数にあります。次に示す非常に小規模な例で、複数のトランザクションの情報を 1 つにコンソリデートして、後からまとめて使用する方法を説明します。この場合、これらのダイナミックトランザクションで For each コマンドやデータプロバイダーなどを使用したり、ほかのトランザクションでそれらを外部キーとして使用したりできることが分かります。
例
「Sales」という GeneXus アプリケーションには、Product、Service、および Purchase Order (PO) の各レベルがあり、それぞれに 2 つのサブレベル (Products sold と Services sold) があります。
この例はきわめて簡略化されており、実際には Product と Service の 2 つには、各エンティティ固有の項目属性が用意されています。Product には色やサイズ、Service には期間やコストなどの項目属性があります。
この場合、データプロバイダーを関連付けたダイナミックトランザクション (ProductAndService) を定義できます。このトランザクションは、Service と Product の構造にデータを "ロード" します (赤い矢印)。つまり、このトランザクションは、2 つのトランザクションの UNION を実装する VIEW です (冗長データを作成する実際のロードではないため、"ロード" と引用符付きで表現しました)。
この定義が完了すると、ProductAndService のキーを外部キーとして指定したサブレベルを 1 つだけ PO トランザクションに含めることができます。
同様に、項目属性に直接言及することによって、この "テーブル" にアクセスする Web パネルを作成できます。また、トランザクションをサービスとして表示できます。「
データ更新のためのダイナミックトランザクション
」で説明したとおり、Insert、Update、および Delete の各メソッドをダイナミックトランザクションで実装できます。
実行の確認
前述の例を
こちら
で実行できます。
ProductAndService トランザクション
は Product と Service 間の UNION になり、
PO トランザクション
のサブレベルです。
実装
オブジェクトの定義方法やオブジェクトのプロパティなどを確認する場合は、
こちら
からナレッジベースを参照できます。
要点
ProductAndService トランザクションにはデータプロバイダーが関連付けられます。このトランザクションはデータの取得に使用されます:
既定で作成されたデータプロバイダーは、データの取得元を定義するため、次のように変更されました:
注: ダイナミックトランザクション (
ProductAndService
) では、Product のキーを Service のキーと同じにすることができるため、主キーの一部として Type 項目属性 (P または S) が追加されました。
この例における "トランザクションのデータを初期化するデータプロバイダー" の概念は、Product トランザクションと Service トランザクションにも使用されます。