複数タブでの操作の防止

Ryouta Kodama
Tera Contributor
コミュニティの皆様、いつもお世話になっております。
ServiceNowで同一ブラウザ複数タブで操作されるのを防ぐ手段をご存知でしょうか?
BtoCのWebブラウザでのサービスでまれに複数タブ開いて作業するとアラートが上がる物もある記憶で、もしそのようなプロパティ値など何か情報あればと思い質問しました。
(別ブラウザなど複数セッションに関する記載は見つけました
https://docs.servicenow.com/ja-JP/bundle/tokyo-platform-security/page/integrate/authentication/conce...
例えば、ReadOnlyの制御はonLoadのタイミングで実装しているのを、別タブで操作した後に、先に開いて放置していたタブから保存されるなどして困っています。
2 ACCEPTED SOLUTIONS

@Ryouta Kodama 

未検証ですが、Before update のBRを使用して、currentのレコードの更新回数と更新日時とDBにあうそのレコードの更新回数と更新日時を比較し、不一致なら、更新を中止し、エラーメッセージを出すことは可能かな?

 

Please mark my answer as correct and helpful based on Impact.

View solution in original post

iwai
Giga Sage

PlatformでのRecord表示であれば、今誰がどのレコードを表示しているか管理しているsys_amb_channel_presence テーブルがあります。 例えばIncidentで 複数の人が同じRecordを表示しているときに、ヘッダーに同じRecordを見ている人のアイコンが表示されます。この機能のためにsys_amb_channel_presenceテーブルが利用されているようです(不確か)。このテーブルを検索することで、すでに自分が表示しているかどうかも把握できるはずです。 タブを閉じると消えてなくなります。 詳しい動作などを説明したページはありませんが、検証してみる価値はありそうです。

ページを表示するときにすでに自分が表示している状態(sys_amb_channel_presence に自分のレコードがある)ならページ表示を制限する、数秒おきにRecordの状態を監視してRecordが消えたら、独占としてページの状態を復帰させるなど制御できそうです。閉じて開いてを連続で行うと、タイミング的に重なることもありそうなので、その調整や対処は必要そうです。

View solution in original post

6 REPLIES 6

@Ryouta Kodama 

未検証ですが、Before update のBRを使用して、currentのレコードの更新回数と更新日時とDBにあうそのレコードの更新回数と更新日時を比較し、不一致なら、更新を中止し、エラーメッセージを出すことは可能かな?

 

Please mark my answer as correct and helpful based on Impact.

iwai
Giga Sage

PlatformでのRecord表示であれば、今誰がどのレコードを表示しているか管理しているsys_amb_channel_presence テーブルがあります。 例えばIncidentで 複数の人が同じRecordを表示しているときに、ヘッダーに同じRecordを見ている人のアイコンが表示されます。この機能のためにsys_amb_channel_presenceテーブルが利用されているようです(不確か)。このテーブルを検索することで、すでに自分が表示しているかどうかも把握できるはずです。 タブを閉じると消えてなくなります。 詳しい動作などを説明したページはありませんが、検証してみる価値はありそうです。

ページを表示するときにすでに自分が表示している状態(sys_amb_channel_presence に自分のレコードがある)ならページ表示を制限する、数秒おきにRecordの状態を監視してRecordが消えたら、独占としてページの状態を復帰させるなど制御できそうです。閉じて開いてを連続で行うと、タイミング的に重なることもありそうなので、その調整や対処は必要そうです。