2020年10月11日日曜日

ServiceNowのデフォルトではテンプレート化できない項目をテンプレート化する(例)

テンプレートの使い方自体についてはこちらの記事を参照。

便利な機能ではあるのだが、テンプレートを使い始めてみると、必ずしもすべての項目がテンプレート化できるわけではないことに気づく。

例えばナレッジのテンプレートを作ろうとしても、↓の様にKnowledge Baseはそもそもテンプレート化対象の項目として指定できないのだ。


これにはセキュリティにかかわる設定を変更する必要がある。

まずは右上のメニューからElevate Rolesでsecurity adminに昇格する。


security_adminにチェックしてOK。

項目毎のKnowledge化可否はACLで設定されているようなのでフィルタナビゲータへACLと入力し、System Security -> Access Control(ACL)を表示させる。
+Operationを=save_as_templateでフィルタする。

どうやらNameがkb_knowledge.*となっているエントリが怪しそうなので〇にiのマークからOpen Recordで開いてみよう。

中のdescriptionを見てみると「Allow save_as_template for all fields in kb_knowledge, if the ACL script returns true. The script returns false for fields that are excluded from this.」と書いてある。

どうやら、スクリプトがフィールド毎にTrueかFalseを返し、Falseのフィールドはテンプレート化できない、という作りの様である。

スクリプトを見てみると・・・
answer = true;
var col = root_rule.split('.')[1];
var excluded = ["number","kb_knowledge_base","topic","workflow_state","kb_category","category","disable_commenting","disable_suggesting","author"];
if (col.indexOf('sys_') > -1 || excluded.indexOf(col) > -1) 
answer = false;

answer = answer && (gs.hasRole("knowledge_admin") || gs.hasRole("knowledge_manager") || new KBKnowledge().canCreate());

var excluded の中にしっかりkb_knowledge_baseと入っているので、このおかげでKnowledge baseがテンプレート化できないのだろう。

次のように変更(「,"kb_knowledge_base"」を削除)してみる(実用上はkb_categoryとcategoryも消してしまっても良い気がするが・・・)。

answer = true;
var col = root_rule.split('.')[1];
var excluded = ["number","topic","workflow_state","kb_category","category","disable_commenting","disable_suggesting","author"];
if (col.indexOf('sys_') > -1 || excluded.indexOf(col) > -1) 
answer = false;

answer = answer && (gs.hasRole("knowledge_admin") || gs.hasRole("knowledge_manager") || new KBKnowledge().canCreate());

この状態でアップデートを掛ける。


さて、なんでもよいので(Create Newでもよいので)ナレッジの記事=フォーム画面を開いて、実際にKnowledge baseの項目がテンプレート化できる様になっているか確認してみる。

ちゃんとKnowledge baseもテンプレートとして指定・保存が可能になった。

デフォルトでKnowledge baseがテンプレート化できないようになっている意図は正直推し量れない。個人的にはナレッジベース単位で記載ルールを変えたりすることも十分あるし、ナレッジベース単位で管理者が違ったりということも想定しやすいので、ナレッジベースやカテゴリまではむしろテンプレート化できた方が良いと考える。

ただ、虫眼鏡マークの参照項目なので、変な入力をされると危険、みたいな判断が働いているのかもしれない。このあたりの事情をよくご存知の方がいたら是非教えを請いたい。

次回:ServiceNowのテンプレートでスクリプト(Javascript)を使う


0 件のコメント:

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

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