アプリケーション・イベントの処理時に、ALE Module は SAP アプリケーションがコネクターにプッシュしたイベントを受信します。要求の処理時には、ALE Module はビジネス・オブジェクト要求を統合ブローカーから受け取って SAP アプリケーションに送信します。
init() メソッドは、SAP Gateway を経由した SAP R/3 アプリケーションへの RFC 接続を開きます。コネクターは初期化に失敗すると、terminate() メソッドを使用して接続を終了します。コネクターは、SAP Gateway から切断することで終了します。
アプリケーション・イベントまたはビジネス・オブジェクト要求を処理する場合、コネクターの初期化プロセスでは以下の処理が実行されます。
コネクターはマルチスレッド化をサポートしているため、ALE Module は、統合ブローカーからの要求を処理する場合に当該ハンドルの SAP の Java コネクター (SAPJCo) 接続プールを使用します。
ALE Module が SAP 用の WebSphere ビジネス・オブジェクトを処理する場合は、イベント処理または要求処理のいずれかによって開始されます。
ビジネス・オブジェクト・データが SAP の Java コネクター (SAPJCo) API から戻されると、ALE Module は、DATS および TIMS フィールドの値を、DATS データ・エレメントの場合は YYYY-MM-DD (ハイフンを含む)、 TIMS データ・エレメントの場合は HH:mm:ss (コロンを含む) という形式で受け取ります。大文字の HH は、12 時間制ではなく 24 時間制の時刻を表します。イベントを処理する場合、ALE Module はこれらの形式を、対応するビジネス・オブジェクト属性の 8 文字および 6 文字の最大サイズに合わせて変更します。コネクターは、日付データのハイフンや時刻データのコロンを除去して、値の長さを短縮します。
ALE Module のすべてのイベント処理は、SAP アプリケーションの 2 つの RFC 対応機能が開始します。ALE のイベント処理用のビジネス・オブジェクト・ハンドラーでは、機能 idoc_inbound_asynchronous および inbound_idoc_process をサポートしています。
イベントを処理する場合、このビジネス・オブジェクト・ハンドラーはビジネス・オブジェクトを MQSeries キューに永続的に保管します。コネクターは RFC 呼び出しに関連付けられた Transaction ID (TID) を保守することで、個々のデータが 1 回に限ってデリバリーされることを保証します。
図 17 では、ALE Module が MQSeries キューを処理する方法を説明しています。
ALE Module のビジネス・オブジェクト・イベント処理は、以下の方法で実行されます。
各 JMS-MQ メッセージは単一の RFC 呼び出しを表します。各 RFC 呼び出しは、単一の TID に関連した 1 つ以上のビジネス・オブジェクトを表すことができます。コネクターは TID をそのメッセージの CorrelationID プロパティーに格納し、TidStatus を CREATED に設定し、IDocProcessStatus を unknown に設定します。コネクターはメッセージ・ボディを使用して IDoc データを格納します。
AleUpdateStatus 構成プロパティーの値が true の場合、コネクターは SAP 内の IDoc の状況を更新します。コネクターは、複数の IDoc を含んだパケットを検索すると、パケット内のすべての IDoc の状況を更新します。詳しくは、SAP での IDoc の状況の更新を参照してください。
ALE Module は、イベント・キューからメッセージを読み取る際の処理の順序を FIFO (先入れ先出し法) を使用することで維持します。
表 21 では、コネクターがイベント・キューおよびアーカイブ・キューに送信するメッセージの構造を説明しています。
表 21. イベント処理およびアーカイブ処理用の JMS-MQ メッセージの構造
JMS メッセージ・ヘッダー・プロパティー | 説明 |
---|---|
CorrelationId | コネクターは SAP が送信するトランザクション ID (TID) からこのプロパティーの値を設定します。 |
TidStatus | TID の状況を保持します。 |
IDocProcessStatus | イベント処理中に IDoc オブジェクトの状況を保持します。 |
BOProcessingStatus | メッセージ内のすべての IDoc の状況を保持します。フォーマットは <CID> :: <IDoc sequence number><Status symbol> です。状況記号の種類は、S (成功)、F (失敗) および U (アンサブスクライブされた) です。例えば「<CID> :: 0S, 1F, 2U」は、最初の IDoc は成功、2 番目は失敗、3 番目は CorrelationId = <CID> に対してアンサブスクライブされたことを表します。 |
表 22 では、イベントがアーカイブ・キューに移された後で、IDocProcessStatus プロパティーが取り得る値について説明しています。
表 22. IDocProcessStatus メッセージ・プロパティーに対するアーカイブ・キューの値
IDocProcessStatus プロパティー値 | イベント状況 | 説明 |
---|---|---|
success | 成功 | メッセージにあるすべてのビジネス・オブジェクトが、エラーなしでポストされました。 |
partial | 一部成功 | メッセージにあるすべてのビジネス・オブジェクトではないが、1 つ以上のものがエラーなしでポストされました。統合ブローカーが WebSphere InterChange Server Express である場合は、メッセージにあるすべてのビジネス・オブジェクトではないが、1 つ以上のものがエラーなしでポストされたか、アンサブスクライブされています。 |
unsubscribed | アンサブスクライブ | 統合ブローカーが WebSphere InterChange Server Express である場合は、メッセージにあるすべてのビジネス・オブジェクトがアンサブスクライブされています。 |
fail | 失敗 | メッセージにあるすべてのビジネス・オブジェクトが、エラーを示してポストされました。 |
メッセージがイベント・キューからアーカイブ・キューに移されると、IDocProcessingStatus および BOProcessingStatus が更新されます。メッセージ・ボディはそのまま変更されません。
例えば、コネクターが 4 つの IDoc を含んだイベント・メッセージを処理し、各 IDoc がビジネス・オブジェクトに変換されるか、または変換を試行された場合、結果は 表 23 のようになります。
IDoc またはビジネス・オブジェクトの状況 | 結果として得られるアーカイブ・メッセージ |
---|---|
最初の IDoc は正常に変換され、ビジネス・オブジェクトは統合ブローカーにポストされました。 | IDocProcessStatus は success に更新され、BOProcessingStatus は <CID> :: 0S になります。 |
2 番目の IDoc のビジネス・オブジェクトへの変換に失敗しました。 | IDocProcessStatus は partial に更新され、BOProcessingStatus は <CID> :: 0S, 1F なります。 |
3 番目の IDoc は正常に変換され、ビジネス・オブジェクトは統合ブローカーにポストされました。 | IDocProcessStatus は partial に設定され、BOProcessingStatus は <CID> :: 0S, 1F, 2S になります。 |
4 番目の IDoc は正常に変換されましたが、作成されたビジネス・オブジェクトは統合ブローカーにサブスクライブされませんでした。 |
|
ALE Module がイベント処理のために IDoc を検索した後で、コネクターによって標準の SAP 状況コードが更新されるようにするためには、以下の作業を行う必要があります。
AleUpdateStatus の値が true に評価された場合、コネクターは ALEAUD IDoc を状況コード情報および記述テキストとともに SAP に送信します。ALEAUD IDoc は IDOC_INPUT_ALEAUD 機能モジュールを呼び出します。コネクターは、この機能モジュールに対する以下の状況コードの送信をサポートします。
AleSuccessCode コネクター固有の構成プロパティーは、値 52 または 53 に設定できます。SAP はこの値を 41 に変換します。
AleFailureCode コネクター固有の構成プロパティーは、値 68 に設定できます。SAP はこの値を 40 に変換します。
上記のどちらの場合でも、Business Integration システムはそれ以降、後続の処理を表す状況コードを送信しません。
IDoc の状況を戻すために必要なコネクター固有構成プロパティーの設定の詳細については、以下の各セクションを参照してください。
IDoc の状況を戻すための、オプションのコネクター固有構成プロパティーの設定の詳細については、以下の各セクションを参照してください。
このコマンド行ユーティリティーは、 WebSphere Business Integration adapter for mySAP.com の (v. 5.3.2) ALE モジュールが使用する MQ キューの管理に使用します。このユーティリティーはイベント・メッセージを再サブミットし、表示用にイベント・メッセージをファイル・システムにダンプし、メッセージをファイル・システムにアーカイブします。
IDoc は、トランザクションという作業単位で処理されます。複数の IDoc を含む SAP トランザクションをトランザクション・パケットと呼びます。アダプターは、1 つ以上の IDoc を保持する MQ メッセージを使用してトランザクションおよびトランザクション・パケットを処理します。アダプターは、IDoc を対応するビジネス・オブジェクトに変換します。ALE モジュールは、SAP からアダプター、アダプターからブローカーの順に 2 段階で IDoc を処理します。例外は、各ステップで個別に処理されます。
MQ メッセージについて詳しくは、WebSphere Business Integration Library: http://www.ibm.com/software/integration/wmq/library/ を参照してください。
アダプターがアンサブスクライブされたビジネス・オブジェクトまたはサポートされないビジネス・オブジェクトを検出した場合、または IDoc の送信中に例外が発生した場合は、アダプターは SAP トランザクションの処理に失敗します。失敗したトランザクションは、 SAP トランザクション SM58 から表示および再サブミットできます。トランザクションを再サブミットする前に、以下の例外に対処してください。
上記のステップが正常に実行されると、SAP でのトランザクションは完了します。
MQ メッセージに単一のビジネス・オブジェクトが含まれ、そのビジネス・オブジェクトがアンサブスクライブされている場合は、MQ メッセージはアンサブスクライブされたキューに移動されます。トランザクション・パケット内の各アンサブスクライブされたビジネス・オブジェクトは、アンサブスクライブされたキューに専用の MQ メッセージとして存続します。元の MQ メッセージは変更されず、個々の IDoc の処理状況が格納されます。MQ メッセージのトランザクション・パケットが完全に処理されると、アーカイブ・キューに移動されます。
トランザクションを再サブミットする前に、以下の例外に対処してください。
訂正が完了したら、コマンド・ユーティリティー AleEventUtil を使用して MQ メッセージをイベント・キューに戻し、イベントを再サブミットします。
IDoc に誤った形式のデータが含まれる場合、または「nodata」が含まれる場合は、IDoc は独自のメッセージとしてエラー・キューに移動されます。
ALE Module Queue ユーティリティーは SAP アダプターにパッケージされています。インストールすると、以下のディレクトリー構造が作成されます。
¥Connectors¥SAP¥BIA_AleEventUtil.jar
¥Connectors¥SAP¥BIA_AleEventUtil.bat
¥Connectors¥SAP¥BIA_AleEventUtil_readme.txt
以下のパラメーターを収集するように始動スクリプト・ファイル BIA_AleEventUtil.bat を変更します。ローカル・キュー・マネージャーにアクセスするために構成する必要があるのは MQQueueManager のみです。
変数 | 説明 | コメント |
---|---|---|
MQQueueManager | Queue Manager の名前 | 必須パラメーター |
MQChannel | サーバー接続チャネル名 | リモート・キュー・マネージャーにアクセスするために必要です。 |
MQPort | チャネルが listen するポート | リモート・キュー・マネージャーにアクセスするために必要です。 |
MQHost | キュー・マネージャーが稼動するホスト名または IP アドレス | リモート・キュー・マネージャーにアクセスするために必要です。 |
MQUser | MQHost の有効なユーザー名 | リモート・キュー・マネージャーにアクセスするために必要です。 |
MQPassword | ユーザー・パスワード | リモート・キュー・マネージャーにアクセスするために必要です。値は暗号化されません。 |
ユーティリティーをインストールして構成したら、ALE Module キュー管理ユーティリティーのインストール先ディレクトリーにナビゲートします。ユーティリティーに有効なコマンドは以下のとおりです。
-c <choice> (有効なオプションは [move、archive、dump、replicate])
-i <inputq>
-o <outputq>
-f <outputfile>
-d <date>
-u <unique message ID>
-n <replication count>
メッセージの内容をファイルにダンプするには、コマンド・プロンプトで、ユーティリティーのインストール先ディレクトリーに切り替えて以下のコマンドを実行します。
BIA_AleEventUtil -cdump -i<QueueName> -f<OutputFileName>
あるキューから別のキューにメッセージを移動するには、以下のコマンドを実行します。以下のコマンドは、キューにあるメッセージをすべて移動します。
BIA_AleEventUtil -cmove -i<FromQueue> -o<ToQueue>
単一のメッセージを移動するには、以下のように、該当するメッセージのメッセージ ID に対応する MessageIdByte の追加のパラメーターを使用します。
BIA_AleEventUtil -cmove -i<FromQueue> -o<ToQueue> -u<MessageIdByte>
指定の日付以前のメッセージをすべて移動するには、以下のように Date パラメーターを追加します。
BIA_AleEventUtil -cmove -i<FromQueue> -o<ToQueue> -d<date(YYYYMMDD)>
キューからファイルにメッセージをアーカイブし、指定の日付以前のメッセージをすべて除去するには、以下のコマンドを使用します。
BIA_AleEventUtil -carchive -i<QueueName> -f<ArchiveFileName> -d<date(YYYYMMDD)>
Vision コネクター・フレームワークは、トップレベルのビジネス・オブジェクトの動詞 AppSpecificInfo プロパティーの値を使用して、ALE 要求処理ビジネス・オブジェクト・ハンドラーをインスタンス化します。要求処理ビジネス・オブジェクト・ハンドラーの doVerbFor() メソッドでは、すべてのビジネス・オブジェクト要求を開始します。
ビジネス・オブジェクト・ハンドラーは、ビジネス・オブジェクト・データを、IDoc 形式と、そのメタデータ・コンポーネントである制御レコードを表す 2 つの表に変換します。データを IDoc 形式に変換すると、ビジネス・オブジェクト・ハンドラーは idoc_inbound_asynchronous または inbound_idoc_process のいずれか適切な SAP 機能モジュールに対して RFC 呼び出しを行います。ALE は非同期なので、コネクターは応答が戻されるのを待機しません。
TransactionId 属性が値を持っていない場合は、ALE Module は要求を直接 SAP に送信します。TransactionId 属性が値を持っている場合は、ALE Module は以下のいずれかを行います。
サービス呼び出し要求の処理が正常に行なわれると、SAPtid_Queue にある JMS-MQ メッセージのテーブルの中で該当するエントリーが除去され、ディレクトリーにアーカイブされます。ファイルが、WINNT システムの場合は ¥ale¥request サブディレクトリーに、他のシステムの場合は /ale/request に作成されます。ale サブディレクトリーは、アダプターが開始されるディレクトリーに置かれます。テーブルから除去されたエントリーは、新しいファイルを作成するのに使用されます。ファイル名は、<ObjectID>_<TID><timestamp>.executed という形式になります。ここで、ObjectID は TransactionId 属性からの値、TID は SAP からのトランザクション ID、timestamp はファイルが作成されたときのタイム・スタンプです。
アダプター自体が、コネクターの構成プロパティー ArchiveDays を用いて、これらのアーカイブ・ファイルの削除を管理します。コネクターの構成プロパティー、ArchiveDays の値によって、これらのアーカイブ・ファイルが ale¥request サブディレクトリーに存続する日数が決まります。 ArchiveDays で指定された日数より古いファイルはいずれも、削除されます。このプロパティーが構成されていない場合の ArchiveDays のデフォルト値は 7 日です。これらのアーカイブ・ファイルは、ファイルを自分で削除することによって手作業で管理することもできます。
統合ブローカーによって示されている、失敗に終ったすべての要求について、その要求に関するアーカイブ・ファイルが作成されたかどうかチェックしてください。要求にあるオブジェクト ID に対するアーカイブ・ファイルが存在する場合は、統合ブローカーから要求を再サブミットしなでください。その ObjectID に対するアーカイブ・ファイルがない場合は、要求を再サブミットしてください。 ArchiveDays コネクター構成のプロパティーが、再サブミットされた要求の検査の許容範囲の値に設定されていることを確認してください。
表 24 では、コネクターが SAPtid_Queue から取得する JMS-MQSeries メッセージの欄について説明します。
列名 | 説明 |
---|---|
ObjectID | 要求されたビジネス・オブジェクトの TransactionID 属性にある値。この値は、テーブルのキーとして使用されます。 |
TID | SAP から取得されたトランザクション ID |
TidStatus | トランザクションの状況 |