イベント通知のため、コネクターは、データベース・トリガーではなくアプリケーションによってキューに書き込まれたイベントを検出します。イベントは、SWIFTAlliance が SWIFT メッセージを生成し、それを WebSphere MQ キューに保管したときに発生します。
コネクターはポーリング・メソッドを使用して WebSphere MQ 入力キューからメッセージを定期的にポーリングします。メッセージが見つかった場合、コネクターはメッセージを WebSphere MQ 入力キューから取り出して検討し、そのフォーマットを判断します。フォーマットがコネクターの静的メタオブジェクトまたは子メタオブジェクトで定義されている場合、コネクターはデータ・ハンドラーを使用して動詞を持つ適切なビジネス・オブジェクトを生成します。
コネクターがメッセージを処理するときには、最初に WebSphere MQ キューへのトランザクション・セッションが開始されます。このトランザクションのアプローチによって、ビジネス・オブジェクトがビジネス・プロセスに 2 回デリバリーされる可能性があります。これは、コネクターがビジネス・オブジェクトのサブミットには成功するが、キュー内のトランザクションのコミットに失敗することが原因です。この問題を回避するために、コネクターは、すべてのメッセージを進行中キューに移動します。進行中キューでは、メッセージは処理が完了するまで保持されます。処理中にコネクターの予期しないシャットダウンが発生した場合、進行中キュー内のメッセージは、元の WebSphere MQ キューに復元されずにそのまま保持されます。
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 | 必要なレポート・メッセージのオプション |
次のいずれか一方、または両方を指定できます。
次のいずれかの値を指定すると、レポート・メッセージの相関 ID の設定方法を制御できます。
|
ReplyToQueue | 応答キューの名前 | レポート・メッセージの送信先となるキューの名前。 |
ReplyToQueueManager | キュー・マネージャーの名前 |
レポート・メッセージの送信先となるキュー・マネージャーの名前。
|
メッセージ本文 |
|
コネクターに構成されているデータ・ハンドラーと互換性のあるフォーマットで直列化されたビジネス・オブジェクト。
|
表 1 で説明したメッセージを受け取ると、コネクターは以下の処理を行います。
表 2
に、コネクターから要求を発行したアプリケーションに送信されるレポートの構造を示します。
表 2. 要求を発行したアプリケーションに返送されるレポートの構造
MQMD フィールド | 説明 | サポートされる値 (複数の値がある場合は OR として扱います) |
---|---|---|
MessageType | メッセージ・タイプ | REPORT |
feedback | レポートのタイプ |
次のいずれかです。
|
メッセージ本文 |
|
ビジネス・オブジェクトが正常に処理された場合、コネクターはメッセージの本文に InterChange Server Express から戻されたビジネス・オブジェクトを取り込みます。このデフォルトの動作は、静的メタデータ・オブジェクトの DoNotReportBusObj プロパティーを true に設定することによりオーバーライドできます。 要求を処理できなかった場合、コネクターはメッセージの本文にコネクターまたは
InterChange Server Express
によって生成されたエラー・メッセージを取り込みます。
|
コネクターの初期化時には、コネクターのシャットダウンなどが原因で完全に処理されなかったメッセージが進行中キュー内にあるかどうかが検査されます。コネクター構成プロパティー InDoubtEvents を使用すると、このようなメッセージのリカバリー処理のための 4 つのオプション (fail on startup、reprocess、ignore、または log error) のうちの 1 つを指定できます。
Fail on Startup オプションを使用すると、コネクターの初期化時に進行中キュー内のメッセージが検出された場合、エラー・ログは記録されますが、コネクターは即時にシャットダウンします。メッセージを調べて適切な処置を行う (これらのメッセージを完全に削除するか、または別のキューに移動する) のは、ユーザーまたはシステム管理者の役割です。
Reprocess オプションを使用すると、コネクターの初期化時に進行中キュー内のメッセージが検出された場合、以降のポーリング中にこれらのメッセージが最初に処理されます。コネクターは、進行中キュー内のメッセージをすべて処理した後で、入力キューからのメッセージの処理を開始します。
Ignore オプションを使用すると、コネクターの初期化時に進行中キュー内のメッセージが検出された場合、これらのメッセージは無視されますが、コネクターはシャットダウンしません。
Log Error オプションを使用すると、コネクターの初期化時に進行中キュー内のメッセージが検出された場合、エラー・ログが記録されますが、コネクターはシャットダウンしません。
コネクター・プロパティー ArchiveQueue が指定されて有効なキューを示す場合、コネクターは正常に処理されたすべてのメッセージのコピーをアーカイブ・キューに入れます。ArchiveQueue が定義されていない場合は、メッセージは処理後に廃棄されます。