ビジネス・オブジェクトの変更

ビジネス・オブジェクトを変更すると、各種処理機能を活用することができます。ビジネス・オブジェクトを変更するときは、Business Object Designer を使用します。詳細については、「ビジネス・オブジェクト開発ガイド」を参照してください。

このトピックでは、ビジネス・オブジェクト定義を変更して同期要求処理機能を使用可能にする作業の概要と手順を示します。

メッセージ選択子による応答メッセージのフィルター操作の概要

同期要求処理の場合にビジネス・オブジェクトを受信すると、コネクターは動詞のアプリケーション固有情報に response_selector ストリングが含まれているかどうかを検査します。response_selector が未定義の場合、コネクターは相関 ID を使用して応答メッセージを識別します (Retrieve、Exists、および Retrieve by contentを参照)。

response_selector が定義されている場合、コネクターは以下の構文を持つ名前と値のペアを期 待します。

response_selector=JMSCorrelationID LIKE 'selectorstring'

メッセージ選択子 selectorstring は応答を一意的に識別する必要があります。また、値は以下に示すように単一引用符で囲む必要があります。

response_selector=JMSCorrelationID LIKE 'Oshkosh'

上記の例では、要求メッセージの発行後に、アダプターは「Oshkosh」と等し い correlationID を持つ応答メッセージの ReplyToQueue をモニターします。アダプター はこのメッセージ選択子に一致する最初のメッセージを検索し、これを応答として ディスパッチします。

メッセージ選択子による応答メッセージのフィルター操作のステップ

メッセージ選択子を使用して応答メッセージをフィルター操作するには、以下の手順を実行します。

  1. Business Object Designer を起動します。
  2. 同期メッセージ・デリバリーの対象として変換されるようにするビジネス・オブジェクトを開きます。
  3. 動詞のアプリケーション固有情報に、「response_selector=JMSCorrelationID LIKE 'selectorstring'」と指定します。

    selectorstring は、応答を一意的に識別するためのストリングです。selectorstring に指定されたストリングを相関 ID とする応答がアプリケーションから戻されると、コネクターはその応答を同期要求の応答として識別します。コネクターは、その後、データ・ハンドラーを呼び出してその応答を応答ビジネス・オブジェクトに変換し、要求元のコラボレーションに戻します。
    注:
    selectorstring には複数のストリングを指定することができます。また、特殊文字を指定したり、静的メタオブジェクトや動的メタオブジェクトの属性を参照したり、selectorstring に指定したストリングを置換できるようにしたりすることもできます。詳細については、以下の例を参照してください。

例: 必要に応じて、アダプターによる実行時置換を実行して、それぞれの要求 ごとに固有のメッセージ選択子を生成することもできます。メッセージ選択子の代わりに、整数を中括弧 で囲んだ形式でプレースホルダーを指定することもできます。例えば、'{1}' のようになります。次に、後ろにコロンを付け、置換に使用す る属性をコンマで区切ってリストします。プレースホルダー内の整数は、置換に使用する属性の索引 の役割を持ちます。以下のメッセージ選択子を例にとります。

response_selector=JMSCorrelationID LIKE '{1}': MyDynamicMO.CorrelationID

このメッセージ選択子は、アダプターに {1} を選択子の後ろの最初の属性の値 (この場合は、子オブジェクト MyDynamicMOCorrelationId という属性) に置換す るよう通知します。属性 CorrelationID の値が 123ABC であった場合、アダプターは以下の基準によって作成されたメッセージ選 択子を生成および使用します。

JMSCorrelation LIKE '123ABC'

これによって応答メッセージを識別します。

また、以下のように複数の置換対象を指定することもできます。

response_selector=PrimaryId LIKE '{1}' AND AddressId LIKE '{2}' : PrimaryId, Address[4].AddressId

この例では、アダプターは {1} をトップレベル・ビジネス・オブジェクトの PrimaryId 属性 の値に置換し、{2} を子コンテナー・オブジェクト Address の 5 番目の位置 の AddressId の値に置換します。この方法を使用すると、応答メッセージ選択 子内にあるビジネス・オブジェクトおよびメタオブジェクトのどの属性でも参照 できます。Address[4].AddressId を使用した詳細検索の実行方法に関する 詳細は、JCDK API のマニュアル (getAttribute メソッド) を参照してください。

以下のいずれかの状況が発生した場合、実行時にエラーが報告されます。

例えば、メッセージ選択子にリテラル値「{」または「}」を組み込む場合は 、それぞれ「{{」または「{}」を使用できます。また、これらの文字を属性値に組み込むこともで きます。その場合、最初の「{」は不要です。エスケープ文字を使用した例を以下に示します。 response_selector=JMSCorrelation LIKE '{1}' and CompanyName='A{{P': MyDynamicMO.CorrelationID

コネクターはこのメッセージ選択子を以下のように解決します。

JMSCorrelationID LIKE '123ABC' and CompanyName='A{P'

コネクターが属性値内で特殊文字 (「{」、「}」、「:」、または「;」など) を検 出すると、これらの文字は照会ストリングに直接挿入されます。これにより、アプリケーション固有情報の区切 り文字の役割も持つ特殊文字を照会ストリングに組み込むことができます。

次の例は、リテラル・ストリングの置換値が属性値からどのように抽出されるか を示します。

response_selector=JMSCorrelation LIKE '{1}' and CompanyName='A{{P': MyDynamicMO.CorrelationID

MyDynamicMO.CorrelationID に値 {A:B}C;D が含まれていた場合、コネクターはメッセージ選択子を以下のように解決 します。 JMSCorrelationID LIKE '{A:B}C;D' and CompanyName='A{P'

応答選択子コードに関する詳細は、JMS 1.0.1 仕様を参照してください。

Copyright IBM Corp. 2003, 2005