11
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【ServiceNow】フォームの表示制御

Posted at

フォーム

Nowプラットフォームでの管理者(一次受付、二次対応者)サイドが業務で使うことを想定した入力フォームです。イメージは下記。
acda.png
実開発においては、フル機能が提供されている上記フォームから、業務要件に合わせて表示項目を増減させたり、必須入力項目を出したり、バリデーションを行ったりなどの各種制御を施すことが絶対不可欠となる。

ServiceNowの特徴

そして、フォームのそれぞれの項目は別テーブルで管理されている。
ServiceNowのNowプラットフォームを代表する特徴はすべての機能をテーブル単位で格納していることだと個人的に思っている。資産管理の資産情報、インシデント管理のインシデントなどといった固有データ、承認ワークフローなどの非定型データ、ServicePortakなどのUI部品、クライアント・サーバなどのスクリプト、各種機能別のプラグイン、といったありとあらゆるWebアプリケーション開発のすべてがテーブルによって管理されているのは、慣れるまでは癖があるが、慣れたらその一貫性のゆえにありがたくも感じる。

テーブルごとの管理、ということ

上の図においては、一枚フォームですら、

  • property
  • ui action
  • contexual search
  • form layout

その他などの多数のテーブルがモジュールとして結合しているが故の表示形式なのである。

前置きはこれくらいにして、本題

今回やることは、不要な表示項目を消すオペレーションです。消す方法は、いろいろありますが(フォームのだしわけ、UIポリシーにスクリプトで制御、ACLで権限を付与しない、部品をActive=Falseで非活性にするなど)
今回はひとつひとつ見ていこうと思います。本質的な対応はACL(Access Control)やViewの作成になるとは思いますが、それ以外の方策を考えます。

1.manage attachmentボタン

①下記のフォームボタンを消したい場合
manage.png

system definition > client scriptsを変更することで消すことが可能
FireShot Capture 054 - disable attachment button on upper - Client Script - Nowプラットフォーム_ - dev74512.service-now.com.png
g_form.disableAttachments()というメソッドを使用すれば消えます。結果↓
aa.png
②条件付きで消したい場合

callerの入力値がGuestの場合、attachmentを無効にしたい場合

adfdsf.png
スクリプトを少し改変します

condition_change.js
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
        //callerの値によってifconditionで表示を変更しています
	var checkValue = g_form.getDisplayBox('caller').value;
		if (checkValue == "Guest"){
			g_form.disableAttachments();
		} else {
			g_form.enableAttachments();
		}
}

これで動きます。

2.show activity stream ボタン

次はこれを消したい。
dfggff.png
消す方法
system property(sys_properties.list)テーブルに、glide.ui.activity_stream.form_buttonという項目があるので(True/False型)、falseに設定する。
FireShot Capture 057 - System Properties - Nowプラットフォーム - dev74512.service-now.com.png

3.personalize_form ボタン

次はこれを消したい
gfsdg.png
消す方法
前の項目同様、system property(sys_properties.list)テーブルに、glide.ui.personalize_formという項目があるので(True/False型)、falseに設定する。

4.more optionボタン

dhtd.png
これは1)のattachmentボタンと同様、client scriptにスクリプトを追加することで消すことができます。
DOMで要素を取得して消しましょう。
具体的には、下記のスクリプトを追加します。

hide_toggle.js
$('toggleMoreOptions').hide();

5.followボタン

FireShot Capture 059 - INC0010035 - Incident - Nowプラットフォーム - dev74512.service-now.com.png
上記のfollowボタンはsystem property(sys_properties.list)のglide.live_feed.task_header_buttonlive_feedにすることで消すことができます。

6.UIアクションたち

FireShot Capture 059 - INC0010035 - Incident - Nowプラットフォーム - dev74512.service-now.com.png
のUpdate,aaaaa,Resolveなどのボタンたちは、ITSMでの運用上に不可欠なボタンです。ですから、UI ActionをActive=Falseとするのではなく、

  • 専用のViewを作ってから
  • UI ActionにViewのVisibilityを設定してあげること
    で表示制限をすることをお勧めします。
    dfasf.png
    画面スクロールして、
    FireShot Capture 061 - aaaaaaaaaaa - UI Action - Nowプラットフォーム - dev74512.service-now.com.png

上記のExclude設定の効果を見ますと、
FireShot Capture 063 - INC0010035 - Incident - Nowプラットフォーム - dev74512.service-now.com.png
確かに消えていますね!UI ActionはView設定のinclude/excludeで行いましょう!

入力フォームのだしわけ

下記の入力フォームの中身は、FormLayoutで編集が可能です
aadfs.png
三本線のconfigure>formlayout
FireShot Capture 065 - INC0010035 - Incident - Nowプラットフォーム - dev74512.service-now.com.png
下記の画面に遷移するので左右で編集できます!

sfgd.png
これである程度の項目が出たと思います。
別稿では、contexual searchについて書いていきたいですね。

11
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?