Activity Editor には、表 102
に示すような、一致関係に関わる親に属する子オブジェクト・インスタンスを管理するための関数ブロックが用意されています。
関数ブロック | 説明 |
---|---|
General/APIs/Identity Relationship/Add My Children | 子関係インスタンスを親/子関係表に追加します。 |
General/APIs/Identity Relationship/Delete My Children | 親/子関係表から子関係インスタンスを削除します。 |
General/APIs/Identity Relationship/Update My Children | 親/子関係表から子関係インスタンスを削除または追加します。 |
表 102 の関数ブロックでは、渡される親ビジネス・オブジェクトは変更後イメージであることが前提になっています。つまり、動詞の操作が行われた後 のビジネス・オブジェクトのイメージであることが前提になっています。例えば、ビジネス・オブジェクトに、新規の子オブジェクトの追加により発生した更新の Update 動詞がある場合、これらの新規子オブジェクトはビジネス・オブジェクトにすでに存在します。同様に、ビジネス・オブジェクトに、子オブジェクトの削除により発生した更新の Update 動詞がある場合、そのビジネス・オブジェクトでは、該当の子オブジェクトはすでに削除されています。
以下のセクションでは、子インスタンスの管理手順について説明します。
親/子関係 は、親 (1) と子 (多) の 1 対多の関係です。 親/子関係には、次の参加者が含まれます。
表 102 の関数ブロックは、親/子関係の関係表を利用して、特定の親ビジネス・オブジェクトに関連付けられている子ビジネス・オブジェクトを追跡します。
親/子関係の関係定義を作成するには、Relationship Designer Express で次の手順を実行します。
親ビジネス・オブジェクトを展開して、キー属性を選択します。
子ビジネス・オブジェクト (親オブジェクトの子属性ではない) を展開して、この子オブジェクトからキー属性を選択します。
詳細については、"一致関係の定義"を参照してください。
このセクションには、複合一致関係に参加する子オブジェクトが更新時に正しく管理されるようにするための説明があります。
Update My Children 関数ブロックは、親/子関係の関係表を更新します。親/子関係は、子オブジェクトが親ビジネス・オブジェクトに追加されたのか、それとも親ビジネス・オブジェクトから削除されたのかの判別を容易にするために必要です。
指定された親ビジネス・オブジェクトについて、このメソッドでビジネス・オブジェクトの次のイメージが一致することが確認されます。
マップで子ビジネス・オブジェクトが削除されたことを検出するには、親ビジネス・オブジェクトが更新前に持っていた (変更前イメージ) このタイプの子オブジェクトのインスタンス数を判別して、親オブジェクトが現在所持している (変更後イメージ) インスタンス数と比較する必要があります。マップでは、Update My Children 関数ブロックを使用してこの比較を行い、削除または追加されたものを検出することができます。
Update My Children は、変更前イメージと変更後イメージを比較するときに、親ビジネス・オブジェクトに存在しない 子オブジェクトの関係表から、関連する関係インスタンスを除去するかどうかを決定することができます。このメソッドは、次の関係表から関係インスタンスを除去します。
複合一致関係に関わる子オブジェクトの関係表を Update My Children 関数ブロックを使用して保守する場合は、以下のヒントに留意してください。
単純一致関係に関わる子オブジェクトを追跡する場合には、Update My Children 関数ブロックを使用する必要はありません。詳細については、"子レベルの単純一致関係のコーディング"を参照してください。
つまり、メソッドは孫オブジェクトの複合キーが祖父母オブジェクトの値に基づく場合は処理できません。例えば、A がトップレベル・ビジネス・オブジェクト、A の子が B、B の子が C の場合、2 つのメソッドは子オブジェクト C の参加者定義をサポートしません。これは次のようになります。
key attribute of A: ID key attribute of B: B[0].ID key attribute of C: B[0].C[0].ID
key attribute of A: ID key attribute of C: B[0].C[0].ID
孫オブジェクトにアクセスするために、これらのメソッドは次のように参加者定義のみサポートします。
key attribute of B: ID key attribute of C: C[0].ID
key attribute of B: ID first key attribute of C: C[0].ID1 second key attribute of C: C[0].ID2
呼び出しコンテキストが SERVICE_CALL_REQUEST または ACCESS_RESPONSE である場合、Update My Children 関数ブロックを実行しても、この関係表は変更されません。