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 メニューだけが表示される事が確認できた。
またなぜか Flow Designer, Service Portal Home, Service Portal Configurationの様なメニューの一番右側に「➚(右斜め上向きの矢印)」があるメニューはどうやら特殊なメニューらしく、 System Definition -> Application Menusの一覧にはそもそもエントリが無く、この方法では表示有無を制御できないようだ。
※表示有無の制御可否も不明。
またお気づきとは思うがあくまでフィルタナビゲータでのメニュー表示はロールに紐づいている様で、グループでは指定できない様子。仮にユーザの所属組織毎に表示メニューを変えるというような要望に対応するためには組織毎のロールを新たに作成し、組織毎のグループに付けておく等の運用を検討する必要がありそうだ。
正直大変なのであまりやりたくない。。。
0 件のコメント:
コメントを投稿