ServiceNow での選択肢の仕組みと、インスタンス間での選択の変更を管理する方法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: ; } } ServiceNow で選択肢がどのように機能するか、更新セットでどのようにキャプチャされるか、インスタンス間での選択の変更を管理する方法を理解します。 ServiceNow では、選択肢は sys_choice_setと呼ばれる特別なデータタイプとして保存および管理されます。既存のフィールド要素に新しい選択肢が追加されると、その選択肢はその要素の sys_choice_set にキャプチャされます。インスタンス間で変更が移動されたときの選択肢の動作に影響するため、この点を理解することが重要です。 選択肢が追加または更新されると、Customer Updates [sys_update_xml] テーブルに sys_choice テーブルの変更エントリが記録されます。その sys_update_xml レコードのペイロードには、個々の変更だけでなく、そのテーブル上のその要素のすべての選択肢が含まれています。変更は完全な sys_choice_set スナップショットとしてキャプチャされるためです。 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: ; } } インスタンス間で移動したときの選択肢の動作 選択肢は完全な sys_choice_set スナップショットとしてキャプチャされるため、インスタンスに選択肢の変更を適用すると、ターゲットインスタンスの既存の選択肢セットが常に上書きされます。選択肢は追加または結合されず、選択肢セット全体が置き換えられます。これは、更新セットまたはスコープ対象のアプリケーションを介してインスタンス間で選択肢の変更を移動するときに、意図しない上書きの一般的な原因です。 例 インスタンス 1: 要素が State であるインシデント [incident] テーブルに、Happy (9) と Sad (10) の 2 つの新しい選択肢が追加されます。その要素の選択肢セットには、合計で 8 つの選択肢があります。これらの変更は、Choices と呼ばれるローカル更新セットにキャプチャされます。 インスタンス 2: インシデント [incident] テーブルの同じ要素に、Bashful (14) と Grumpy (12) の 2 つの新しい選択肢が追加されます。選択肢セットには合計 8 つの選択肢もあります。これらの変更は、デフォルトの更新セットにのみキャプチャされています。 インスタンス 1 の更新セットがインスタンス 2 に適用されると、インスタンス 1 の選択セットがインスタンス 2 の選択セットに置き換わるため、Bashful と Grumpy の選択肢は存在しなくなります。 このシナリオでは、更新セットの変更がターゲットインスタンスの既存の変更よりも古い場合に警告が生成されることがあります。実際には、選択肢がインスタンスに直接追加された場合、ターゲットの最終更新日は通常、適用されている更新セットの変更よりも新しい日付になります。つまり、プレビューエラーは生成されず、上書きが気付かない可能性があります。 上書きされた選択肢を復元する方法 更新セットを適用した後に選択肢セットが上書きされた場合は、更新バージョン [sys_update_version] テーブルを使用して以前のバージョンを復元できます。選択肢が変更されるたびに sys_update_version レコードが作成されるため、以前のステータスに戻すことができます。 注: この修復アプローチは、他の ServiceNow アーティファクトにも適用されます。バージョンの切り戻しは、本番環境に適用する前に必ず非本番環境でテストしてください。 次の手順では、Bashful と Grumpy の選択肢が上書きされ、復元する必要がある前の例を使用します。 [Customer Updates] [sys_update_xml] テーブルに移動し、選択肢の変更の更新レコードを見つけます。[Name] フィールドから値をコピーします (例: sys_choice_incident_state)。/sys_update_version_list.do に移動します。ステップ 1 でコピーした値が [Name] に含まれるリストをフィルタリングします。[State] が [Current] であるレコードを検索します。これは、このアーティファクトに現在適用されているバージョンを識別します。変更が Choices という名前の更新セットから適用された場合、[Source] フィールドにこれが反映されます。リストを [Created] でソートし、更新セットが適用される前のバージョンを見つけます。そのレコードを開き、関連リンクで [Compare to Current] を選択します。現在のバージョンと以前のバージョンの違いを示す差分ビューが開きます。選択肢セットの以前の状態を確認し、[Revert to this Version] を選択します。要素が State であるインシデント [incident] テーブルの選択肢セットが、更新セットが適用される前の状態に復元されました。 次の手順を使用して、更新バージョン [sys_update_version] テーブル内の任意のバージョンに戻すことができます。更新セットバージョンを具体的に復元するには、同じ手順に従って、 sys_choice レコードの更新セットバージョンを選択します。 選択肢を管理するための一般的なガイドライン インスタンス全体で意図しない選択が上書きされるリスクを軽減するには、次のガイドラインに従ってください。 1 つのインスタンスでのみ選択肢を変更し、必要に応じてそれらの変更を他の環境に移動します。個別のインスタンスに選択肢を手動で作成しないでください。定期的に本番環境からすべての環境にクローンを作成してインスタンスパイプライン全体で選択セットの同期を維持します。すべての選択の追加と変更について、標準の開発サイクル(開発、テスト、本番)に従います。これにより、更新セットまたはスコープ対象のアプリケーションを適用するときに、意図せずに選択肢が上書きされるリスクが軽減されます。