トランザクション
本章では、OpenFrame AIMが提供するオンライン・トランザクションの概念について説明します。
1. トランザクションの開始と終了
OpenFrame AIMでは、データの整合性を保証するために、すべてのデータの更新をトランザクション単位で行います。トランザクションの処理中に業務アプリケーションがデータの更新を要求すると、トランザクションが正常に終了した後、その要求が処理されます。
OpenFrame AIMにおけるトランザクションは、業務アプリケーションがMQNから1つのレコードを読み込むことにより開始し、次のレコードを読み込む直前に終了します。つまり、MQNを読み込むREADコマンドがトランザクションの境界になります。

2. トランザクション単位の処理の保証
トランザクション中に発生した更新処理の要求は、更新コマンドが実行された時点ではなくトランザクションが正常に終了した時点で処理されるため、トランザクション単位の処理が保証されます。トランザクション中に発生した更新処理要求はバッファーに一時保存され、トランザクションの終了時に記憶装置に永続的に保存されます。

トランザクション単位の処理は、記憶装置を使用するデータだけでなく、MQNに保存されているメッセージに対しても保証されます。トランザクション中に業務アプリケーションが端末に送信するメッセージは、アプリケーションがWRITEコマンドを発行するときにバッファーに保存され、トランザクションの終了時にDCMSを介して端末に送信されます。

OpenFrame AIMで使用するリソースのうち、非VSAMデータセットはトランザクション単位の処理をサポートしません。 |
3. マルチトランザクション
1つの業務アプリケーションを2つ以上のトランザクションで構成することができます。OpenFrame AIMで実行される業務アプリケーションのトランザクションは、MQNからレコードを読み込むREADコマンドから開始され、次のREADコマンドの直前で終了します。

上の図は、端末が3つのトランザクションで構成されたアプリケーションと通信する場合を示しています。端末が業務アプリケーションと通信を開始したときの最初のトランザクションのREADコマンドをInitial-READといいます。
業務アプリケーションが2つ以上のトランザクションで構成されている場合、トランザクションはデータセット、データベース、ローカル変数などを共有しますが、端末との通信は、各トランザクションが独立したアプリケーションであるかのように処理します。1つの端末から要求されたトランザクションが終了したら、すぐに他の端末からのトランザクションを処理できます。このようなOpenFrame/AIMの機能を活用すると、1つのトランザクションが短いほどシステム全体の性能は向上します。