ClientScriptのOrderの実行順序について教えてください。

Nakayama
Tera Contributor

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)

4件の返信4

Hitoshi Ozawa
Giga Sage
Giga Sage

私のインスタンスで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

必ず上から下の順に実行されるのではないようです。

しかしなぜ複数のクライアントスクリプトが必要なのでしょうか?1つのクライアントスクリプトにfunction()で分かて実行することは可能です。その場合はfunctionの呼ぶ順を指定することはできます。

それとは別にUI Policyにスクリプトを書くこともできます。UI Policyを利用する場合はページを更新するとOrder順にUI Policyが置き換わりますので注意します。実行は上から下の順になります。

VariableSetのCatalogClientScriptにVariableNameごとのonChangeを必要としています。
この複数onChangeのOrderが空値の場合、ServiceNowの仕様としてどのような挙動となるかが知りたいです。
ServiceNow仕様によっては、デフォルトが空値となっているOrderを期待した順に動作するように設定する必要があると考えています。

Hitoshi Ozawa
Giga Sage
Giga Sage

onChangeスクリプトはVariable name毎に定義します。実行されるonChangeスクリプトは該当variable nameのフィールドの内容が変更された時に実行されます。

1つのvariableに複数のonChangeスクリプトを定義する必要はないと思います。

find_real_file.png

要するに次のようにvariable setにfield1, field2, field3を定義した場合はfield1, field2, field3毎にonChangeスクリプトを定義します。

find_real_file.png

フィールド(variable)の値が変更された場合に実行されるスクリプトはonChangeスクリプトで指定されたスクリプトのみです。他のvariableが指定されたスクリプトは実行されません。

find_real_file.png