I ビジネス・メッセージ・フローのトラッキング
この付録では、Oracle SOAコンポジットとOracle B2Bの間のビジネス・メッセージ・フローを対象とする、トラッキングおよび管理の処理について説明します。
この付録の内容は次のとおりです。
I.1 ビジネス・フロー・イベントの概要
ビジネス・フローには、交換される1つ以上のメッセージが含まれています。
一般的なビジネス・フローには、次のものが含まれています。
-
単一のメッセージ交換(発注書など)
-
複数のメッセージ交換(リクエスト/レスポンスなど)
-
エラーが発生した場合の個別の通知フロー
-
再試行/再発行の場合の追加のフロー
エラー、再試行、リクエスト/レスポンスなど、異なるタイプのビジネス・フローは、フロー・イベントと呼ばれるIDまたはFlowIDで区別できます。
I.1.1 フロー・イベントに関する注意事項
フロー・イベントには、次の情報が格納されています。
-
FlowID: 基礎となるビジネス・フローを一意に識別します。
-
ECID: 基礎となるビジネス・フローに関連付けられた同期サブフローを一意に識別します。ビジネス・フローには多くの同期サブフローおよび非同期サブフローが格納される可能性があるため、異なるECIDに関連付けられたイベントで構成される場合があります。非同期サブフローは、BPELプロセスのデハイドレーションおよびリハイドレーションが行われる場合に作成されます。
-
InstanceID: イベントに関連するサービス、参照またはコンポーネント・インスタンスを一意に識別します。
-
SCAEntityID: InstanceIDで参照されるサービス、参照またはコンポーネント・インスタンスのタイプを一意に識別します。SCAEntityIDは、
sca_entity
表に格納されているID列の値に対応します。SCAEntityIDを使用すると、次のような代替情報より非常に簡潔になります。-
イベントで記述されるサービス、参照またはコンポーネント・インスタンスに関連するドメイン名
-
イベントで記述されるサービス、参照またはコンポーネント・インスタンスを含むコンポジットの名前
-
イベントで記述されるサービス、参照またはコンポーネント・インスタンスを含むコンポジットのリビジョン
-
イベントで記述されるサービス、参照またはコンポーネント・インスタンスを含むコンポジットのラベル
-
イベントで記述されるサービス、参照またはコンポーネント・インスタンスの名前
-
-
FlowEventID: フロー・イベントに関連する一意のIDです。これを使用して、フロー・イベント間の親子関係を作成します。
-
ParentFlowEventID: 対象のフロー・イベントの親を一意に識別します。これは、親フロー・イベントのFlowEventID値です。対象のフロー・イベントに親がない場合、ParentFlowEventIDはnullに設定されます。
-
TransactionID: 対象のフロー・イベントに関連するトランザクションを識別します。対象のフロー・イベントにトランザクションが関連付けられていない場合は、nullです。
-
CorrelatedFlowID: 現在のビジネス・フローに関連付ける必要があるビジネス・フローを一意に識別します。
-
FaultID: 対象のフロー・イベントに関連付けられたフォルトに対応します。このIDは、
common_fault
表に格納される共通フォルトに関連付けられています。対象のフロー・イベントに関連付けられたフォルトがない場合、値はnullに設定されます。 -
ExceptionTrace: 対象のフロー・イベントに関連付けられたフォルトの、例外スタック・トレースに対応します。対象のフロー・イベントに関連付けられたフォルトがない場合、またはスタック・トレースを取得できなかった場合、値はnullに設定されます。
-
FaultPolicyAction: トリガーされるフォルト・ポリシー・アクションを表します。
-
ParentAuditEventID: コンポーネント固有のAuditEventを一意に識別します。これは、対象のフロー・イベントの親イベント(以前に発生)です。これは、異なる監査トレースからのイベントをまとめる際に使用されます。
ノート:
Oracle B2BをコールするOracle SOAコンポジットの場合、correlationFlowIdはOracle SOAコンポジット自体から取得されます。しかし、Oracle SOAをコールするOracle B2Bの場合、共通のインスタンス・トラッキング・フレームワークと統合するために、Oracle B2BはcorrelationFlowIdを生成し、そのIDをコンポジットに渡す必要があります。
I.2 Oracle B2Bメッセージ・イベントのトラッキング
この項では、再試行、バッチ処理および再送信の各メッセージ・イベントにおけるインスタンス・トラッキングの処理方法について説明します。
再試行
チャネル・レベルまたはドキュメント・レベルでの再試行の場合、親メッセージのFlowIDにFlowIDが関連付けられます。
バッチ処理
バッチ処理の場合、個別の各メッセージにFlowEventIDが関連付けられます。このケースで1つのワイヤ・メッセージのみがある場合であっても、個別のすべてのメッセージに対して同じ処理が行われます。
バッチ処理解除の場合、バッチの状態が識別され、バッチ処理解除の操作の後、個別の各メッセージが新しいFlowEvent IDで更新されます。これにより、バッチ内の特定のメッセージのエラー関連のシナリオも更新されます。ただし、通常は、インバウンド処理の際にエントリ・ポイントでFlowIDが生成されます(ワイヤ・メッセージの作成時)。
再発行
再発行は手動プロセスです。新しいFlowIDが作成され、元のメッセージに関連付けられます。
-
アウトバウンド・アプリケーション・メッセージ - 新しいFlowIDが作成され、
EXT_BUSINESS_MESSAGE
表に格納されます。 -
インバウンド・アプリケーション・メッセージ - 新しいFlowIDが作成され、
EXT_BUSINESS_MESSAGE
表に格納されます。デフォルトの方法では、ワイヤ・メッセージに作成されたFlowIDを追跡し、それをバックエンドまで送信します。ただし、これはインバウンド・アプリケーション・メッセージの再発行であるため、新しいFlowIDが作成され、親FlowEventIDが元のメッセージの値を格納します。 -
アウトバウンド・ワイヤ・メッセージ - この場合は新しいFlowIDが作成され、元のメッセージ参照を格納します。デフォルトの方法では、アウトバウンド・プロセスにおけるアプリケーション・メッセージの作成時にFlowIDが作成されます。ただし、この場合、ワイヤ・メッセージの作成レベルで新しいFlowIDが作成されます。
-
インバウンド・ワイヤ・メッセージ - 新しいFlowIDが作成され、
B2B_WIRE_MESSAGE
表に格納されます。
I.3 Oracle B2Bコンソールを使用したフローのトラッキング
Oracle B2Bコンソールのビジネス・レポートで「フローのトレース」リンクをクリックすると、ビジネス・フロー・イベントのフロー・トレースを表示できます。
これを図I-1に示します。
リンクをクリックするとOracle Fusion Middleware Enterprise Management Controlコンソールにリダイレクトされ、図I-2に示すように、フロー・トレースを表示できます。
ノート:
B2B高可用性環境では、B2Bがレポートするエンタープライズ管理SOAコンポジット・フローのトレース・リンクは動作しません。
「フローのトレース」ウィンドウでBPELコンポーネントのリンクをクリックすると、図I-3に示すように、詳細なトレースを表示できます。
ノート:
現在のリリースでは、AQのインスタンス・トラッキングはサポートされていません。インスタンス・トラッキングは、メモリー内およびJMSバックエンドでのみサポートされています。
I.4 インスタンス・トラッキングおよびエラー・ホスピタルの統合
インスタンス・トラッキングおよびエラー・ホスピタル・トラッキング機能には2つの部分があります。
「Oracle Enterprise Manager Fusion Middleware Controlのフロー・トレースおよびB2B/Healthcareコンソール間のメッセージのトラッキング」および「Oracle Enterprise Manager Fusion Middleware Controlのフロー・トレースXMLからのメッセージの状態のトラッキング」の項で説明されています。
I.4.1 Oracle Enterprise Manager Fusion Middleware Controlのフロー・トレースおよびB2B/Healthcareコンソール間のメッセージのトラッキング
Oracle Enterprise Manager Fusion Middleware Controlのフロー・トレースとB2B/Healthcareコンソールの間で、メッセージのトラッキングが可能です。この機能は、JMSおよびメモリー内の両統合モードで使用できます。
JMS統合のドメイン全体でインスタンスとエラーのトラッキングを行う場合、ECIDベースのJMS統合で使用可能な次のプロパティを引き続き使用する必要があります。
-
b2b.flowTraceEMURL
(またはJMSチャネル・レベルで同じものを指定)このプロパティを使用して、Oracle Enterprise Manager Fusion Middleware Controlが利用し、キューからJMSメッセージを送信する際に使用するドメインに関する情報を指定します。
-
b2b.b2bReportsURL
Oracle B2B URLを指すように、Oracle Enterprise Manager Fusion Middleware Controlインスタンスでこのプロパティを構成します。
-
hc.hcReportsURL
Oracle Enterprise Manager Fusion Middleware Controlが実行されているインスタンス上のSOA Suite for healthcare URLを指すように、このプロパティを構成します。
これらのプロパティの詳細は、「Fusion Middleware ControlでのB2B構成プロパティの設定」を参照してください。
I.4.2 Oracle Enterprise Manager Fusion Middleware Controlのフロー・トレースXMLからのメッセージの状態のトラッキング
Oracle Enterprise Manager Fusion Middleware Controlからフロー・トレースXMLを介して、メッセージの状態の完全なトラッキングが可能です。この機能は、メモリー内統合でのみ使用できます。
通常、コンポジット・インスタンスの状態は、B2B内のアプリケーション・メッセージに従います。アプリケーション・メッセージが完了とマークされると同時に、対応するコンポジット・インスタンスの状態が完了に更新されます。
既存のエラー通知メカニズム(例外メッセージを例外コンポジット/JMSキューに送信)は、そのまま正常に機能します。可能な場合は常に、通知メッセージは、元のビジネス・メッセージと同じフローIDに関連付けられます。
I.4.2.1 インバウンド・メッセージ
インバウンド・ドキュメントおよびコンポジットがデプロイされて、ドキュメントを受け取る場合、2種類の失敗が報告されることがあります。
-
ドキュメントが識別される前の失敗: ドキュメント自体が識別されず、コンポジット検出が可能でない場合、エラー報告は行われません。
-
ドキュメントが識別された後の失敗: コンポジットが検出され、コンポジットでフォルト・インスタンスが報告されます。例外コンポジットがデプロイされている場合、例外コンポジット・インスタンスは、報告されたフォルトと同じフローIDの一部です。
I.4.2.2 バッチでないアウトバウンド・メッセージ
バッチでないアウトバウンド・メッセージには、次の事項が適用されます。
-
メッセージがリモートTPに配信されるまで、メッセージの状態は「実行中」のままです。
-
正常に配信されると、コンポジット・インスタンスの状態は「完了」とマークされます。
-
アウトバウンド処理の際に例外が発生すると、コンポジットの状態は「失敗」とマークされ、リカバリは
B2B_RECOVERY_REQUIRED
に設定されます。ユーザーは、B2B/Healthcareコンソールでメッセージのリカバリを行う必要があります。リカバリ状態は、B2Bエラーおよびhealthcareエラーの両方で同じです。 -
次の場合は正しい処理が行われないため、コンポジットの状態は誤ったものになります。
-
B2Bで否定の
Ack
を受信すると、メッセージは「エラー」とマークされます。しかし、コンポジットの状態は「エラー」に更新されません。 -
Ack
タイムアウトは追跡されません。B2Bメッセージ自体は「エラー」状態ですが、コンポジットは「完了」状態のままです。 -
完了済メッセージの再発行は、エラーを引き起こします。この場合、B2Bがエラーを示しているにもかかわらず、フロー・インスタンスの状態は「完了」を示します。
-
バッチ処理のエラーを追跡するには、例外コンポジットに基づいて、バックエンドに送信される例外通知を利用する必要があります。バックエンドに配信される例外メッセージは、同じフローIDの一部として処理されます。
-