外部データベースまたはその他のリカバリー可能リソースとの対話を含むメッセージ・フローは、そのすべての処理が 1 つのグローバルなトランザクション内で整合されるように構成することができます。この整合によって、すべての処理が正常に完了されるか、処理がまったく実行されないかのいずれかになります。 トランザクションは、コミット (すべての処理が成功した場合) またはロールバック (少なくとも処理の一部が成功しない場合) されます。 したがって、影響を受けるすべてのリソース (キュー、データベースなど) は、整合した状態を維持し、データ整合性が保たれます。
整合済みとしてメッセージ・フローを構成するには、メッセージ・フローで「整合」プロパティーを設定します。
MQInput、または SCADAInput ノードなど、一部の入力ノードでは、フローのノードの「トランザクション・モード」プロパティーを「自動」に設定します。 「自動」オプションは、メッセージをグローバル・トランザクションの一部とし、入力メッセージが持続する場合にはメッセージ・フローをトランザクションとして、持続しない場合には非整合としてマークします。入力ノードによってフローがトランザクションとマークされた場合、トランザクション・モード・プロパティーを「自動」に設定するフローの後続のノードはグローバル・トランザクションに組み込まれます。
メッセージ・フローのトランザクション調整は、分散システムでは WebSphere® MQ によって、z/OS® システムでは RRS によって提供されます。z/OS の場合、メッセージ・フローの「整合」プロパティーの設定に関係なく、常にグローバルに整合されます。
非整合フローは、「整合」プロパティーが設定されていないフローです。 非整合フローによって使用されるリソースに対する更新は、個々のリソース・マネージャーによって管理されます。 リソース・マネージャーの中には、更新を非トランザクションとして、またはリソース固有のトランザクションの一部として行えるものがあります (例えば WebSphere MQ など)。 また、常にリソース固有のトランザクションを使用するリソース・マネージャーもあります (例えばデータベース・マネージャー)。 リソース固有のトランザクションは、単一のリソース・マネージャー (例えばデータベース・マネージャーまたはキュー・マネージャーなど) によって所有されるリソースにその有効範囲が限られています。
リソース固有のトランザクションは通常、フロー内で 1 つのタイプのリカバリー可能リソースしか使用されていない場合に使用されます。MQInput および MQOutput ノードが含まれているものの、どのデータベースにもアクセスしないようなフローはその一例です。複数のリソースが存在し、データ保全性を維持しなければならない場合には、リソース固有のトランザクションを使用してはなりません。
非トランザクションとしてアクセスされるリソースに対する更新は、即時にコミットされます。非トランザクションとなるように構成されている MQInput ノードは、キューからメッセージを即時に除去し、フローが失敗するとメッセージは失われます。
「トランザクション・モード」プロパティーを「自動」に設定することにより、一部の入力ノード (例えば MQInput、または SCADAInput ノード) をトランザクションの一部とすることができます (入力メッセージの持続性に依存する)。 入力メッセージが持続的なものである場合、メッセージはトランザクションの一部となり、フローはトランザクションとしてマークされます。メッセージが持続的なものでない場合は、フローは非トランザクションとしてマークされます。