ホーム‎ > ‎Magic xpa‎ > ‎Magic xpa 新連載概要‎ > ‎

記事概要 Magic V10 で作るイベントドリブン型プログラム

2009/10/07 23:36 に Masanobu Tanda が投稿   [ 2010/09/24 2:28 に更新しました ]
第19回 遅延トランザクションを利用した、処理の取消

 今回はトランザクションにまつわる話題を取り上げます。トランザクションと聞くと、障害時の復旧対策がまず思い付きますが、実はトランザクションの機能はプログラムのロジックの一部として利用されることも多いのです。

 例えば、受注伝票入力のプログラムがあったとして、オペレータが受注伝票の入力途中で入力作業をキャンセルしたいと思ったときの場面を想定します。

 通常、受注入力プログラムの構造は親子タスクの構造となっており、ヘッダ・フッタ部分の入力と、明細入力部分が分離しています。このとき、明細入力を終えて親タスクのヘッダ部分に戻ったときに、取消キーである「F2」キーまたは V10 以降では「Ctrl + F2」キーを押すと、親タスクは入力が取り消されてレコードは作成されませんが、子タスクでは明細レコードがゴミデータとしてテーブルに残ってしまいます。

 たいていの場合はこれに対処するために明細行の削除バッチを作成して、親レコードの入力がキャンセルされたら子レコードはバッチで削除するというロジックを組み込むかと思うのですが、実はトランザクションの機能を利用すればバッチタスクを作成しなくても、簡単に子レコードの入力をキャンセルすることができるようになるのです。

 (以降、本編に続きます。本編ご購読のお申込みはこちらです