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: ; } } カタログアイテムにスクリプト化されたユーザー基準があります。保存後の最初のアクセスでは正しく動作しますが、2 回目のアクセスでは条件が満たされていない場合でも、サービスポータルにカタログアイテムが表示されます。ユーザー基準を更新するたびに正しく動作します。 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: ; } } Cause<!-- /*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 つ目のキャッシュはユーザー基準と、各ユーザー基準にどのユーザーが属しているかを保存します。ユーザー基準には、どこで使用されるかについての情報はありません。カタログアイテム、ナレッジベース、ポータルなど、さまざまな場所で使用される可能性があります。ユーザー基準キャッシュは、どのユーザーがどのユーザー基準にアクセスできるかをキャッシュします。別のキャッシュとして USER_ITEMS_CACHE があり、ユーザーがアクセスできるアイテムをキャッシュします。ユーザーが初めてカタログアイテムを開くと、このキャッシュが作成されます。このキャッシュが変更されない限り、引き続きこのキャッシュから結果が取得されます。このキャッシュが空の場合は、ユーザー基準キャッシュにアクセスし、ユーザーのアクティブな基準を取得してアイテムの表示可否を検証し、その結果を USER_ITEMS_CACHE にキャッシュします。設計上、リソースへのアクセス権は時間の経過によって変化しないことを前提としています。ユーザーはアクセス権を持っているか、持っていないかのいずれかであり、パフォーマンス向上のためにこの結果がキャッシュされます。 ユーザー基準内のスクリプトは、そのユーザー基準がキャッシュされていない間のみ評価されます。ユーザー基準がキャッシュされると、スクリプトが最初に返した値を常に返し、キャッシュがクリアされるか、ユーザー基準レコードが変更されない限り、スクリプトは再評価されません。 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: ; } } ユーザー基準のキャッシュを無効にして、スクリプトがすべてのリクエストで評価されるようにするには、以下の 2 つのシステムプロパティを true に設定してください。これらのプロパティを true に設定すると、ユーザー基準の変更を反映するために cache.do の実行や再ログインは不要になります。 glide.cache.disabled.user_items_cacheglide.cache.disabled.criteria_cache