見出し画像

[ServiceNow]Multi-row variable setでできないこと

ServiceNowのワークフロー機能には、動的な申請フォームを実現するためのMulti-row variable set(MRVS)という機能がありますが、実はこの機能手の届かないところがちょこちょこあります。そして、その中には製品検討時には気づかなそう&導入を始めた後で気づくと割と大きな課題になりそうなものもあるので、情報をシェアしたいと思います。

なお、この記事はRomeバージョンのドキュメントを参考に書いていますが、MRVSはバージョンアップごとにどんどんできることが増えており、情報が古くなっている可能性があるのでご注意ください。

Multi-row variable set(MRVS)がなぜ必要か

ServiceNowでは、Catalog Itemという機能を用いて申請フォームを作ることができます。Catalog Itemには、申請フォーム内の一つ一つの入力欄であるvariableを配置していくのですが、しばしば入力欄の個数を可変(動的)にしたい場合があります。この時に使うのが、Multi-row variable set(MRVS)です。予め項目を定義しておくことで、行数が可変の、2次元表の形式の入力欄を作ることができます。

なお、動的なフォームと聞くと、Web系の方はjavascriptでhtmlを操作して…と考えると思うのですが、ServiceNowでは、htmlを直接いじること(DOM Manipulation)はBad practiceとされており、すべきではありません。また、仮にそれを行って申請フォーム上は動的に見えたとしても、申請情報をDBに格納する処理は予め定義したvariable/variable setの項目しか処理してくれないため、使えません。

MRVSは、Excel添付の代替案として機能します。多くのワークフローシステムにおいて、可変長(動的)な入力フォームを作るのではなく、Excelのフォーマットを用意しておき、それを添付する、という方法が取られていると思います。しかし、Excel添付では、申請時に値のバリデーションをかけたり、申請されたデータを入力項目の値で検索したり、申請データをもとに統計処理を行う、といったことが困難です。そこで、ServiceNowを導入する際には、Excel添付を残すか、MRVSに置き換えるか、という選択が発生します。

ここからは、MRVSが標準では対応していない機能について、よく聞かれる/出会う順に説明します。これらが原因で、場合によってはExcel添付を残したほうがよい、という判断になる場合もあると思います。

標準ではモバイル対応していない

モバイルアプリ(Now mobile)に対応していません。具体的には、MRVSを含む申請のRITM/Request viewをモバイルアプリ(Now mobile)で開いた際に、下記の様なメッセージが表示されてしまい、入力された内容を見ることができません。

画像2

DOCSには「サポートされている」との記載がありますが、これはこれは申請時に対応している、という意味であり、もう少し後にRITM/request viewでは対応していないよ、と書かれているので注意してください。(*1)

申請時には対応しているよ、という記載
Both single-row and multi-row variable sets are supported in Now Platform, Service Portal, Now Mobile, and in the Variable editor in Agent Workspace.

RITM/request viewでは対応していないよ、という記載
In the RITM and request view in Now Mobile, an MRVS is not supported. A message is displayed in this view that this variable set is not viewable.

これはノックアウト・ファクターになりえるので、特に注意が必要です。

大量入力を補助する機能がない

Excelを使う場合、コピー&ペースト、オートフィル、関数、マクロを使って、大量入力を楽にすることができます一方で、MRVSは"Add"ボタンで一件一件追加していくしかないため、何百件というデータを入力する必要がある場合には、申請が大変になります

具体的なユースケースとしては、1年おきに更新が必要なシステムの権限の申請において、1年ごとの更新のタイミングで自部署のメンバの権限を棚卸し、一括で更新の申請を行いたい、というような場合です。

このような場合には、大量入力が必要になる部分はExcel添付にしておいたり、そもそもの業務プロセスを見直し、大量入力が発生しない仕組みにしておく必要があります。コピー&ペースやオートフィル、Excelからのデータ取り込み機能をカスタマイズする方法もありますが、複雑になるためあまりお勧めしません。

一部のデータ型、ビジネスロジックが使えない

チェックボックスをまとめるためによく使うLabel型のvariableや、UI PolicyやClient Scriptを用いたvariableの表示/非表示の制御など、一部の機能が利用できません

利用できない機能については、各機能のドキュメントで「not support」などと調べるとわかります。また、MRVSのドキュメントには、サポートしていないデータ型がまとまっています。(*1)

これらの特徴として、表形式にしたときに違和感が出る機能、がサポートされていない傾向にあるようです。MRVSは、入力後、下記の様に表形式で表示されます。この際、例えば、Label型は表形式で見たときに存在していると、その列だけ常に固定値ということになり不自然です。また、表示/非表示を行ごとに切り替える場合、非表示の行が歯抜けになってしまうため、これも不自然です。

画像1

できること

最後に、実はこれはできるんだよ、ということを紹介したいと思います。

Scriptでの操作
MRVSの値はJSON文字列として格納されているため、Scriptでの操作は可能です。

必須/必須
Multi-row variable setは、通常のvariableの様に、必須のチェックボックスが存在しないため、必須にすることができませんが、UI Policyを使うことで必須にはできます。

Catalog Itemフォーム上での表示
FlowのCreate Catalog Taskで生成されたCatalog Taskにおいて、フォーム上に表示するvariableの選択肢において、以前はMRVSを選ぶことができませんでしたが、Quebecバージョンから可能になりました。

おわりに

Multi-row variable setを使うことで、正規化された任意のデータ構造をServiceNowの中に抱えておくことができて便利なのですが、関連機能においてちょくちょくMulti-rowはサポートされていない、ということがあり、まだ発展途上の機能ではあります。とはいえ、個人的には今後の改善でどんどん便利になっていくだろうという期待も含め、できるだけ活用するようにしています。

参考

(*1) Service catalog variable sets

この記事が気に入ったらサポートをしてみませんか?