子インスタンスの管理

Activity Editor には、表 102 に示すような、一致関係に関わる親に属する子オブジェクト・インスタンスを管理するための関数ブロックが用意されています。

表 102. 子インスタンスを管理するための関数ブロック
関数ブロック 説明
General/APIs/Identity Relationship/Add My Children 子関係インスタンスを親/子関係表に追加します。
General/APIs/Identity Relationship/Delete My Children 親/子関係表から子関係インスタンスを削除します。
General/APIs/Identity Relationship/Update My Children 親/子関係表から子関係インスタンスを削除または追加します。

注:
表 102 に示した関数ブロックの最も一般的な用途は、複合一致関係を含むカスタム関係に関わる子ビジネス・オブジェクトの保守です。

表 102 の関数ブロックでは、渡される親ビジネス・オブジェクトは変更後イメージであることが前提になっています。つまり、動詞の操作が行われた のビジネス・オブジェクトのイメージであることが前提になっています。例えば、ビジネス・オブジェクトに、新規の子オブジェクトの追加により発生した更新の Update 動詞がある場合、これらの新規子オブジェクトはビジネス・オブジェクトにすでに存在します。同様に、ビジネス・オブジェクトに、子オブジェクトの削除により発生した更新の Update 動詞がある場合、そのビジネス・オブジェクトでは、該当の子オブジェクトはすでに削除されています。

以下のセクションでは、子インスタンスの管理手順について説明します。

親/子関係定義の作成

親/子関係 は、親 (1) と子 (多) の 1 対多の関係です。 親/子関係には、次の参加者が含まれます。

表 102 の関数ブロックは、親/子関係の関係表を利用して、特定の親ビジネス・オブジェクトに関連付けられている子ビジネス・オブジェクトを追跡します。

親/子関係定義の作成手順

親/子関係の関係定義を作成するには、Relationship Designer Express で次の手順を実行します。

  1. 参加者タイプが親ビジネス・オブジェクトである参加者定義を作成します。
  2. 参加者属性を親ビジネス・オブジェクトのキーに設定します。

    親ビジネス・オブジェクトを展開して、キー属性を選択します。

  3. 参加者タイプが子ビジネス・オブジェクトである参加者定義を作成します。
  4. 参加者属性を子属性のキーに追加します。

    子ビジネス・オブジェクト (親オブジェクトの子属性ではない) を展開して、この子オブジェクトからキー属性を選択します。

注:
親子関係は、子オブジェクトが固有キーを持たない 場合にのみ維持する必要があります。つまり、子オブジェクトはその親のコンテキスト内にのみ 存在します。

詳細については、"一致関係の定義"を参照してください。

親ビジネス・オブジェクトに対する更新処理

このセクションには、複合一致関係に参加する子オブジェクトが更新時に正しく管理されるようにするための説明があります。

変更前イメージと変更後イメージの比較

Update My Children 関数ブロックは、親/子関係の関係表を更新します。親/子関係は、子オブジェクトが親ビジネス・オブジェクトに追加されたのか、それとも親ビジネス・オブジェクトから削除されたのかの判別を容易にするために必要です。

指定された親ビジネス・オブジェクトについて、このメソッドでビジネス・オブジェクトの次のイメージが一致することが確認されます。

マップで子ビジネス・オブジェクトが削除されたことを検出するには、親ビジネス・オブジェクトが更新前に持っていた (変更前イメージ) このタイプの子オブジェクトのインスタンス数を判別して、親オブジェクトが現在所持している (変更後イメージ) インスタンス数と比較する必要があります。マップでは、Update My Children 関数ブロックを使用してこの比較を行い、削除または追加されたものを検出することができます。

Update My Children は、変更前イメージと変更後イメージを比較するときに、親ビジネス・オブジェクトに存在しない 子オブジェクトの関係表から、関連する関係インスタンスを除去するかどうかを決定することができます。このメソッドは、次の関係表から関係インスタンスを除去します。

注:
Update My Children は、親ビジネス・オブジェクトに存在する (しかし子関係表には存在しない) 子オブジェクトの関係表にインスタンスを追加することもできます。ただし、複合一致関係のコンテキストで呼び出された場合には、この処理は必要ありません。親オブジェクトの新規子オブジェクトは、いずれも Maintain Composite Relationship 関数ブロックによってすでに関係表に追加されています。詳細については、"General/APIs/Identity Relationship/Maintain Composite Relationship のアクション"を参照してください。

Update My Children の使用についてのヒント

複合一致関係に関わる子オブジェクトの関係表を Update My Children 関数ブロックを使用して保守する場合は、以下のヒントに留意してください。

Copyright IBM Corp. 2004