データ管理 >
ブラウザ・ベースのプログラムを実行している時、ユーザは、一度に複数のブラウザを開くことができます。個々のブラウザは、トランザクションとの接続を持たない異なるタスクを実行することができます。Magicは、論理的に枝分かれしている遅延トランザクションを分割することによって個々のブラウザをサポートします。各枝は、他の枝との接続のない個別のトランザクションツリーとなります。
Magicは、遅延トランザクションに指定されているモーダレスタスクではネストトランザクションをオープンします。親子タスク間の動作は、Ver8以前と変わりません。
オープントランザクション
イベントツリー上で呼び出すタスクがトランザクションをオープンしない場合、起動されたタスクは、[タスク特性]に従ってトランザクションをオープンします。タスクが、トランザクションをオープンするように定義されていれば、レコードまたはタスクレベルでトランザクションをオープンします。
イベントツリー上で呼び出すタスクがトランザクションをオープンする場合、起動されたタスクは、[タスク特性]に従って以下のように動作します。
遅延トランザクション タスクは新たにトランザクションをオープンしません。
ネストトランザクション タスクは新しいトランザクションをオープンします。
なし 遅延タスクと同じように動作します。
クローズトランザクション
トランザクションは、オープンされたタスクでクローズされます。
例外として、親と同じトランザクションをもつ子プログラムが起動された場合があります。トランザクションが親プログラムによってクローズされ、子プログラムがオープン状態のままの時、「トランザクションなし」で残ります。
子プログラムは、トランザクションの一部でなければなりません。最初に呼ばれた子プログラムは、トランザクションとトランザクション内の全ての子プログラムを管理します。親タスクがクローズすると、トランザクションの管理は、イベントツリー上の下位に移動します。トランザクション階層は、タスクがオープンされる順番によって決まります。トランザクションがクローズされ、そのトランザクションの中にまだタスクがオープンされている時、別のトランザクションが即オープンされ、最初の子タスクによって管理されます。
トランザクション管理が新しいタスクに移動すると、新しいトランザクションは、[タスク特性]に定義された値に関係なく常にタスクレベルでオープンされます。
参照