-PR-
解決済み

排他制御。

  • 困ってます
  • 質問No.15273
  • 閲覧数416
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 43% (29/67)

現在ASPで作成しているプロジェクトでは
ページが三つあります。
1ページ目でデータを選択し、排他をかける。
2ページ目でデータを更新して、
3ページ目で排他を解除しています。
この際2ページ目でページを閉じられた場合、
排他を解除しなくてはならないのですが
なにかいい方法はありませんか?
また、ブラウザの戻るボタンを押されたときにも
排他を制御しなくてはなりません。
なにか判断する方法はないでしょうか?
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル8

ベストアンサー率 67% (21/31)

具体的では、ありませんが、次のような方法が
考えられます。

1.モーダルダイアログを利用する
 ブラウザ側でスクリプトを記述することになります。
 1ページ目をモーダルダイアログの中に
 開きます。
 開くときに、ロックを設定します。
 あとは、データを更新して、ダイアログを閉じる
 時点で、ロックを解除します。
 ウィンドウを新規に開くことにより、戻るボタンや
 リロードによるトラブルを防げるかと思います。

 モーダルダイアログについては、
 http://www.microsoft.com/japan/developer/workshop/author/dhtml/dude/dude09252000.asp

2. ロック解除は、一定時間後に行う。
 2ページ目が開いて、一定時間後に
 自動的にロック解除するようにします。
 もし、3ページ目に、正しく移動できれば、
 3ページ目でロック解除します。
 戻るボタン、リロード対策については、
 page1.asp?s=100
page2.asp?s=101
page3.asp?s=102
のように現在のユーザーがどのシーケンス番号に
 あるかを管理し、シーケンス番号が戻ると
 エラーを出す方法があります。
 page2 でのタイムアウト時間が、不定期に
 長くなる可能性があるのであれば、
 画面上に明示的にタイムアウトを延長するボタンを
 配置するか、ブラウザスクリプトで、タイムアウト
 しそうになったら、特定のページを自動的に
 呼び出して、タイムアウトを更新する処理も
 考えられます。

 なお、ユーザーによっては、画面を開いたまま、
 会議にはいったり、出張に出てしまうといった
 ことも、考えられなくはないので、注意が必要です。

スケーラビリティから考えると、排他制御は
できるだけしないほうがいいと思いますが、
参考まで。
お礼コメント
yoshioz

お礼率 43% (29/67)

(D)HTMLでダイアログが出せるとは知りませんでした。
なかなかこれまでの業務をイントラに置き換えていくのは
難しいみたいですね。
お答えいただいた内容をふまえながら
なにかしら仕組みを考えていきたいと思います。
投稿日時 - 0000-00-00 00:00:00
-PR-
-PR-
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ