RIA 多重起動禁止方法
いつも拝見させていただいております。
早速質問ですが、RIAにてタブレットで受注入力を行うというシステムを構築しております。
ログオン時にログオンIDに対して多重起動制限をかけたく思っております。
ログオンIDをロックリソース名にし、Lock関数を用いた実装を考えましたが、
ネットワーク障害や事故等でセッションが残ってしまった場合に、
Unlockできず次回復帰時にログオンできなくなってしまうまずさに気づきました。
なにか良い方法などありませんでしょうか?
お知恵をおかしください。
-
ISHIJIMAさま
ご返信ありがとうございます。
なるほど。
ログインIDごとにコンテキスト情報を書き込んでおけばあとはどうとでもなりそうですね!
経過時間で自動的にコンテキストをキルするのか、手動でキルするのか、手動の場合、ユーザー自身が判断して行うのか、システム管理者が行うのか。
など考慮し、お客様に提案してみます。
ありがとうございました。 -
最後に入力があってから何分したらコンテキストを初期化するかという設定は、「動作環境」→「アプリケーションサーバ」→「コンテキスト非稼働タイムアウト」で設定できます。
初期値は「864000」となっていますので、24時間待機するという設定になっています。ここを30分とか1時間とかに変えてやれば、そのタイミングでコンテキストが消滅します。
xpaの初期の頃はここの初期値が10分とかになっていたので、ちょっとトイレに行っている隙に入力途中の伝票が消えてしまったとかいう現象がありましたので、今では初期値が24時間に変わりました。
また別の方法としては、メインプログラムで時間を計り、最後の入力から何分経過したら強制的にコンテキストをKillするかという設定を行うこともできます。
-
ISHIJIMA様
追加情報ありがとうございます。
質問ですが、ダミーでバッチ起動するというのは、メインプログラムなどでタイマーイベントを使って
ロジックの記述のないバッチタスクをコールするということであってますでしょうか?
-
tanda様
ご回答ありがとうございます。
コンテキストの初期化は、iniファイルでも設定できたのですね!知らなかったです。
経過時間でコンテキストをあれこれするのは、閾値の設定がうまくいかないような気がしてて
やめようかなと思っています。
ユーザーが自分の意思でコンテキストKillしたほうが後々もめないかなと・・・。
受注入力中に勝手に落ちてしまったらユーザーからクレームの嵐でしょうから。
-
コンテキストをクローズしたり、Killしたりするだけでしたら、CtxClose() 関数や CtxKill() 関数が用意されていますよ。
-
ISHIJIMA様
ご返信ありがとうございます。
RIAシステムはクラサバシステムと違って、トランザクションの考え方や、セッション管理方法など
異なることばかりでなかなか思うようにいきませんね。
レコード前にサーバー処理を書くとF8チェックで警告が出ますし。
メインソースでは極力リンクを張らないなどの考慮も必要ですし。
慣れていきたいと思います。
もっさり感はなんとかならないですかね。。。
サインインしてコメントを残してください。
コメント
6件のコメント