ServiceNowのサーバーサイド・スクリプティングのGlideRecord APIの使い方を紹介します。Glide Recordの概要を説明したあと、GlideRecordのスクリプティングの方法を、サンプル画像を使いながら、ハンズオン形式で進めていきます。解説後、実習にトライすることで、GlideRecord APIの知識とスキルを同時により深めていける内容になっています。
概要
ServiceNowのGlideRecordについて、サーバーサイドのスクリプティングの手順を説明します。本ハンズオンを完了すると、以下のイメージ画像のようなServiceNowのテーブルから指定したデータを取得できるようになります。
■ハンズオンでできるようになること
- GlideRecordのスクリプティングの手順を習得できるようになる。
- テーブルから指定したデータを取得し表示できるようになる。
まず、GlideRecordは、サーバーサイドのスクリプティングになります。
主な用途は、ServiceNow内のデータベースとやり取りするための手段として、データベース操作に使用されます。GlideRecordを使うことで、データベースのレコードに対して、CRUD(Create、Read、Update、Delete)の操作を実行できるようになります。
仕様
開発インスタンスは、ServiceNow Developer Programで取得した無償の開発インスタンスを使っています。インスタンスのバージョンはUthaリリースを使っています。インスタンスは、初期化した状態になります。
手順
次に、GlideRecordのスクリプティングの手順になります。GlideRecordは、1 つのテーブルのレコードを含むオブジェクトです。最初にGlideRecordオブジェクトをインスタンス化したあと、クエリによる範囲指定、クエリの実行、最後にスクリプトを実行する順番になります。
●GlideRecordのスクリプティング手順
- 目的のテーブルに対してGlideRecordオブジェクトを作成。
- クエリ条件として範囲を指定。
- クエリを実行。
- GlideRecordオブジェクトで返されたレコードにスクリプトを実行。
ここでは、インシデントテーブル(Incident)から[Priorityが1-Critical](優先度が1)であるレコードを取得したあと、[Priorityが1-Critical]であるレコードすべての”番号”(Number)を取得して表示させてみます。
まずは、事前準備になります。インスタンスを起動した後、[All]メニューから[Scripts – BackGround]を実行します。
サーバー上でJavaScriptを実行できる”Run Script”の画面がひらきます。
次に、GlideRecordのスクリプティング手順をすすめていきます。
- 目的のテーブルに対してGlideRecordオブジェクトを作成。
オブジェクト名は任意で構いません。ここでは、ServiceNow Developer Programのコースで使われているオブジェクト名(myObj)と同じにしています。
●基本構文
// 1. Create an object to store rows from a table var myObj = new GlideRecord(‘table_name’); |
目的のテーブルとなる”Incident”テーブルに対して、GlideRecordオブジェクトを新しく作成します。
myObj = new GlideRecord(‘incident‘); | var
- クエリ条件として範囲を指定。
クエリ条件として範囲指定を設定するには、addQuery()メソッドを使用します。AddQuery()メソッドは、検索クエリを構築し、条件に一致するレコードを返します。
addQueryのクエリ演算子には、以下のようなものがあります。文字列のクエリ演算子は、大文字である必要があります。クエリ演算子は必要な際に設定します。
- 数値: =, !=, >, >=, <, <=
- 文字列: =, !=, STARTSWITH, ENDSWITH, CONTAINS, DOES NOT CONTAIN, IN, NOT IN, INSTANCEOF
●基本構文
// 2. Build query myObj.addQuery(‘field_name’,’operator’,’value’); |
クエリの範囲指定として、Incidentテーブルの[Priorityが1]で設定します。今回は、クエリ演算子は設定なしにしています。
myObj.addQuery(‘priority’,’1′); |
- クエリを実行。
範囲を指定したあと、クエリを実行します。
●基本構文
// 3. Execute query myObj.query(); |
- GlideRecordオブジェクトで返されたレコードにスクリプトを実行。
クエリを実行したあと、GlideRecordオブジェクトで返されたレコードにスクリプトを実行します。next()メソッドは1件目のレコードが取得したあと、次のレコードがあれば、順に取得します。
●基本構文
// 4. Process returned records while(myObj.next()){ //Logic you want to execute. //Use myObj.field_name to reference record fields |
[Priorityが1]であるレコードすべての”番号”を表示させるスクリプティングを実行します。gs.printはGlideSystemメソッドの1つで、取得したパラメーターを表示するメソッドになります。
myObj.next()){ gs.print(myObj.number); } | while(
GlideRecordのメソッドの詳細な説明や種類については、以下、ServiceNow Developer ProgramのReferenceページをご参照ください。
■ServiceNow Developer ProgramのReferenceページ
GlideRecord(Utahリリース)
さいごに、これまでのGlideRecordのスクリプティングを”Run Script”にて入力したあと、[Run Script]ボタンをクリックして、スクリプトを実行します。
おつかれさまでした。GlideRecord APIを使って、Incidentテーブルから[Priorityが1]であるレコードを取得したあと、[Priorityが1]であるレコードすべての”番号”を取得して表示できました。
Incidentテーブルから[Priorityが1]であるレコードが27件あり、その番号すべてが表示されました。参考までに、実際にIncidentテーブルのレコードを確認してみると、[Priorityが1]であるレコードが27件あることが確認できます。
さらにスキルを深める【実習トレーニング】
ServiceNowのGlideRecord APIの使い方について、一通りの概要は掴めましたでしょうか。あとは、実習トレーニングで、GlideRecordを2,3回スクリプティングしてみると、GlideRecordをさくさくと使いこなせるようになると思います。
つぎは、ハンズオンで手慣れるGlideRecordの使い方【トレーニング】になります。ServiceNow Developerを目指して、トレーニング問題にぜひ挑戦してみてください。
参考資料
GlideRecord APIの使い方について、以下のServiceNowの公式資料を参考にしています。
- GlideRecord – スコープ対象(ServiceNow製品ドキュメント)
- スクリプトでのテーブルのクエリ(製品ドキュメント)
- Server-side Scripting – GlideRecord (ServiceNow Developer Program)
以上、”[ServiceNow]ハンズオンで習得! GlideRecord APIの使い方【解説】”となります。