このセクションでは、マップに参加しているビジネス・オブジェクトの動詞の設定方法について説明します。
宛先ビジネス・オブジェクトの動詞の設定の詳細については、"宛先ビジネス・オブジェクトの動詞の設定"を参照してください。
通常、動詞に関しては、「移動」変換を定義して宛先動詞にソース動詞の値を設定するだけで十分です。(このアクションの詳細については、"宛先ビジネス・オブジェクトの動詞の設定"を参照。)しかし、ソース・アプリケーションで通常と異なる方法でビジネス・オブジェクト動詞が設定されることがあります。例えば、イベントが新規でも動詞に Update が設定される場合です。 別の例では、動詞に常に Retrieve が設定される場合があります。このような状況の場合、マップで宛先動詞を実際のイベントに対応する動詞にリセットする必要があります。
ソース・ビジネス・オブジェクトのキーが関係に参加する場合、マップにより関係表の静的参照 を実行して、ソース・ビジネス・オブジェクトが存在するかどうかを判別できます。
その後、対応するエントリーがテーブル内で検出されるかどうかに基づいて、マップで宛先動詞に
Update または Create のいずれかを宛先動詞に設定できます。
この静的参照は、参照関係にアクセスする方法とおおよそ同じ方法で行います。表 103 に、各種の静的参照に使用する関数ブロックを示します。
ソース・ビジネス・オブジェクトのタイプ | マップ・タイプ | 関数ブロック |
---|---|---|
アプリケーション固有 | インバウンド |
General/APIs/Relationship/
Retrieve Instances |
汎用 | アウトバウンド |
General/APIs/Relationship/
Retrieve Participants |
次の例では、インバウンド・マップで、条件に従って参照の結果を基に宛先動詞を設定できるようにする方法を示します。
アウトバウンド・マップでも、前述の手順と同様の手順により、汎用オブジェクトの基本キーを基に静的参照を実行することができます。ただし、そのためには、General/APIs/Relationship/Retrieve Instances の関数ブロックではなく、General/APIs/Relationship/Retrieve Participants の関数ブロックを使用する必要があります。手順は以下のとおりです。
親ソース・ビジネス・オブジェクトが子ビジネス・オブジェクトを持つ場合、ソース子動詞の値は、通常、親動詞の値と同じです。したがって、ソース子オブジェクトの動詞は、親動詞から子動詞への「移動」変換を定義することによって設定します。ただし、親オブジェクトの動詞が
Update の場合、更新は 表 104 に示すなんらかの変更の結果です。
更新タスク | 子オブジェクトの動詞 |
---|---|
親オブジェクト内の一部の子以外の属性の変更 | Update |
子オブジェクト内の一部の属性の変更 | Update |
子オブジェクトをさらに追加 | Create |
既存の子オブジェクトの削除 | Delete |
表 104 のすべての変更は、親オブジェクトでは Update 動詞で表されます。しかし、この変更のすべてが子オブジェクトに対する更新を表すわけではありません。ソース子動詞の値は、親動詞で行われたアクションにより異なります。子オブジェクトのキーが一致関係 (複合または単純) に参加する場合、ソース子動詞の値は親動詞だけでなく呼び出しコンテキストにも依存します。 このような場合は、Maintain Child Verb 関数ブロックを使用して、ソース子オブジェクトの動詞を設定します。
このセクションでは、Maintain Child Verb 関数ブロックを使用してソース子オブジェクトの動詞を維持する方法について説明します。
Maintain Child Verb 関数ブロックは、親ソース・オブジェクトの動詞と呼び出しコンテキストが与えられると、それに応じてソース・ビジネス・オブジェクトの子オブジェクトの動詞を適切に設定します。このメソッドが行うアクションは、親ソース・オブジェクトの動詞と呼び出しコンテキストにより異なります。
呼び出しコンテキストが EVENT_DELIVERY または
ACCESS_REQUEST
の場合、呼び出されるマップはインバウンド・マップです。つまり、アプリケーション固有のビジネス・オブジェクトが汎用ビジネス・オブジェクトに変換されます。インバウンド・マップはアプリケーション固有のビジネス・オブジェクトを入力として受け取り、汎用ビジネス・オブジェクトを出力として戻します。EVENT_DELIEVERY
(または ACCESS_REQUEST)
の場合、子動詞の設定時に処理する特別なケースはありません。したがって、maintainChildVerb()
メソッドは、表 105
に示すように、すべての動詞の値に関して親動詞を子動詞にコピーするのみです。
表 105. EVENT_DELIVERY および ACCESS_REQUEST 呼び出しコンテキストのアクション
汎用ビジネス・オブジェクトの動詞 | Maintain Child Verb 関数ブロックが実行するアクション |
---|---|
Create、Delete、 Update、Retrieve | ソース・オブジェクト内のすべての子オブジェクトの動詞を親ソース・オブジェクト内の動詞に設定します。このアクションにより、子オブジェクト内のすべての既存の動詞が上書きされます。 |
呼び出しコンテキストが SERVICE_CALL_REQUEST
の場合、呼び出されるマップはアウトバウンド・マップです。つまり、汎用ビジネス・オブジェクトがアプリケーション固有のビジネス・オブジェクトに変換されます。アウトバウンド・マップは汎用ビジネス・オブジェクトを入力として受け取り、アプリケーション固有のビジネス・オブジェクトを出力として戻します。呼び出しコンテキストが
SERVICE_CALL_REQUEST の場合、Maintain Child Verb
関数ブロックに対応する Java コードは、Update
動詞に関連する特別なケースを処理します。親オブジェクトの変更の内容が新しい子オブジェクトの作成である場合には、Maintain
Child Verb
関数ブロックは、現在関係表に存在しない子オブジェクトのすべてで動詞を Create
に変更します (表 106 を参照)。
表 106. SERVICE_CALL_REQUEST 呼び出しコンテキストのアクション
呼び出しコンテキストが SERVICE_CALL_RESPONSE の場合、呼び出されるマップはインバウンド・マップです。つまり、アプリケーション固有のビジネス・オブジェクトが汎用ビジネス・オブジェクトに変換されます。インバウンド・マップはアプリケーション固有のビジネス・オブジェクトを入力として受け取り、汎用ビジネス・オブジェクトを出力として戻します。
Maintain Child Verb 関数ブロックの振る舞いは、対応するメソッドの、最後から
2 番目に指定されるパラメーターに応じて決まります。このパラメーターは
to_Retrieve boolean 値フラグで、その値は、表 107
に示すように、コラボレーション要求を処理するときに子オブジェクトの動詞をアプリケーションでリセットするかまたは保持するかどうかを示します。
to_Retrieve フラグの値 | コネクターの振る舞い |
---|---|
true | コネクターにより、子オブジェクトの動詞がアプリケーションに入力された動詞とは別の値に設定されます。
例えば、ビジネス・オブジェクトはコネクターに親動詞の Update と子動詞の Create で入力された場合、アプリケーションが操作を完了後、コネクターによりすべての子オブジェクト動詞がその親の値にリセットされることがあります。この場合、子動詞は Update に変更されます。 |
false | コネクターにより子オブジェクト動詞は保持されます。
例えば、ビジネス・オブジェクトがコネクターに親動詞が Update、子動詞が Create で入力された場合、コネクターによりすべての子オブジェクト動詞が保持されます。この場合、子動詞は Create のままです。 |
引き数 to_Retrieve が true
の場合、Maintain Child Verb 関数ブロックは、表 108 に示すタスクを実行します。
表 108. SERVICE_CALL_RESPONSE 呼び出しコンテキストのアクション
Maintain Child Verb 関数ブロックは、ソース・ビジネス・オブジェクトの子オブジェクトの動詞を維持します。また、単純または複合一致関係の一部である子オブジェクトを処理することができます。この関数ブロックは、親ソース・オブジェクトの動詞と呼び出しコンテキストが与えられると、それに応じて動詞を適切に設定します。
Maintain Child Verb 関数ブロックを使用する場合は、以下のヒントに留意してください。
to_Retrieve フラグの設定方法の詳細については、"SERVICE_CALL_RESPONSE 呼び出しコンテキスト"を参照してください。
子ビジネス・オブジェクトのキー属性は、次の種類の一致関係のいずれかに参加できます。
子オブジェクトが複数カーディナリティーの子オブジェクトである場合は、for ループの開始の直前 に Maintain Child Verb 関数ブロックを使用します。対応するメソッドによって子オブジェクトが繰り返し処理され、子の動詞が正しく設定されます。