ClientScriptのOrderの実行順序について教えてください。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-18-2022 06:57 PM
ClientScriptsフォームにOrderフィールドが表示されていないため、作成したClientScriptsのOrderが空値となっています。
Orderが空値の場合、動作順を判定する際、デフォルト値に置換されるのでしょうか。
下記の場合、どのような順序で実行されるのでしょうか。
<例1>
異なるClientScriptが、共に空値のOrderの場合
ClientScript-A(Order:空値)
ClientScript-B(Order:空値)
<例2>
異なるClientScriptが、同値のOrderの場合
ClientScript-A(Order:100)
ClientScript-B(Order:100)
<例3>
異なるClientScriptが、異なる値のOrderの場合
ClientScript-A(Order:空値)
ClientScript-B(Order:100)

- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-18-2022 08:14 PM
私のインスタンスでonLoadクライアントスクリプトを作成して実行して見ました。
クライアントスクリプト | 実行順 |
A: B: | A -> B |
A:100 B:100 | A -> B |
A: B:100 | A -> B |
この結果から見ると指定されていないスクリプトが先ず実行されてその後に上から順に実行されるようですが。。。
スクリプトを3つにしました。
クライアントスクリプト | 実行順 |
A: B: C: | C -> A -> B |
A:100 B: C: | C -> A -> C |
必ず上から下の順に実行されるのではないようです。

- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-18-2022 09:04 PM
しかしなぜ複数のクライアントスクリプトが必要なのでしょうか?1つのクライアントスクリプトにfunction()で分かて実行することは可能です。その場合はfunctionの呼ぶ順を指定することはできます。
それとは別にUI Policyにスクリプトを書くこともできます。UI Policyを利用する場合はページを更新するとOrder順にUI Policyが置き換わりますので注意します。実行は上から下の順になります。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-19-2022 01:00 AM
VariableSetのCatalogClientScriptにVariableNameごとのonChangeを必要としています。
この複数onChangeのOrderが空値の場合、ServiceNowの仕様としてどのような挙動となるかが知りたいです。
ServiceNow仕様によっては、デフォルトが空値となっているOrderを期待した順に動作するように設定する必要があると考えています。

- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-19-2022 01:34 AM
onChangeスクリプトはVariable name毎に定義します。実行されるonChangeスクリプトは該当variable nameのフィールドの内容が変更された時に実行されます。
1つのvariableに複数のonChangeスクリプトを定義する必要はないと思います。
要するに次のようにvariable setにfield1, field2, field3を定義した場合はfield1, field2, field3毎にonChangeスクリプトを定義します。
フィールド(variable)の値が変更された場合に実行されるスクリプトはonChangeスクリプトで指定されたスクリプトのみです。他のvariableが指定されたスクリプトは実行されません。