カタログ UI ポリシーの優先度と Service Portal の動作Issue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 1. カタログ UI ポリシーの概要 カタログ UI ポリシーは以下のいずれかに適用されます。 特定のカタログアイテム特定の Variable Set を使用するすべてのカタログアイテム UI ポリシーは、関連するカタログアイテムまたは Variable Set に定義されている変数のみを参照できます。UI ポリシーは、UI Policy Actions またはクライアントスクリプトを使用して、表示・非表示、必須ステータス、読み取り専用ステータスなどの変数プロパティを変更できます。 2. UI ポリシーの実行順序と優先度 単一のカタログアイテムには、Variable Set から継承されたポリシーを含め、複数の UI ポリシーが適用される場合があります。複数のポリシーが同じ変数に影響する場合、最終的な動作は実行順序とポリシーの種類によって決まります。 2.1 Order フィールド 各 UI ポリシーには Order フィールドがあります。数値が小さいポリシーが先に実行され、数値が大きいポリシーが後に実行されます。最後に実行されたポリシーが、影響を受ける変数の最終的な状態を決定します。 2.2 カタログアイテムと Variable Set の優先度 ポリシーの種類間の実行優先度は固定されています。 Variable Set の UI ポリシーが先に実行されます。カタログアイテムの UI ポリシーが後に実行されます。 その結果、Order フィールドの値に関係なく、カタログアイテムの UI ポリシーは常に Variable Set の UI ポリシーよりも優先されます。 2.3 例外:システムプロパティによる上書き システムプロパティ glide.sc.ui_policiy.variable_set_run_first を false に設定すると、実行順序が逆になります。 カタログアイテムの UI ポリシーが先に実行されます。Variable Set の UI ポリシーが後に実行されるため、優先されます。 2.4 競合の解決 カタログアイテムの UI ポリシーと Variable Set の UI ポリシー間の競合は、Order フィールドを調整することでは解決できません。Order フィールドは同じ種類のポリシー間にのみ影響します。 3. UI ポリシーの競合に関するよくある症状 管理者は次のような動作を確認する場合があります。 変数に予期しない値が表示される。変数プロパティ(表示・非表示、読み取り専用、必須)が意図した設定と一致しない。 これらの症状は通常、最後に実行された UI ポリシーが最終結果を決定するために発生します。 Service Portal での UI ポリシーの動作例:Save 後に UI ポリシーがトリガーされない sp-variable-editor ウィジェットを使用している場合、[Save] ボタンをクリックした後にカタログ UI ポリシーとカタログクライアントスクリプトが再実行されないことがあります。このセクションでは、問題、再現手順、およびサポートされているワークアラウンドについて説明します。 sp-variable-editor ウィジェットを使用して Service Portal で変数データを保存した後、UI ポリシーとクライアントスクリプトが自動的に再評価されません。その結果、ページを更新するまで、変数の表示やその他のプロパティが期待する UI ポリシーのロジックを反映しない場合があります。 1. 再現手順 Service Portal ページを作成し、sp-variable-editor ウィジェットを追加します。2 つの変数(例:Yes/No のセレクトボックスとテキストフィールド)を持つカタログアイテムを作成します。1 つ目の変数が「Yes」に設定されていない限り 2 つ目の変数を非表示にするカタログ UI ポリシーを設定します。カタログアイテムをテストします。UI ポリシーは期待どおりに動作します。sp-variable-editor ウィジェットを使用して Service Portal で RITM を開きます。[Save] をクリックします。UI ポリシーが実行されなくなり、1 つ目の変数の値に関係なく 2 つ目の変数が表示されます。ページを更新すると、UI ポリシーが再び正常に機能します。 2. 原因 sp-variable-editor ウィジェットの Save アクションは、UI ポリシーの再評価イベントをトリガーしません。その結果、変数データを保存した後に UI ポリシーとクライアントスクリプトが実行されません。 3. ワークアラウンド 保存後に UI ポリシーが再実行されるようにするには: Form ウィジェット(sp_widget.do?sys_id=fd1f4ec347730200ba13a5554ee490c0)を開きます。新しい Widget Dependency を作成します。その Dependency の下に JS Include を追加します。新しい UI スクリプトを作成し、提供されているワークアラウンドファイル(workaround2-kp3.js.txt)の内容を貼り付けます。sp-variable-editor ウィジェットをクローンします。クローンしたウィジェットに新しい Widget Dependency を追加します。クローンしたウィジェットの Client Controller の 40 行目の後に以下の行を追加します。 $rootScope.$emit("sp.form.record.updated"); このイベントにより、Save アクションの後に UI ポリシーの再評価がトリガーされます。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } すべてのリリース Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } UI ポリシーが正しく動作するようにするには: カタログアイテムおよび Variable Set のすべての UI ポリシーを確認します。優先させたいポリシーが最後に実行されることを確認します。別の優先度モデルが必要な場合はシステムプロパティを調整します。