イベント処理

イベント通知のため、コネクターは、データベース・トリガーではなくアプリケーションによってキューに書き込まれたイベントを検出します。イベントは、SWIFTAlliance が SWIFT メッセージを生成し、それを WebSphere MQ キューに保管したときに発生します。

検索

コネクターはポーリング・メソッドを使用して WebSphere MQ 入力キューからメッセージを定期的にポーリングします。メッセージが見つかった場合、コネクターはメッセージを WebSphere MQ 入力キューから取り出して検討し、そのフォーマットを判断します。フォーマットがコネクターの静的メタオブジェクトまたは子メタオブジェクトで定義されている場合、コネクターはデータ・ハンドラーを使用して動詞を持つ適切なビジネス・オブジェクトを生成します。

進行中のキュー

コネクターがメッセージを処理するときには、最初に WebSphere MQ キューへのトランザクション・セッションが開始されます。このトランザクションのアプローチによって、ビジネス・オブジェクトがビジネス・プロセスに 2 回デリバリーされる可能性があります。これは、コネクターがビジネス・オブジェクトのサブミットには成功するが、キュー内のトランザクションのコミットに失敗することが原因です。この問題を回避するために、コネクターは、すべてのメッセージを進行中キューに移動します。進行中キューでは、メッセージは処理が完了するまで保持されます。処理中にコネクターの予期しないシャットダウンが発生した場合、進行中キュー内のメッセージは、元の WebSphere MQ キューに復元されずにそのまま保持されます。

注:
JMS サービス・プロバイダーとのトランザクション・セッションでは、キュー内の要求されたアクションがすべて実行され、キューからイベントが除去される前にコミットされる必要があります。そのため、コネクターはキューからメッセージを取り出すと、1) メッセージがビジネス・オブジェクトに変換されるか、2) ビジネス・オブジェクトが InterChange Server Express に送信されるか、3) 戻り値が受信されるまで、検索にコミットしません。

同期確認通知

Connector for SWIFT は、発行した要求に関するフィードバックを必要とするアプリケーションをサポートするために、レポート・メッセージをアプリケーションに返送します。このレポート・メッセージには、アプリケーションからの要求の処理が完了した時点での結果が詳細に記述されます。

この処理を実現するために、コネクターはこのような要求のビジネス・データを InterChange Server Express に同期的に通知します。ビジネス・オブジェクトを正常に処理した場合、コネクターは InterChange Server Express からの戻りコードとビジネス・オブジェクトのすべての変更を含むレポートを、要求を発行したアプリケーションに返送します。コネクターまたは InterChange Server Express がビジネス・オブジェクトの処理に失敗した場合、コネクターは、該当するエラー・コードとエラー・メッセージを含むレポートを返送します。

いずれの場合も、Connector for SWIFT に要求を送信するアプリケーションは、要求の結果について通知されます。

Connector for SWIFT が肯定確認通知レポートまたは否定確認通知レポート (PAN または NAN) を要求するメッセージを受け取った場合、コネクターはそのメッセージの内容を InterChange Server Express に同期的に通知し、レポート・メッセージに戻りコードと変更されたビジネス・データを組み込んで、要求を発行したアプリケーションに返送します。

表 1 に、コネクターに送信されたメッセージが同期的に処理されるために必要な構造を示します。

表 1. 同期 WebSphere MQ メッセージに必要な構造
MQMD フィールド
(メッセージ記述子)
説明 サポートされる値 (複数の値がある場合は OR として扱います)
MessageType メッセージ・タイプ DATAGRAM
Report 必要なレポート・メッセージのオプション

次のいずれか一方、または両方を指定できます。

  • MQRO_PAN コネクターは、ビジネス・オブジェクトが正常に処理された場合にレポート・メッセージを送信します。
  • MQRO_NAN コネクターは、ビジネス・オブジェクトの処理中にエラーが発生した場合にレポート・メッセージを送信します。

次のいずれかの値を指定すると、レポート・メッセージの相関 ID の設定方法を制御できます。

  • MQRO_COPY_MSG_ID_TO_CORREL_ID コネクターは、要求メッセージのメッセージ ID をレポートの相関 ID にコピーします。これはデフォルトのアクションです。
  • MQRO_PASS_CORREL_IDコネクターは、要求メッセージの相関 ID をレポートの相関 ID にコピーします。

ReplyToQueue 応答キューの名前 レポート・メッセージの送信先となるキューの名前。
ReplyToQueueManager キュー・マネージャーの名前

レポート・メッセージの送信先となるキュー・マネージャーの名前。

メッセージ本文

コネクターに構成されているデータ・ハンドラーと互換性のあるフォーマットで直列化されたビジネス・オブジェクト。

表 1 で説明したメッセージを受け取ると、コネクターは以下の処理を行います。

  1. 構成されているデータ・ハンドラーを使用して、メッセージの本文に含まれるビジネス・オブジェクトを再構成します。
  2. ビジネス・オブジェクトに指定されたビジネス・プロセスおよび静的メタデータ・オブジェクトの動詞を検索します。
  3. 指定されたプロセスに、ビジネス・オブジェクトを同期的に通知します。
  4. 処理の結果とビジネス・オブジェクトのすべての変更またはエラー・メッセージをカプセル化したレポートを生成します。
  5. 要求の replyToQueue および replyToQueueManager フィールド内で指定されたキューに、レポートを送信します。

表 2 に、コネクターから要求を発行したアプリケーションに送信されるレポートの構造を示します。

表 2. 要求を発行したアプリケーションに返送されるレポートの構造
MQMD フィールド 説明 サポートされる値 (複数の値がある場合は OR として扱います)
MessageType メッセージ・タイプ REPORT
feedback レポートのタイプ

次のいずれかです。

  • MQRO_PAN ビジネス・オブジェクトが正常に処理された場合に、レポートが返送されます。
  • MQRO_NAN 要求の処理中にコネクターまたは InterChange Server Express がエラーを検出した場合に、レポートが返送されます。

メッセージ本文

ビジネス・オブジェクトが正常に処理された場合、コネクターはメッセージの本文に InterChange Server Express から戻されたビジネス・オブジェクトを取り込みます。このデフォルトの動作は、静的メタデータ・オブジェクトの DoNotReportBusObj プロパティーを true に設定することによりオーバーライドできます。

要求を処理できなかった場合、コネクターはメッセージの本文にコネクターまたは InterChange Server Express によって生成されたエラー・メッセージを取り込みます。

リカバリー

コネクターの初期化時には、コネクターのシャットダウンなどが原因で完全に処理されなかったメッセージが進行中キュー内にあるかどうかが検査されます。コネクター構成プロパティー InDoubtEvents を使用すると、このようなメッセージのリカバリー処理のための 4 つのオプション (fail on startup、reprocess、ignore、または log error) のうちの 1 つを指定できます。

始動時の失敗 (Fail on startup)

Fail on Startup オプションを使用すると、コネクターの初期化時に進行中キュー内のメッセージが検出された場合、エラー・ログは記録されますが、コネクターは即時にシャットダウンします。メッセージを調べて適切な処置を行う (これらのメッセージを完全に削除するか、または別のキューに移動する) のは、ユーザーまたはシステム管理者の役割です。

再処理 (Reprocess)

Reprocess オプションを使用すると、コネクターの初期化時に進行中キュー内のメッセージが検出された場合、以降のポーリング中にこれらのメッセージが最初に処理されます。コネクターは、進行中キュー内のメッセージをすべて処理した後で、入力キューからのメッセージの処理を開始します。

無視 (Ignore)

Ignore オプションを使用すると、コネクターの初期化時に進行中キュー内のメッセージが検出された場合、これらのメッセージは無視されますが、コネクターはシャットダウンしません。

エラー・ログ記録 (Log Error)

Log Error オプションを使用すると、コネクターの初期化時に進行中キュー内のメッセージが検出された場合、エラー・ログが記録されますが、コネクターはシャットダウンしません。

アーカイブ

コネクター・プロパティー ArchiveQueue が指定されて有効なキューを示す場合、コネクターは正常に処理されたすべてのメッセージのコピーをアーカイブ・キューに入れます。ArchiveQueue が定義されていない場合は、メッセージは処理後に廃棄されます。

Copyright IBM Corp. 2004