- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
こんにちは。ServiceNowでトレーナーを勤めている井澤です。アプリケーション開発に関連するトレーニングを担当しています。本ブログでは、アプリケーション開発系のトレーニングで扱う内容について、そのエッセンスを紹介していきたいと思います。
ServiceNow上のアプリケーション開発について、またトレーニングの内容についてイメージを持ってもらえるように、Now Platformの各種機能を使って、簡単なアプリケーションを作っていきます。毎回、いくつかの開発ツールやプラットフォームの機能に触れながら、少しずつ機能を付け足していく予定です。
以前の記事:
(1) StudioとGuided Application Creatorでテーブルとフォームを作成する
(2) テーブルのレコードを作成するための画面をレコードプロデューサーで開発する
1. 今回開発するもの:UIポリシー
今回は、自分の作業内容を記録するアプリケーションの入力フォームに、ルールを設定します。
実は、以前に作成したアプリケーションの入力フォームでは、作業のメモを入力しないままでも、保存ボタンを押して、レコードを作成・保存できてしまうのです。
これでは、中身の無いレコードが記録されてしまい、アプリケーションの動作として適切ではありません。
リストで見ると、(empty)というログになっています。
そこで、ログのテキストは入力必須にするように、フォームにルールを設定することにしましょう。今回は、UIポリシーという機能を利用します。
UIポリシーは、フォームまたはビューにおいて、フィールドの値が指定した条件を満たした場合に、フィールドの属性を動的に変更する機能です。スクリプトを書かずに、次の三つの属性を変更させることができます。
- 入力必須(Mandatory)
- 表示 (Visible)
- 読み取り専用(Read Only)
このうちの入力必須(Mandatory)を利用して、My Logのフォームが開かれたら、Log Textフィールドを入力必須にするようにしましょう。なお、この「指定したフィールドについて属性を操作する」部分は、UIポリシーアクションといい、UIポリシーの本体を作成した後、属性を操作するフィールドごとに作成します。一つのUIポリシーの中で、二つのフィールドの属性を変えるなら、二つUIポリシーアクションを作るわけです。
UIポリシーはテーブルを指定して作成します。そのテーブルのフォームのすべてのビューを対象にすることもできますし、複数のビューの中から特定のビューに対してのみ、UIポリシーを有効にすることもできます。
UIポリシーについて指定できる内容の詳細は、製品ドキュメントをご覧ください。
UI policies (Orlando)
(参考)ビュールール
ServiceNowが持つビュールール(View Rule)という機能を使うと、ユーザーのロールに合わせてビューを強制することができます。ビュールールとUIポリシーを組み合わせれば、「特定のロールを持つユーザーのためのビューを作って、そのロールを持つユーザーに、そのビューを使うよう強制する。そのビューに対してUIポリシーを設定する」ということができます。つまり、「あるロールを持つユーザーは、必ず特定のフィールドを入力しなければならない」(他のロールのユーザーは必須ではない)という機能が実装できるわけです。
View Rule(Orlando)
2. Studioを起動し、UIポリシーのアプリケーションファイルを作成する
UIポリシーは、Studioを使って作成できます。アプリケーションナビゲータで[System Application]>[Studio]とたどってStudioを起動し、以前作成したMy Logアプリケーションを選びます。
StudioがMy Logアプリケーションを開いたら、画面左上の[Create Application File]をクリックします。
ポップアップしてきた[Create Application File]ウィンドウの、虫眼鏡アイコンのフィールドで、[UI Policy]と入力します。これは、作成するアプリケーション要素を選択している作業です。
中央の[Filter Results]のリストの中から、[UI Policy]を選びます(※上に表示されているCatalog UI Policyは、サービスカタログアイテム用のUIポリシーで、別の機能です。間違えないように注意してください!)。
[Create]ボタンを押して、作成を始めましょう。
3. UIポリシーを作成する
表示されるNew UI Policyフォームに対して、以下のように設定をします。
Table: My Logテーブル
Short description: (UIポリシーの意味が分かりやすい説明)
UIポリシーにはNameフィールドが無く、名前を付けることができません。Short descriptionに、名称に代わる適切な文字列を記載するようにしてください。
[When to Apply]というセクションがあり、「フォーム上のフィールドの値がどの状態になった時にポリシーを適用するか」の条件を作成することができます。
今回は特に条件を指定しません。これにより、フォームがロードされたら、必ずアクション(入力必須)が実行されるようになります。
なお、UIポリシーの作成フォームには、デフォルトビューと、アドバンスドビューがあります(※フォームの下にビューを切り替える関連リンクがあります)。アドバンスドビューを選ぶと、以下で紹介するUIポリシーアクションに加えて、スクリプトを書いて実行させることができます。
テーブルとShort descriptionが入力できたら、Studioのヘッダ部分で右クリックし、コンテキストメニューを表示します。メニューの中から[Save]を選んで、ここまでの入力内容を保存します。この操作は、フォームに関連リスト[UI Policy Actions]を表示させて、UIポリシーアクションを作成するために行います。
4. UIポリシーアクションを作成する
UIポリシーを保存すると、関連リスト[UI Policy Actions]および[UI Policy Related List Actions]が画面下部に追加で表示されるようになります。
続いて、UIポリシーアクション関連リストで[New]ボタンを押して、UIポリシーアクションを作成します。
Studioに、新たにUIポリシーアクションのタブが表示されます。フィールド名に[Log Text]を選択して指定し、[Mandatory]フィールドを[True]にします。
[Submit]ボタンを押してUIポリシーアクションを保存します。
これで今回の開発は終わりです。
5. 動作確認
My Logアプリケーションの[Create New]モジュールをクリックして、フォームを開いてみましょう。
※以前のブログ記事に沿ってCreate Newモジュールからレコードプロデューサーを開くように設定した方は、Studioの[Navigation]>[Modules]>[Create New]からモジュールの設定フォームを開いて、Link typeを[New Record]に戻してください。
[My Log]テーブルのフォームが開かれた時に、[Log Text]フィールドが入力必須になっていれば、完成です。
フィールドが入力必須なので、Log Textが空欄のまま[Submit]ボタンを押しても、次のようにエラーメッセージが表示され、テーブルには保存されません。
以上で、UIポリシーとUIポリシーアクションを使って、Log Textフィールドを入力必須にすることができました。
6. まとめ:テーブルのフィールドにルールを適用するその他の方法
今回は、フォームのフィールドについて、UIポリシーを用いて入力必須にしてみました。
ところで、「テーブルの中のあるフィールドについて、入力必須にする」という設定ですが、これを実現する方法は複数あります。以下は方法の例です。
[クライアントサイド]
- UIポリシー
- クライアントスクリプト
[サーバーサイド]
- データポリシー
- ビジネスルール
クライアントサイドで実現する方法は、ユーザーの操作に対して、リアルタイムにメッセージや画面の表示色を使ったフィードバックを提供できるのが長所です。
中でも、今回利用したUIポリシーは、UIポリシーアクションを使うことで、スクリプトを書かずに機能を実現できるのが特徴です(※上述の通り、アドバンスドビューを使えば、スクリプトを書いて、より詳細な動作をさせることもできます)。
同じくクライアントサイドで実行される、クライアントスクリプト機能は、JavaScriptによるスクリプティングが必須ですが、実行のタイミングをUIポリシーより柔軟に指定できます。
サーバーサイドで実現する方法は、サーバー側で実行されるため、データベースに対する複雑な処理の速度が速いのが長所です。ただし、ユーザーの操作に対するリアルタイムのフィードバックはできません。
データポリシーは、テーブルのフィールドに対して設定するルールで、UIポリシーとよく似ています(UIポリシーから、直接データポリシーに変換して作成することもできます)。
ビジネスルールは、テーブルに対する操作(検索・挿入・更新・削除)をトリガーにして処理を行わせることができます。UIポリシー同様、アクションとスクリプトの両方が使えます。
各機能の長所・短所と、実現するべき要件を照らし合わせて、採用する機能を選択してください。
7. トレーニングの紹介
今回取り上げた、「入力フォームにルールを設定するため、UIポリシーを利用する」という技法、そして最後に紹介した各種の機能についても、ServiceNowのトレーニング
『Scripting in ServiceNow Fundamentals』
で詳しく紹介しています。アプリケーション開発に興味のある方は、トレーニングの受講をご検討ください。
- 3,123件の閲覧回数

