タスクのストレージエイリアシングについて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: ; } } この記事では、ストレージエイリアスに関する情報と、Now Platform でストレージエイリアスを使用する方法、特にタスクテーブルについて説明します。デフォルトでは、すべてのアドミンがインスタンス内のストレージエイリアステーブルにアクセスできます (sys_storage_aliasただし、このテーブルに対するトランザクションプロセスは、アドミンユーザーがユーザーインターフェイスから実行することはできません。この記事の目的は、データを操作したり、テーブルに新しいフィールドを作成したりするときにストレージエイリアスが果たす重要な役割を管理者/ユーザーが理解できるようにすることです。 テーブル階層 ストレージエイリアシングの詳細を理解するには、タスクテーブル内のテーブル階層を理解することが重要です。タスクテーブルには、 階層別テーブル (TPH) と クラス別テーブル (TPC) で構成される 2 つのモデルが作用しています。 TPH - このテーブルモデルでは、物理テーブル「タスク」が 1 つあります。TPH には平坦化された階層があり、タスク階層内に存在するすべての列はタスクテーブルにのみ存在します (つまり、バックエンド DB に物理change_requestテーブルがないため、変更要求フィールドはchange_requestテーブルではなくタスクテーブルに存在します)。「task」階層内のテーブルが TPH であり、物理的な「task」テーブルに格納されているかどうかを判断するには、「task」の直接の子であるテーブルの親を検索します。次に、sys_db_object.list でそのテーブルの「extension_model」フィールドを探します。(表示するには、このフィールドをリストまたはフォームビューに追加する必要がある場合があります)。フィールドが空の場合、テーブルは TPH です。 テーブル階層を表示するときに従うべき簡単な経験則は、拡張テーブルはその親の階層を継承する必要があるということです (つまり、タスクを拡張するchange_requestテーブルの子テーブルchange_request_imac。change_requestはTPHなのでchange_request_imac TPHになります)。インシデント、change_request、問題などの従来のテーブルはすべて、フラット化されたタスクテーブル階層の一部です。 TPC :このテーブルモデルでは、テーブルが物理的にデータベースに存在するため、階層内のテーブルを記述できます。ただし、グロミング (以下で詳しく説明します) は、フラット化されたテーブル階層でのみ使用されるため、ここでは適用されません。Geneva 以降、タスクの行数が 100 万行>という条件で作成されたタスクの新しい直系の子孫は、TPC として作成されます。これは、タスクテーブルを直接拡張する新しいテーブルにのみ当てはまります。 ストレージエイリアスとは何ですか? ストレージエイリアスエントリは、インスタンス内のテーブルに作成されたフィールドごとに作成されます。ストレージエイリアスの目的に入る前に、アドミン/ユーザーが知っておくべき重要なフィールドがいくつかあります。 要素名 :この値は、フィールドがフロントエンドからどのように見えるかを反映します。つまり、ユーザーがsys_dictionaryでcolumn_nameフィールドを参照する場合、またはユーザー/アドミンがフィールドの値を操作するスクリプトを作成する場合、これは要素名に基づいています。 ストレージエイリアス :この値は、特定の要素のデータが保存されている場所を正確に示します。バックエンドデータベースからフィールドが操作されている場合、プラットフォームはstorage_alias値を調べて、ストレージエイリアス値に基づいて操作する必要があるデータと、データが操作されているテーブルクラスの実際の値であるsys_class_nameを理解します。ストレージエイリアスの値は、タスクテーブルの実際の物理列です。 ストレージテーブル名:この値は、要素がどの物理テーブルに含まれるかを示します。task テーブル内のすべての論理要素について、ストレージテーブル名は常に task になります。これが TPC テーブルの場合、ストレージテーブル名の値は、物理要素が存在する物理テーブルの名前になります。 サンプルレコード 提供されているリストビューの例では、フラット化された階層内の task テーブルのデータがどのように操作されるかが明確に示されます。リストの最初の要素「カテゴリ」を見ると、storage_alias値がa_ref_2に設定されており、ストレージテーブル名(データが存在する物理ストレージテーブル)が実際にタスクテーブル上にあることがわかります。さらに、タスクの異なる論理クラスに合計 9 つの論理要素があり、それらはすべて物理ストレージ テーブル タスクの同じ値a_ref_2リンクしていることがわかります。これは、複数の兄弟要素がタスクテーブルの 1 つの物理列を共有できる「glomming」の例です。ユーザーが論理要素「category」からデータをクエリする場合、クエリは「SELECT a_ref_2 from task WHERE sys_class_name='std_change_proposal」のようになり、a_ref_2は NULL ではありません。 select クエリでは、物理列a_ref_2に存在するデータを指定しますが、正しいデータを確実にプルするために、クラス識別子を使用します。クラス識別子の値とstorage_alias値は、物理テーブルタスクの論理クラスstd_change_proposalから論理要素「カテゴリ」を表示していることをシステムに知らせます。 実際の物理テーブルに作成されるフィールドの命名規則は、作成するフィールドのタイプによって異なる場合があります。上記の例では、「a_ref_2」は、参照タイプフィールドの値を保持するためにタスクで作成されたエイリアスです。 ストレージエイリアスレコードは何に使用されますか? 論理 TPH)/物理 (TPC) 要素をバックエンドデータベースの実際の物理列にマッピングします。 簡単に言うと、これは、物理ストレージテーブルの列から、要素内の実際のデータがどこにあるかを示すことを意味します。 論理要素は、論理要素のmax_lengthよりも大きい物理列にグラムすることができます。複数の兄弟要素が 1 つの物理列を共有できるようにします (グロミングとも呼ばれますが、TPH の場合のみ)sys_documentation (ラベル) レコードをそれぞれの要素 (フォーム、レポート、およびリストビューのアプリケーションフロントエンドからユーザー/アドミンに表示されるもの) にマッピングします。 その他注意事項 同じ論理クラス内の 2 つの論理要素が同じ物理列を共有することはできません (つまり、ユーザーが インシデント テーブルに 2 つの string フィールドを作成した場合、それらはデータベース内の同じ物理列にマップされません)。親要素と子要素が同じ物理列を共有することはできません (つまり、フィールドが incident テーブルに作成された場合、 task のフィールドが既に物理列を使用している物理列にはマッピングできません。兄弟要素のみが同じ物理列を共有できます (つまり、ユーザーはchange_requestとインシデントに参照フィールドを作成し、同じ物理列にマップできます)。フィールドがタスクテーブルに直接作成されている場合 ( sys_class_name は task)、フィールドは決してマークされません。 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: ; } }