コラボレーションのトランザクション・レベルは、システムがコラボレーション内でシナリオを実行するときに使用する機構を決定します。
コラボレーション開発者がコラボレーションにトランザクションの実行が必要かどうかを決定する場合、コラボレーションは開発段階でトランザクションになります。必要だと決定すると、開発者は差し戻しステップをテンプレートのシナリオに追加して、コラボレーションのトランザクション・レベルを指定します。すべてのコラボレーションは、次のトランザクション・レベルのうちのいずれかに指定されます。
System Manager は構成中に、コラボレーション・テンプレートの最小トランザクション・レベルを表示します。これは、コラボレーション・オブジェクトがそのテンプレートの継承から作成されるからです。
しかし、コラボレーション・オブジェクトが実際に実行するトランザクション・レベルは、他の要素によって影響されます。構成時に、管理者はコラボレーション・オブジェクトをコネクターまたはコラボレーション・オブジェクト、あるいはその両方にバインドします。コネクターまたはコラボレーション・オブジェクトは、それぞれ特定のトランザクション・レベルを持っており、コラボレーションはすべてのバインディングがサポートするレベルで実行する必要があります。例えば、コネクターのトランザクション・レベルは、アプリケーションの機能に基づいて、コネクターが提供できるサポートのレベルを表します。コラボレーションは、コネクターのうち 1 つでもサポートしないレベルでは実行できません。
トランザクション・レベルが「なし」のコラボレーションは、トランザクション・コラボレーションではありません。コラボレーションの実行中にエラーが発生した場合、エラー・メッセージが記録されます。
コラボレーション・テンプレートに差し戻しステップが含まれていても、そのテンプレートから作成されたコラボレーション・オブジェクトはトランザクション・レベルなしで実行できます。例えば、コネクター・オブジェクトのバインディングがより高度なトランザクション・レベルをサポートしない場合が考えられます。この場合、差し戻しは無視されます。
「最小限の努力」トランザクション・レベルのコラボレーションには、シナリオのトランザクション・ステップに定義された差し戻しが含まれます。シナリオの実行中にエラーが発生すると、InterChange Server はシナリオをロールバックし、実行済みのトランザクション・ステップに対する差し戻しを実行します。
シナリオが異なるコラボレーション・オブジェクトを呼び出して作業の一部を実行させた場合、つまりコラボレーションがコラボレーション・グループの一部である場合、コラボレーション内で実行されたシナリオもロールバックします。
「最小限の努力」トランザクション・レベルは、次の条件下にあるコラボレーションに適しています。
「最大限の努力」トランザクション・レベルで実行するコラボレーションは、分離チェックを使用します。「最大限の努力」トランザクション・レベルは、データの不整合から保護する必要のあるコラボレーションに適しています。
コラボレーションが分離チェックを使用して実行すると、次のことが実行されます。
分離チェックは適切なトランザクション・セマンティクスを提供しますが、InterChange Server での新たなデータベース・アクセスや、コネクターと InterChange Server 間のより一層の通信が必要になります。この追加のシステム作業は、パフォーマンスに影響を与えます。このため、トランザクション・レベルを選択するときは、パフォーマンスの問題とデータの整合性の問題を比較検討する必要があります。
しかし、「最大限の努力」トランザクション・レベルでさえ、小さなぜい弱な時間帯は存在します。分離チェックの開始とコラボレーションが操作を継続する時間の間、別のトランザクションがデータを変更する可能性があります。それでも、「緊急」トランザクション・レベルをサポートするアプリケーション API は少数なので、「最大限の努力」トランザクション・レベルは、多くのアプリケーションの組み合わせで使用できる最も高度なトランザクション・レベルです。
「緊急」トランザクション・レベルは最も高度な分離保証ですが、これを使用できるのは、クライアント・アプリケーションにアトミック・テストの実行と操作の設定を許可する API を持つアプリケーションのみです。このようなアプリケーションとともに作動するコネクターは分離チェック中にデータをロックするので、他のプログラムがシナリオのデータを変更する可能性がなくなります。現在、この機能を提供するアプリケーションはごくわずかです。