DeltaUpdate 操作

InteractionSpec 内の操作が ApplyChange で、ビジネス・グラフ内に動詞が存在しない場合、アダプターは DeltaUpdate 操作を実行します。アダプターは、ChangeSummary をインスペクションして入力階層内の各ビジネス・オブジェクトの操作を識別し、識別された操作を実行します。

次に示すように、DeltaUpdate 操作は Update 操作とは異なります。
アダプターは、DeltaUpdate による階層ビジネス・オブジェクトの更新時に、以下のステップを実行します。このステップでは 、ChangeSummary から、オブジェクトの変更内容のみが処理されます。
  1. 親オブジェクトの子のうち、単一カーディナリティーのものすべてを再帰的に処理します。ビジネス・オブジェクト仕様で必須にマークされている子は、Inbound オブジェクトに存在していなければなりません。 存在しない場合、DeltaUpdate 操作は失敗し、アダプターがエラーを戻します。
  2. 親に含まれる外部キー値のうち、単一カーディナリティーの子の属性を参照するものすべてを、それぞれ対応する子の値に設定します。この処理が必要なのは、これ以前のステップで、単一カーディナリティーの子がデータベースに追加され、新しいシーケンス値が生成されている可能性があるためです。
  3. 現在処理中のオブジェクトを、SQL Update ステートメントまたはストアード・プロシージャーを使用して更新します。個々のビジネス・オブジェクトのすべての単純属性が更新されます。アダプターは Update ステートメントにどの属性を追加しなければならないかを判断するのに、プロパティー・レベルの変更を使用しません。すべて更新されます。更新されているオブジェクトは固有であるため、アダプターは結果として 1 行のみが処理されていることをチェックします。複数の行が処理される場合、エラーが戻されます。
  4. 現在のオブジェクトのカーディナリティー N のすべての子にある、親の属性を参照する外部キー値をすべて、対応する親の値に設定します。通常、これらの値はデータ・マッピング時に既に相互参照されています。ただし、これはカーディナリティーが N のコンテナーに含まれる新しい子には該当しない場合があります。このステップにより、カーディナリティーが N の子すべての外部キー値が正しい値になってから、それらの子の更新が行われることが徹底されます。
  5. 現在のオブジェクトの、カーディナリティーが N のコンテナーをすべて更新します。
    子オブジェクトが処理されるときには、それぞれの子の動詞が取得され、適切な操作が実行されます。DeltaUpdate で子に対して許可される操作は、Create、 Delete、および Update です。
    • Create 動詞が子で検出された場合、それが所有関係にある子であれば、検出された子がデータベース内に作成されます。所有関係にない子に関しては、検索により、データベースに存在するかどうかが確認されます。
    • Delete 動詞が子で検出された場合、子は削除されます。
    • Update 動詞が子で検出された場合、子はデータベース内で更新されます。
関連概念
Create 操作
Retrieve 操作
RetrieveAll 操作
Update 操作
Delete 操作
ApplyChanges 操作
Execute 操作

ご利用条件 |


(c) Copyright IBM Corporation 2005, 2006.
(C) Copyright IBM Japan 2006
このインフォメーション・センターでは Eclipse テクノロジー (http://www.eclipse.org) が採用されています。