2020年11月13日金曜日

フィルタナビゲータのメニューを制御する

Servicenowには非常に多くの機能がデフォルトで備わっている。

基本的にフィルタナビゲータで検索して機能を使用するUIになっているが、一部のユーザからは「メニューが多すぎて訳が分からない!使う奴だけ出してくれ!」という様な要望を受けることがある。

個人的見解としては「はぁ?検索しろやタコ。使わないと思うなら使わないでおけば?」と思ってしまうのだが、そう言い放つわけにも行かないわけでカスタマイズが必要な場合のやり方をメモしておく。

デフォルトのデモデータに用意されているabel.tuterを例にする。

このユーザにはRolesとして「snc_internal」だけがついており「Groups」には何もついていない状態である。

このユーザにImpersonateしてみると、メニューは次の様にシンプルな表示となっている。


なんでもよいのだがこのユーザに表示されていない「Incident」のメニューを表示させてみたい。


この設定はSystem Definition -> Application Menusで行われている。
※sys_app_application.list でもOK。


この中から Incidentの定義を探す。


Rolesの鉛筆マークから編集モードにしsnc_internalを追加。


レコードをupdateして次の状態になる。


abel.tuterにImpersonateして確認してみると、「Incident」のメニューが表示されている事が確認できる。

また、Incidentのアプリケーションメニュー全部ではなく例えばアプリケーション内の特定のメニュー、今回の例では Open だけ表示させたいような場合は、(Impersonateをやめて)まずアプリケーションのロールからsnc_internalを外す。


保存し、画面下部のOpenのところをクリック。


Visibility のロールとして snc_internalを設定し done。

Override application menu roles にチェックを入れてSave。


abel.tuterに再度Impersonateしてみると・・・想定通り、Incident の中の Open メニューだけが表示される事が確認できた。

ちなみに今回はあくまで手順の紹介としてsnc_internalにincidentのアプリケーションを表示させたが、実際は当然ながらもうちょっとよく考えて割り当てるロールを設計する必要がある事と、データベースへの書き込み等の権限については又別の設定でありこの設定はあくまでフィルタナビゲータでの表示制御だけ、となる事はご注意を。
※この設定で任意のロールについてメニューを非表示にしてもincident.list等とやって直接見に行けば、そのテーブルに有効なロールを持っているユーザは権限に応じた操作が可能。

またなぜか Flow Designer, Service Portal Home, Service Portal Configurationの様なメニューの一番右側に「➚(右斜め上向きの矢印)」があるメニューはどうやら特殊なメニューらしく、 System Definition -> Application Menusの一覧にはそもそもエントリが無く、この方法では表示有無を制御できないようだ。
※表示有無の制御可否も不明。

またお気づきとは思うがあくまでフィルタナビゲータでのメニュー表示はロールに紐づいている様で、グループでは指定できない様子。仮にユーザの所属組織毎に表示メニューを変えるというような要望に対応するためには組織毎のロールを新たに作成し、組織毎のグループに付けておく等の運用を検討する必要がありそうだ。

正直大変なのであまりやりたくない。。。


0 件のコメント:

ウェブサイトのURLにおけるトレイリングスラッシュの解釈と有無による動作の違い

インターネットが現代社会におけるコミュニケーションの基盤となっている今日、ウェブサイトのURLはビジネスや個人ブランディングにとって重要な役割を果たしています。URLは単にウェブページへの経路を示すだけでなく、SEO(検索エンジン最適化)においても重要な要素です。この記事では、U...