Forguncy サポート

悲観的同時実行制御(悲観的ロック)は実現できますか?

フォローする

対象製品とバージョン:Forguncy 2以降

 

Forguncyが既定でサポートしている同時実行制御は、楽観的同時実行制御となっています。詳細については、以下のナレッジベースを参照してください。

排他制御は行われますか?

 

しかしながら、ロックを行う処理をコマンド等を使用して作りこむことで悲観的同時実行制御を実現することが可能です。

添付のサンプルでは、「テーブル1_編集ページ」ページへ遷移する際に「排他確認用」テーブルに対して、「編集中ユーザー」と「編集開始日時」を書き込むようにしています。そして、「テーブル1_編集ページ」ページでは、[OK]ボタンを押しても[キャンセル]ボタンを押しても、どちらの場合でも該当する「排他確認用」テーブルのレコードを削除するようにしています。
「テーブル1_編集ページ」ページへ遷移する際には、「排他確認用」テーブルの内容を確認し、該当するレコードが存在しないか、もしくは存在した場合でも「編集開始日時」が現在時刻よりも30分以上前となっているかどうかを確認し、どちらかに該当する場合にのみ「テーブル1_編集ページ」ページへ遷移するようにしています。30分以上前となっていた場合にも編集ページへ遷移できるようにしているのは、「テーブル1_編集ページ」ページで[OK]ボタンや[キャンセル]ボタンを押さずに、Webブラウザーのウィンドウを直接閉じるなどして、ロックされたままの状態になってしまった場合を想定した対策となっています。これを30分ではなく、たとえば15分などとする場合、「テーブル1_一覧ページ」ページのG7セルに設定している「条件分岐」コマンドの条件にて、「=NOW()-"0:30"」と設定されている部分を「=NOW()-"0:15"」と変更します。

 

 検索キーワード: fgcinfo fgcdevelopment

他にご質問がございましたら、リクエストを送信してください

コメント