LoginSignup
7
3

More than 3 years have passed since last update.

ServiceNow Script私的まとめ

Posted at

ServiceNowのスクリプト大別

ServiceNow上でJavaScriptを記述して動かすことができるポイントがいくつかあるので、それらを観測している範囲でまとめました。

【参考文献】
ServiceNow Developerサイト
ServiceNow Developerブログ
BASICO SERVICENOW LEANING

Client Side Script

概要

Client Side Scriptとは読んで字のごとくクライアントサイドで動くJava Scriptのコードです。
クライアントサイドとはエンドユーザーが操作するインターフェース、つまりブラウザを指しています。そのためエンドユーザーがテーブルをロードしたときやレコードを保存した時など、インターフェース(ブラウザ)上での操作に対して相互的にスクリプトが走ります。
Client Side Scriptではテーブルのフィールドに値を入力したり、入力されている値をチェックしたり、インフォメーションメッセージを出したり、ポップアップを出したり...etc、といった様々な動作を行うことができます。

Client Side Scriptの4つの起動タイミング

Client Side Scriptには起動されるタイミングとして以下の4つを選ぶことができます。

  • onload()・・・ロード時
  • onChange()・・・指定のフィールドの値がフォーム画面から変更されたとき
  • onSubmit()・・・レコードを保存したとき
  • onCellEdit()・・・指定のフィールドの値がレコードの一覧画面で変更されたとき。

onLoad()

onLoad()関数内に書かれたコードはフォームのロード時に実行されます。
フォームのロードは新たにレコードを追加するときに発生するため、フォームに基本情報を自動入力するなどの動作を入れるときや何らかの情報をポップアップで記入者に知らせたいときに向いています。
ただし処理の量によってはフォームのロード時間にも影響するので最低限必要な処理のみにです。

short_descriptionを読み取り専用にする
function onLoad() {
   g_form.setReadOnly('short_description', true);
}

onChange()

フォーム内の値が変更されたときに実行されます。
特定の値が変更された際にその値に対応した処理を行う場合などに有用です。
対象にする値はField name欄の中に記述し、Scriptの中では制御しません。

image.png

short_descriptionに変更値を入力する
function onChange(control, oldValue, newValue) {            
    if (oldValue == newValue)
        return;
    g_form.setValue('short_description', true);
}

onSubmit()

フォームを保存したときに実行されます。
フォームが保存されたときに管理者に通知を送るなどの使い方ができます。

priorityの値が1のレコードを保存するときにユーザに確認のメッセージを表示する
function onSubmit() {
    var priority = g_form.getValue('priority'); 
    if (priority == 1)
        return confirm(getMessage('Submit a priority one ticket?'));
}

OnCellEdit

レコードの一覧になっている画面では任意のフィールドをダブルクリックして内容を編集することが可能だが、
そのタイミングで実行されるスクリプト

Server Side Script

概要

Server Side Scriptはサーバー・データベースの部分で実行されます。
Server Side Scriptではデータベースに対してのCRUD操作や他のサービスへのrequestの送信とresponseの受け取り、メールの送信などの動作を行うことができます。
ServiceNowのServer Sideでできることは非常に多岐にわたるためここではすべてを網羅しきれないですが、主だったものを以下に示していきます。

Scripts-Background

Scripts-BackgroundはServer Side Scriptのコードを実行できます。
ただコードを実行できるだけでなく、下のチェックボックスでスコープやデータベースの変更を追う設定などを追加することができます。

image.png

Business Rules

レコードの挿入時・表示時・更新時・削除時・検索時といったレコードに関する操作のタイミングで実行できるServer Side Scriptを設定できます。
複数の異なるタイミングで実行されるBusiness Ruleを組み合わせることでレコードに対する処理の流れを作ることもできます。
Business Ruleは実行されるアクションをスクリプトだけでなくフォームでの値を設定する形で決めることもできるのでスクリプトが書けなくても動かすことができる、すなわちNoCode開発が可能な部分でもあります。

Script Include

Script Includeに書かれた関数やクラスはBusiness RuleやScript ActionなどのServer Side Scriptで利用できるようになります。
さらにClient Sideからの呼び出しを可能にすればGlide Ajaxを使うことでClient Side Script内でServer Sideのコードが使えるようになります。あまり詳しくないのであれですが、やや密結合気味になるので感覚的にはつかみづらかったです。

UI Action

UI ActionはServer SideとClient Sideのどちらでも使えます。
UI Actionはフォームへのボタン・リンク・メニューなどの追加と動作の指定を行うことができます。

Service Portal

モバイルアプリケーションをビルドするために使わる?らしいです。モバイルアプリは使ったことがないので割愛。

Script Action

Script ActionはBusiness RuleのイベントをトリガーとしてServer Side Scriptを実行できます。

以下筆者の勉強不足により詳細不明

UI Page

UI Macro

Reference Qualifier

Workflow Script

Transform Map Scripts

7
3
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
7
3