はじめに
ServiceNowは年2回のメジャーバージョンアップが行われており、開発者・利用者にとって有益な機能が継続的に提供されています。今回は、AI Platformの新機能をPDIでの実際の操作を交えながら検証してみました。
Australiaバージョンから追加された機能
ServiceNow AustraliaバージョンからRead Onlyが3(+1)パターンに分類されています。1
| 種別 | 概要 |
|---|---|
| Display Read Only | UI上ではフィールドを読み取り専用として表示します。APIやClient Script操作では変更可能です。 |
| Client Script Modifable | UI上ではフィールドを読み取り専用として表示します。クライアントスクリプト経由のみ変更可能です。 |
| Strict Read Only | UI上ではフィールドを読み取り専用として表示します。クライアントスクリプトとサーバーサイドAPIの両方からの変更はできません。 |
| (Instance Configured) | Australiaリリースの前に作成された読み取り専用フィールドに適用される、デフォルトのオプション値です。互換性の維持などに利用します。 |
動作検証
テーブル構成
Display Read Only
Client Script Modifable
以下の通りonChangeタイプのClient Scriptを準備しました。

中略
// u_nameが変更されたらすべてのRead Onlyフィールドに値をセット
g_form.setValue('u_display_read', 'Test Client After_display');
g_form.setValue('u_client_script_read', 'Test Client After_client');
g_form.setValue('u_strict_read', 'Test Client After_strict');
予想通り、Display Read OnlyとClient Script Modifableのフィールドのみ更新がかかりました。

Strict Read Only
REST API Explorerの場合
以下の通り、REST API Explorerで実行してみました。


予想通り、Display Read Onlyのフィールドのみ更新がかかりました。


Background Scriptsの場合
今回は以下の2パターンで検証を行いました。
抜粋
// GlideRecordSecureで試行
var gr = new GlideRecordSecure(tableName);
if (gr.get(targetSysId)) {
gr.u_display_read = "Display Chage Data";
gr.u_client_script_read = "Client_mod Change Data";
gr.u_strict_read = "Strict Change Data";
var result = gr.update();
}
:
:
抜粋
// GlideRecordで試行
var gr = new GlideRecord(tableName);
if (gr.get(targetSysId)) {
gr.u_display_read = "Display Chage Data";
gr.u_client_script_read = "Client_mod Change Data";
gr.u_strict_read = "Strict Change Data";
var result = gr.update();
var result = gr.update();
:
:
結果は、以下の通りです。
・GlideRecordSecureで試行

GlideRecordSecureでは期待通りの結果が得られました。一方、GlideRecordではすべてのフィールドが更新されています。この違いは、それぞれのAPIにおけるアクセス制御の仕組みの差によるものと考えられます。2
まとめ
当然といえば当然ですが、Docsに記載されている通りの動作がしっかり確認できました。
| No | Read Only Option | UIフォーム | Client Script | サーバーサイド(TableAPI,GlideRecord等) |
|---|---|---|---|---|
| 1 | Display Read Only | ❌ 読み取り専用 | ✅ 変更可 | ✅ 変更可 |
| 2 | Client Script Modifiable | ❌ 読み取り専用 | ✅ 変更可 | ❌ 変更不可 |
| 3 | Strict Read Only | ❌ 読み取り専用 | ❌ 変更不可 | ❌ 変更不可 |
ServiceNowのセキュリティ機能は年々進化しており、UIから手軽に使える機能もこれからさらに充実していくでしょう。標準機能を信頼することはもちろん大切ですが、時には"当たり前"とされていることを自分の手で検証してみることも、理解を深める上で意味があるかもしれません。目新しい内容ではなかったかもしれませんが、少しでも参考になれば幸いです。


