こんにちは
SCSKの庄司です。
今回は、ServiceNowの複数行の変数セット(Multi-Row Variable Set)を紹介していきます。
変数セットとは
Servicenowではカタログアイテム画面(申請画面)上に、「変数」と呼ばれる入力項目を配置できます。
それらの「変数」を再利用可能なひとかたまりにしたものが変数セットです。変数セットには「単一行」と「複数行(MRVS)」の2種類があります。
以下、「単一行の変数セット」と「複数行の変数セット」の簡単な比較表になります。
項目 | 単一行の変数セット | 複数行の変数セット |
---|---|---|
入力形式 | 単票(1セット=1件) | 表形式(行を追加/削除して複数件登録可能) |
画面の見え方 | フィールドが縦並び | テーブル(行×列) |
値の実体 | 変数ごとの単一値 | JSON文字列(配列の中に行オブジェクト) |
バリデーション | 変数単位でチェック | 配列を走査して行ごとにチェック |
用途 | 単体の申請フォーム | 一括登録、一覧表示など |
本記事ではタイトルの通り、「複数行の変数セット」に絞って解説します。
複数行の変数セットの作成手順/オプション
①すべて > サービスカタログ > カタログ変数 > 変数セット に遷移し、[新規]を押下
③各項目を入力して送信。
今回はユーザー登録をするための申請を想定して作成します。
④送信後、[変数]/[カタログクライアントスクリプト]\[カタログUIポリシー]などの関連リストが表示されるので、必要に応じて変数セット内の変数や処理を作成します。
複数行の変数セットのオプション
- 変数セットの属性:max_rows=xx(任意の数字)を入力することで、複数行の変数セットの最大行数を指定することが可能です。(デフォルトでは50行)
システムプロパティ「glide.sc.multirow_set.rows.size」でも上限設定は可能ですが環境全体に適用されるため、個別制御したい場合は変数セットの属性項目での指定が推奨です。
デフォルトでの上限値は50行です(バージョン等により異なる可能性があります)
画面上の挙動確認
項目を入力して再度 [追加] を押すと、1行の値としてテーブルに追加されます。
複数行の変数セットの値の取り扱い-カタログクライアントスクリプト
比較表にも記載の通り、複数行の変数セットの値はフォーム上では1つの“JSON文字列”として扱われます。
試しに、以下のonSubmitカタログクライアントスクリプトを実行して値がどうなっているかを確認してみます。
処理内容としては複数行の変数セットの値を取得して、画面上部に表示させるものです。
function onSubmit() { //Type appropriate comment here, and begin script below var mrvs_value = g_form.getValue("u_register_user"); g_form.addInfoMessage(mrvs_value); return true; }
成形すると以下の通り、変数名:値の形です。
このままの状態では扱いずらいため、必要に応じて値を加工してあげてください。
{ "u_department": "5d7f17f03710200044e0bfc8bcbe5d43", "u_first_name": "test1", "u_mail_address": "test1@test.jp", "u_telephone_number": "090-xxxx-xxxx", "u_last_name": "test1" }, { "u_department": "221f79b7c6112284005d646b76ab978c", "u_first_name": "test2", "u_mail_address": "test2@test.jp", "u_telephone_number": "", "u_last_name": "test2" }
複数行の変数セットの値の取り扱い-Flow Designer
また、同様にフローでも複数行の変数セットは通常の変数や単一行の変数セットとは扱いが異なります。
例えば、「部署」項目の値をチェックし、その項目に「IT」があった場合に承認要求をする処理を作成しました。
フロー概要:
- 部門レコードを取得
- カタログ変数を取得:複数行の変数セットの値を取得
- For Each:複数行の変数セットを行ごとにループ
- 条件分岐:行の「部署」列が「IT」なら true
- 承認要求
肝になるのは2と3です。
複数行の変数セットを配列としてフローに渡しFor Eachで回すことで、1行目はfalse、2行目はtrueのような行別での判定が可能になります。
最後にフローの動きをチェックしてみます。
RITM0010006の内容は以下のようになっており、一行目の部署はDvelopmentで、二行目はITになっています。
テスト実行結果
一行目は4の判定がfalseになっていますが、二行目はtrueになっています。
各行の中身を除いて判定出来ていることが確認できました。
まとめ
以上、複数行の変数セットに関する紹介でした。
あまり出番が多くないかもしれませんが、使いどころを知っておくと設計の選択肢がぐっと広がります。
ぜひ参考にしてみてください。