テーブル API - ServiceNow Fluent

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:19分
  • テーブル API には、スコープ対象のアプリケーションのテーブル [sys_db_object] を定義するオブジェクトが含まれます。

    Table オブジェクト

    スコープ対象のアプリケーションにテーブル [sys_db_object] を作成します。

    表 : 1. プロパティ
    名前 タイプ 説明
    name 文字列 必須。アプリケーションスコープで始まり、すべて小文字で、形式:<scope>_<name> で表記されたテーブルの名前。名前は、Table オブジェクトの変数識別子と一致する必要があります。
    注:
    別のアプリケーションスコープの既存のテーブルに列を追加するには、アプリケーションスコープなしでテーブルの名前、その後に as any を指定します。列名は、代わりにアプリケーションスコープで始める必要があります。

    最大長:80

    schema アレイ Column オブジェクトのリスト。詳細については、「Column オブジェクト」を参照してください。
    extends 文字列 テーブルの基になっている他のテーブルの名前。

    ベーステーブルを拡張すると、元のテーブルのすべてのフィールドが組み込まれ、新しいテーブルのシステムフィールドが作成されます。拡張可能とマークされたテーブルは、同じスコープ内にある場合、または他のスコープからの構成が許可されている場合に拡張可能です。

    label 文字列 リストビューとフォームビューのテーブルの一意のラベル。

    最大長:80

    デフォルト:name プロパティの値

    display 文字列 デフォルトの表示列。schema プロパティの列名を使用します。
    extensible ブーリアン 他のテーブルがテーブルを拡張できるかどうかを示すフラグ。
    有効な値:
    • true:他のテーブルがテーブルを拡張できます。
    • false:他のテーブルはテーブルを拡張できません。

    このプロパティを true から false に変更すると、追加の子テーブルの作成はできなくなりますが、既存の子テーブルは変更されません。

    デフォルト値:false

    live_feed ブーリアン テーブル内のレコードでライブフィードが可能かどうかを示すフラグ。
    有効な値:
    • true:テーブル内のレコードでライブフィードが提供されます。このオプションにより、[ライブフィードを表示] オプション (ライブフィードを表示アイコン) がフォームヘッダーに追加されます。
    • false:テーブル内のレコードにライブフィードは提供されません。

    デフォルト値:false

    auto_number オブジェクト テーブルの自動番号付け構成 [sys_number]。詳細については、「auto_number オブジェクト」を参照してください。
    accessible_from 文字列 テーブルにアクセスできるアプリケーションスコープ。

    有効な値:public、package_private

    デフォルト:public

    caller_access 文字列 クロススコープ要求のアクセスレベル。
    有効な値:
    • restricted:リソースへの呼び出しを手動で承認する必要があります。アクセス要求は、 ステータスを使用して限定呼び出し元アクセス テーブルで追跡されます。
    • tracking:リソースに対する呼び出しは自動的に承認されます。呼び出しは、 ステータスを使用して限定呼び出し元アクセス テーブルで追跡されます。
    • none:リソースへのクロススコープ呼び出しは、accessible_from プロパティの値に基づいて承認または拒否されます。

    詳細については、「限定呼び出し元アクセス特権の設定」を参照してください。

    デフォルト:none

    actions アレイ アクセスオプションのリスト。

    有効な値:read、create、update、delete

    デフォルト:read

    allow_web_service_access ブーリアン Web サービスがテーブルを呼び出せるかどうかを示すフラグ。
    有効な値:
    • true:Web サービスはテーブルを呼び出すことができます。
    • false:Web サービスはテーブルを呼び出せません。

    デフォルト値:false

    allow_new_fields ブーリアン 他のアプリケーションスコープから、テーブル上の新しいフィールドの設計時の構成を許可するかどうかを示すフラグ。
    有効な値:
    • true:他のアプリケーションスコープから、テーブル上の新しいフィールドの設計時の構成を許可します。
    • false:他のアプリケーションスコープから、テーブル上の新しいフィールドの設計時の構成を許可しません。

    デフォルト値:false

    allow_ui_actions ブーリアン 他のアプリケーションスコープから、テーブル上の UI アクションの設計時の構成を許可するかどうかを示すフラグ。
    有効な値:
    • true:他のアプリケーションスコープから、テーブル上の UI アクションの設計時の構成を許可します。
    • false:他のアプリケーションスコープから、テーブル上の UI アクションの設計時の構成を許可しません。

    デフォルト値:false

    allow_client_scripts ブーリアン 他のアプリケーションスコープから、テーブル上のクライアントスクリプトの設計時の構成を許可するかどうかを示すフラグ。
    有効な値:
    • true:他のアプリケーションスコープから、テーブル上のクライアントスクリプトの設計時の構成を許可します。
    • false:他のアプリケーションスコープから、テーブル上のクライアントスクリプトの設計時の構成を許可しません。

    デフォルト値:false

    audit ブーリアン テーブル内のすべてのレコードの作成、更新、削除を追跡するかどうかを示すフラグ。
    有効な値:
    • true:テーブル内のすべてのレコードの作成、更新、削除を追跡します
    • false:テーブル内のすべてのレコードの作成、更新、削除を追跡しません。

    デフォルト値:false

    read_only ブーリアン ユーザーがテーブル内のフィールドを編集できるかどうかを示すフラグ。
    有効な値:
    • true:ユーザーはテーブル内のフィールドを編集できません。
    • false:ユーザーはテーブル内のフィールドを編集できます。

    デフォルト値:false

    text_index ブーリアン 検索エンジンがテーブル内のテキストにインデックスを付けるかどうかを示すフラグ。
    有効な値:
    • true:テーブルのテキストにインデックスが付けられます。
    • false:テーブルのテキストにインデックスは付けられません。

    デフォルト値:false

    attributes オブジェクト サポートされている辞書属性 [sys_schema_attribute] のキーと値のペア。
    attributes: 
       {
          update_sync_custom: true,
          native_recordlock: false
       }
    詳細については、「辞書属性」を参照してください。
    index アレイ テーブルのメタデータ XML にインデックスを生成する列参照のリスト。

    データベースインデックスを使用すると、テーブルからデータにアクセスする速度が向上しますが、追加のストレージを使用するコストがかかります。

    index: [
        {
            name: 'deadline index',
            element: 'deadline',
            unique: true
        },
        {
            name: 'state index',
            element: 'state',
            unique: false
        },{
            name: 'task index',
            element: 'task',
            unique: false
        }
    ]

    列の先行入力をサポートするには、 Table オブジェクトを、name プロパティと同じ名前でエクスポートされた変数にアサインします。

    import { Table, StringColumn } from "@servicenow/sdk/core";
    import { myFunction } from "../server/myFunction.js"
    
    export const x_snc_example_to_do = Table({
        name: 'x_snc_example_to_do',
        label: 'My To Do Table',
        extends: 'task',
        schema: {
            status: StringColumn({ label: 'status' }),
            deadline: StringColumn({
                label: 'deadline',
                active: true,
                mandatory: false,
                read_only: false,
                maxLength: 40,
                dropdown: 'none',
                attributes: { 
                    update_sync: false,
                },
                default: 'today',
                dynamic_value_definitions: {
                    type: 'calculated_value',
                    calculated_value: '',
                },
                choices: {
                    choice1: {
                        label: 'choice1 Label',
                        sequence: 0,
                        inactive_on_update: false,
                        dependent_value: '5',
                        hint: 'hint',
                        inactive: false,
                        language: 'en',
                    },
                    choice2: { label: 'choice2 Label', sequence: 1 },
                },
            }),
            dynamic1: StringColumn({
                dynamic_value_definitions: {
                    type: 'calculated_value',
                    calculated_value: myFunction,
                },
            }),
            dynamic2: StringColumn({
                dynamic_value_definitions: {
                    type: 'dynamic_default',
                    dynamic_default: `gs.info()`,
                },
            }),
            dynamic3: StringColumn({
                dynamic_value_definitions: {
                    type: 'dependent_field',
                    column_name: 'status',
                },
            }),
            dynamic4: StringColumn({
                dynamic_value_definitions: {
                    type: 'choices_from_other_table',
                    table: 'sc_cat_item',
                    field: 'display',
                },
            }),
        },
        actions: ['create', 'read'],
        display: 'deadline',
        accessible_from: 'package_private',
        allow_client_scripts: true,
        allow_new_fields: true,
        allow_ui_actions: true,
        allow_web_service_access: true,
        extensible: true,
        live_feed: true,
        caller_access: 'none',
        auto_number: {
            number: 10,
            number_of_digits: 2,
            prefix: 'abc',
        },
        audit: true,
        read_only: true,
        text_index: true,
        attributes: {
            update_sync: true,
        },
        index: [
            {
                name: 'idx',
                element: 'status',
                unique: true,
            },
        ],
    })

    Column オブジェクト

    テーブルに列 [sys_dictionary] を追加します。

    Table オブジェクトの schema プロパティで Column オブジェクトを使用します。

    フィールドタイプに基づく多くのタイプの列があります。Column オブジェクトは <Type>Column 形式で、<Type> はフィールドタイプです。フィールドタイプの詳細については、Field types を参照してください。

    サポートされている列の種類は、ListColumnRadioColumnStringColumnChoiceColumnScriptColumnBooleanColumnConditionsColumnDecimalColumnIntegerColumnVersionColumnDomainIdColumnFieldNameColumnReferenceColumnTableNameColumnUserRolesColumnBasicImageColumnDocumentIdColumnDomainPathColumnTranslatedTextColumnSystemClassNameColumn TranslatedFieldColumnGenericColumnDateColumnDateTimeColumnCalendarDateTimeBasicDateTimeColumnDueDateColumnCalendarDateTimeIntegerDateColumnScheduleDateTimeColumn、および OtherDateColumn です。

    表 : 2. プロパティ
    名前 タイプ 説明
    label 文字列 リスト見出しとフォームフィールドに表示される列の一意のラベル。

    ラベルを更新すると、現在の言語の言語ファイル内のラベルも更新されます。ラベルが指定されていない場合、column オブジェクトで使用されるキーはラベルです。

    maxLength 番号 列の値の最大長。

    長さが 254 未満のテキストフィールドは、1 行のテキストフィールドとして表示されます。255 文字以上になると、複数行のテキストボックスとして表示されます。

    注:
    データが失われないようにするため、新しいアプリケーションを開発する場合にのみ文字列フィールドの長さを短くし、フィールドにデータが含まれているときは短くしないでください。

    デフォルト:40

    active ブーリアン リストとフォームのフィールドを表示するかどうかを示すフラグ。
    有効な値:
    • true:フィールドを表示します。
    • false:フィールドを非表示にします。

    デフォルト:true

    mandatory ブーリアン レコードを保存するためにフィールドに値が含まれている必要があるかどうかを示すフラグ。
    有効な値:
    • true:フィールドに値が含まれている必要があります。
    • false:フィールドは必須ではありません。

    デフォルト値:false

    read_only ブーリアン フィールド値を編集できるかどうかを示すフラグ。
    有効な値:
    • true:値を変更することはできず、フィールドのデータが計算されて表示されます。
    • false:フィールド値を変更できます。

    デフォルト値:false

    default 任意 レコード作成時のフィールドのデフォルト値。値は、列のタイプに基づいて正しいタイプを使用する必要があります。
    choices オブジェクト 列の選択肢 [sys_choice] のリスト。詳細については、「choices オブジェクト」を参照してください。

    このプロパティは、ChoiceColumn および選択肢列を拡張する列タイプにのみ適用されます。これには、プリミティブ値のアレイまたは一連の選択肢オブジェクトを含めることができます。

    attributes オブジェクト サポートされている辞書属性 [sys_schema_attribute] のキーと値のペア。
    attributes: 
       {
          update_sync_custom: true,
          native_recordlock: false
       }
    詳細については、「辞書属性」を参照してください。
    function_definition 文字列 フィールドが実行する関数の定義。

    glidefunction: で始まり、そのあとに実行される操作 (concat など)、関数のパラメーターが続きます。定数は単一引用符で囲む必要があります。

    たとえば、次の関数定義では、簡単な説明、空白、発信者名の順に示すフィールドが作成されます。
    glidefunction:concat(short_description, ' ', caller_id.name)

    関数定義の詳細については、「Function field」を参照してください。

    dynamic_value_definitions オブジェクト 動的フィルターに基づいて動的に生成されるデフォルト値。ダイナミックデフォルトを指定するには、タイプと関連する動作キーの組み合わせを指定します。次のタイプがサポートされています:
    • dynamic_default:[sys_filter_option_dynamic] からの関数を指定します。
      dynamic_value_definitions: {
         type: 'dynamic_default',
         dynamic_default: `gs.info()`,
      },
    • dependent_field:同じテーブルから別の列名を指定します。
      dynamic_value_definitions: {
         type: 'dependent_field',
         column_name: 'status',
      },
    • calculated_value:値を計算するための関数を指定します。関数を JavaScript モジュールからインポート、またはインラインで定義できます。
      dynamic_value_definitions: {
         type: 'calculated_value',
         calculated_value: function,
      },
    • choices_from_other_table:別のテーブルの列から選択肢を指定します。
      dynamic_value_definitions: {
         type: 'choices_from_other_table',
         table: 'sc_cat_item',
         field: 'display',
      },
    dropdown 文字列 フォームのユーザーに対して選択肢のリストがどのように表示されるか。このプロパティは、ChoiceColumn および選択肢列を拡張する列タイプにのみ適用されます。
    有効な値:
    • none:選択肢は強制されません。
    • dropdown without none:-- None -- オプションを含まないメニュー。このオプションを選択する場合は、列の default プロパティを設定する必要があります。
    • dropdown with none:-- None -- オプションを含むメニュー。デフォルト値は -- None -- です。
    • suggestion:提案値のリストに選択肢が表示されます。

    デフォルト:none

    列名は、列定義とペアになったオブジェクトキーとして指定します。
    schema: {
       deadline: DateColumn({ label: 'deadline' }),
       state: StringColumn({
          label: 'State',
          choices: {
             ready: { label: 'Ready' },
             completed: { label: 'Completed' },
             in_progress: { label: 'In Progress' },
          }   
       }),
       task: StringColumn({ label: 'Task', maxLength: 120 }),
    },
    テーブル名にアプリケーションスコープが含まれない場合は、代わりに列名にプリフィックスとしてアプリケーションスコープを付ける必要があります。
    schema: {
       x_scope_myColumn: StringColumn({...})
    }

    choices オブジェクト

    テーブルの列の選択肢 [sys_choice] を構成します。

    Table オブジェクトの schema プロパティで、サポートされている列タイプを含む choices オブジェクトを使用します。特定の列のタイプのみが、選択肢列のタイプ (ChoiceColumn) を拡張し、選択肢を含めることができます。

    表 : 3. プロパティ
    名前 タイプ 説明
    label 文字列 必須。リスト内の選択肢で表示するテキスト。
    dependent_value 文字列 Column オブジェクトの dynamic_value_definitions プロパティの dependent_field にマッピングする値。
    hint 文字列 選択肢にカーソルを合わせたときにツールヒントとして表示される、選択肢の簡単な説明。
    language 文字列 翻訳された選択肢の言語の BCP 47 コード。

    デフォルト値:en

    sequence 整数 選択肢のリスト内で選択が行われる順序。
    inactive ブーリアン リストに選択肢を表示するかどうかを示すフラグ。
    有効な値:
    • true:選択肢はリストに表示されません。
    • false:選択肢がリストに表示されます。

    デフォルト値:false

    choices オブジェクトには一連の choice オブジェクトが含まれ、選択肢の名前は choices 定義とペアになったオブジェクトキーとして指定します。

    choices: {
       choice1: {
          label: 'choice1 Label',
          sequence: 0,
          inactive_on_update: false,
          dependent_value: '5',
          hint: 'hint',
          inactive: false,
          language: 'en',
       },
       choice2: { label: 'choice2 Label', sequence: 1 },
    },

    auto_number オブジェクト

    テーブルの自動番号付け [sys_number] を構成します。

    Table オブジェクト内の auto_number オブジェクトを使用します。

    表 : 4. プロパティ
    名前 タイプ 説明
    prefix 文字列 テーブル内のすべてのレコード番号のプリフィックス。たとえば、インシデントの場合は INC です。

    デフォルト:pre

    number 整数 このテーブルのベース番号。レコード番号は自動的にインクリメントされ、次の番号はカウンター [sys_number_counter] テーブルに保持されます。

    ベース番号を現在のカウンターより大きい値に設定すると、次のレコード番号では新しいベース番号が使用されます。それ以外の場合は、次のレコード番号で現在のカウンターが使用されます。カウンターがそれ自体よりも小さいベース番号にリセットされることはありません。

    デフォルト:1000

    number_of_digits 整数 プリフィックスの後に使用する最小桁数。

    必要に応じて、自動番号に先行ゼロが追加されます。たとえば、INC0001001 には 3 つの先行ゼロが含まれています。桁数が最小長を超えることがあります。たとえば、number_of_digits が 2 で、テーブルに 99 を超えるレコードが作成された場合、その番号は 100 を超えて継続します (INC101 など)。

    警告:
    このフィールドを変更して、テーブルの既存レコードのすべての番号値を更新できます。本番インスタンスでこのフィールドを変更する場合は注意が必要です。

    デフォルト値:7

    auto_number: {
       prefix: 'TODO',
       number: 2000,
       digits: 9,
    }