カスタム関係の維持

マッピング API には、関係の参照や識別などの一部の基本的な関係について関係表の操作を処理するメソッドが用意されています。その他の関係については、参加者の追加および削除をユーザーがプログラミングしてカスタム関係を作成できます。

関係属性の変換コードのプログラミング方法は、マップの実行ごとに変動する幾つかの要因により異なります。

通常は、発生する可能性のある各状況を処理する一連のケースとしてコードを構造化します。以下が、通常、考慮する必要のある要因です。

RelationshipIdentityRelationship クラスには、関係インスタンスを作成するメソッドと、参加者インスタンスを追加、削除、および更新するメソッドがあります。Participant クラスには、「set」および「get」メソッドが用意されていて、参加者インスタンスの各種プロパティーを指定および検索することができます。

次のセクションで、カスタム関係の管理方法について説明します。

新規の関係インスタンスの作成

新規の関係インスタンスを作成するには、create() または addMyChildren() メソッドを使用します。 両メソッドとも 1 つの新規の参加者インスタンスで関係インスタンスを作成します。

新規の関係インスタンスを作成する最も一般的な例は、動詞が Create で呼び出しコンテキストが EVENT_DELIVERY (または ACCESS_REQUEST) の場合です。

この場合、アプリケーションによりコラボレーションがサブスクライブする「作成」イベントが生成され、マップによりアプリケーション固有のビジネス・オブジェクトが汎用ビジネス・オブジェクトに変換されます。新規の関係インスタンスを作成するには、関係定義名、追加する参加者の参加者定義名、および参加者に関連するデータを指定する必要があります。

次のコードは、顧客が Clarify アプリケーションに追加された後、CustIden と呼ばれる新規の関係インスタンスを作成します。Clarify を表す参加者定義は、ClarCust と呼ばれます。

instanceId = Relationship.create
 ("CustIden","ClarCust",appBusObj);
 

戻り値 instanceId は、新規の関係インスタンスのインスタンス ID です。

参加者インスタンスの作成

関係に関する新規の参加者インスタンスを作成するには、addParticipant() メソッドを使用します。 新規の参加者インスタンスを作成するのは、通常、次の場合です。

次のコードは、CustIden と呼ばれる関係に新規の参加者インスタンスを追加します。ここでは、動詞は Create、呼び出しコンテキストは SERVICE_CALL_RESPONSE と想定しています。relID 変数には、新規の参加者インスタンスを受け取るための関係インスタンスの ID が含まれます。

instanceId = Relationship.addParticipant("CustIden","SAPCust",
    relID, appBusObj);
 

参加者インスタンスの削除

関係インスタンスから参加者インスタンスを削除するには、表 112 にリストされている Relationship クラスのメソッドの 1 つを使用します。


表 112. 参加者インスタンスを削除するメソッド
Relationship メソッド 説明
deleteParticipant()
関係定義名、参加者定義名、および指定した参加者データと一致するすべての 参加者インスタンスを削除します。
deleteParticipantByInstance()
指定した特定の関係インスタンスから 1 つの 参加者を削除します。
deactivateParticipant() deleteParticipant() と同じですが、参加者のレコードを関係表に残すことが異なります。
deactivateParticipantByInstance() deleteParticipantByInstance() と同じですが、参加者のレコードを関係表に残すことが異なります。

ソース・ビジネス・オブジェクトの動詞が Delete で呼び出しコンテキストが EVENT_DELIVERY (または ACCESS_REQUEST) か SERVICE_CALL_RESPONSE の場合に、通常、参加者インスタンスを削除します。

例: 次のコードは、呼び出しコンテキストが SERVICE_CALL_RESPONSE で動詞が Delete であることを想定しています。このコードは、Clarify 顧客を表す参加者を CustIden 関係から削除します。

Relationship.deleteParticipant
 ("CustIden","ClarCust",appBusObj);
 

Copyright IBM Corp. 2004