動詞の処理

アダプターは、各ビジネス・オブジェクトに対する動詞に基づいて、コラボレーションから渡されたビジネス・オブジェクトを処理します。アダプターは、ビジネス・オブジェクト・ハンドラーと doForVerb() メソッドを使用して、アダプターがサポートするビジネス・オブジェクトを処理します。アダプターがサポートするビジネス・オブジェクトの動詞は、以下のとおりです。

注:
Create、Update、Delete の動詞を使用するビジネス・オブジェクトは、非同期、同期のどちらでも発行できます。デフォルト・モードは非同期です。アダプターは、Retrieve、Exists、Retrieve by Content の動詞を使用するビジネス・オブジェクトについては、非同期転送をサポートしていません。したがって、Retrieve、Exists、Retrieve by Content の動詞の場合のデフォルト・モードは、同期です。

Create、Update、Delete

Create、Update、Delete の動詞を使用するビジネス・オブジェクトの処理は、そのオブジェクトの発行が非同期か同期かによって異なります。

非同期の引き渡し

Create、Update、Delete の動詞を使用するビジネス・オブジェクトのデフォルトの転送モードは、非同期です。メッセージは、データ・ハンドラーを使用してビジネス・オブジェクトから作成され、出力キューに書き込まれます。メッセージが引き渡されると、アダプターは BON_SUCCESS を戻します。引き渡されなかった場合は、BON_FAIL を戻します。

注:
アダプターには、メッセージを受け取ったかどうかや、アクションが実行されたかどうかを検証する方法はありません。

同期の引き渡し

注:
この方法を行う場合は、InterChange Server Express からビジネス・オブジェクトを受け取ったときに WebSphere Commerce で実行するコマンドをカスタマイズする必要があります。このコマンドは、メッセージから「ReplyTo」キューを取得し、ResponseTimeout 間隔内に応答をそのキューに入れる、というものです。WebSphere Commerce でのコマンドの作成とカスタマイズについては、「WebSphere Commerce プログラマーズ・ガイド 5.4」を参照してください。

コネクター・プロパティーで replyToQueue が定義されていて、ResponseTimeout がビジネス・オブジェクトの変換プロパティーに存在する場合、アダプターは同期モードで要求を発行します。次に、アダプターは、応答を待機し、WebSphere Commerce によって適切なアクション行われたことを検証します。

アダプターは、まず、表 1 に示すようなヘッダー付きのメッセージを発行します。

表 1. 要求メッセージの記述子ヘッダー (MQMD)
フィールド 説明

Format

フォーマットの名前。

変換プロパティーで定義されている出力フォーマット。IBM 要件に従い 8 文字に切り捨てられます (例: MQSTR)。

MessageType

メッセージのタイプ。

MQMT_DATAGRAM*

Report

要求されたレポート・メッセージのオプション。

応答メッセージが必要な場合は、このフィールドに以下の値を指定します。

MQRO_PAN*: 処理が成功した場合にはポジティブ・アクション・レポートが必要なことを示します。

MQRO_NAN*: 処理が失敗した場合にはネガティブ・アクション・レポートが必要なことを示します。

MQRO_COPY_MSG_ID_TO_CORREL_ID*: 生成されたレポートの相関 ID が、最初に発行された要求のメッセージ ID と等しくなければならないことを示します。

ReplyToQueue

応答キューの名前。

応答メッセージが必要な場合は、このフィールドにコネクター・プロパティー ReplyToQueue の値を指定します。

Persistence

メッセージの永続性。

MQPER_PERSISTENT*

Expiry

メッセージの存続時間。

MQEI_UNLIMITED*

* IBM で定義されている定数を示します。

表 1 に示されているメッセージ・ヘッダーは、メッセージ本体の前に入ります。メッセージ本体は、データ・ハンドラーを使用してシリアライズされたビジネス・オブジェクトです。

Report フィールドは、WebSphere Commerce からポジティブとネガティブの両方のレポートが要求されていることを示すように設定します。メッセージを発行したスレッドは、WebSphere Commerce が要求を処理できたかどうかを示す応答メッセージを待機します。

WebSphere Commerce は、アダプターから同期要求を受け取ると、ビジネス・オブジェクトのデータを処理し、レポート・メッセージを発行します (表 2表 3、および 表 4 を参照)。

表 2. 応答メッセージの記述子ヘッダー (MQMD)
フィールド 説明

Format

フォーマットの名前。

変換プロパティーで定義されている busObj の入力フォーマット。

MessageType

メッセージのタイプ。

MQMT_REPORT*

* IBM で定義されている定数を示します。


表 3. 応答メッセージの生成
動詞 フィードバック・フィールド メッセージ本体

Create、Update、Delete

SUCCESS VALCHANGE

(オプション) 変更を反映しているシリアライズされたビジネス・オブジェクト。


VALDUPES FAIL

(オプション) エラー・メッセージ。


表 4. WebSphere MQ のフィードバック・コードと InterChange Server Express の応答値。
WebSphere MQ のフィードバック・コード 対応する InterChange Server Express の応答

MQFB_PAN または MQFB_APPL_FIRST

SUCCESS

MQFB_NAN または MQFB_APPL_FIRST + 1

FAIL

MQFB_APPL_FIRST + 2

VALCHANGE

MQFB_APPL_FIRST + 3

VALDUPES

MQFB_APPL_FIRST + 4

MULTIPLE_HITS

MQFB_APPL_FIRST + 5

FAIL_RETRIEVE_BY_CONTENT

MQFB_APPL_FIRST + 6

BO_DOES_NOT_EXIST

MQFB_APPL_FIRST + 7

UNABLE_TO_LOGIN

MQFB_APPL_FIRST + 8

APP_RESPONSE_TIMEOUT (その結果、即時にコネクターが終了します)

MQFB_NONE

応答メッセージにフィードバック・コードが指定されていない場合にコネクターが受け取る情報

ビジネス・オブジェクトを処理できる場合、アプリケーションは、フィードバック・フィールドを MQFB_PAN (または特定の InterChange Server Express 値) に設定したレポート・メッセージを作成します。必要に応じて、アプリケーションは、メッセージ本体に、変更が加えられているシリアライズされたビジネス・オブジェクトを取り込みます。ビジネス・オブジェクトを処理できない場合、アプリケーションは、フィードバック・フィールドを MQFB_NAN (または特定の InterChange Server Express 値) に設定したレポート・メッセージを作成し、必要に応じてメッセージ本体にエラー・メッセージを組み込みます。いずれの場合も、アプリケーションは、メッセージの correlationID フィールドを、アダプター・メッセージの messageID に設定し、replyTo フィールドで指定されたキューに、そのメッセージを発行します。

応答メッセージを取得すると、アダプターは、応答の correlationID を要求メッセージの messageID と突き合わせます。次に、要求の発行元スレッドに通知します。応答のフィードバック・フィールドに応じて、アダプターは、メッセージ本体にビジネス・オブジェクトとエラー・メッセージのいずれが入っているかを判断します。ビジネス・オブジェクトが含まれていると予測したにもかかわらず、メッセージの本体にビジネス・オブジェクトが取り込まれていなかった場合、アダプターは InterChange Server Express が Request 操作のために最初に発行したのと同じビジネス・オブジェクトを単純に返送します。予期されたエラー・メッセージがメッセージ本体にない場合、応答コードと共に汎用のエラー・メッセージが InterChange Server Express に戻されます。

カスタム・フィードバック・コードの作成

WebSphere MQ フィードバック・コードを拡張して、表 4 に示すデフォルトの解釈をオーバーライドするには、コネクター・プロパティー FeedbackCodeMappingMO を指定します。このプロパティーにより、InterChange Server Express 固有の戻り状況値がすべて WebSphere MQ のフィードバック・コードにマッピングされるメタオブジェクトを作成することができます。

フィードバック・コードに割り当てられた戻り状況は、InterChange Server Express に渡されます。詳細については、"FeedbackCodeMappingMO"を参照してください。

Retrieve、Exists、および Retrieve By Content

Retrieve、Exists、Retrieve by Content の動詞を使用するビジネス・オブジェクトは、同期転送しかサポートしていません。コネクターがこれらの動詞を使用するビジネス・オブジェクトを処理する方法は、Create、Update、Delete で定義されている同期転送の場合と同じです。ただし、Retrieve、Exists、Retrieve by Content の動詞を使用している場合は、responseTimeoutreplyToQueue が必要です。さらに、Retrieve 動詞と Retrieve by Content 動詞の場合は、トランザクションを完了するために、メッセージ本体にシリアライズされたビジネス・オブジェクトを取り込む必要があります。

表 5 に、これらの動詞の応答メッセージを示します。

表 5. 応答メッセージの生成
動詞 フィードバック・フィールド メッセージ本体

Retrieve または RetrieveByContent

FAIL FAIL_RETRIEVE_BY_CONTENT

(オプション) エラー・メッセージ。


MULTIPLE_HITS SUCCESS

シリアライズされたビジネス・オブジェクト。

Exist

FAIL

(オプション) エラー・メッセージ。


SUCCESS


Copyright IBM Corp. 2004