テーブル API - ServiceNow Fluent
テーブル API は、スコープ対象のアプリケーションにデータを格納するためのテーブル [sys_db_object] を定義します。
Table オブジェクトを使用してテーブルを作成します。スキーマプロパティから、StringColumn や IntegerColumn などの Column オブジェクトを追加して列を定義します。
テーブルに関する一般的な情報については、「 Table administration」を参照してください。
Table オブジェクト
スコープ対象のアプリケーションにテーブル [sys_db_object] を作成します。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | 必須。アプリケーションスコープで始まり、すべて小文字で、形式:<scope>_<name> で表記されたテーブルの名前。名前は、Table オブジェクトの変数識別子と一致する必要があります。 注: 別のアプリケーションスコープの既存のテーブルに列を追加するには、アプリケーションスコープなしでテーブルの名前、その後に as any を指定します。列名は、代わりにアプリケーションスコープで始める必要があります。最大長:80 |
| schema | アレイ | 必須。Column オブジェクトのリスト。詳細については、「Column オブジェクト」を参照してください。 |
| extends | 文字列 | テーブルの基になっている他のテーブルの名前。 ベーステーブルを拡張すると、元のテーブルのすべてのフィールドが組み込まれ、新しいテーブルのシステムフィールドが作成されます。拡張可能とマークされたテーブルは、同じスコープ内にある場合、または他のスコープからの構成が許可されている場合に拡張可能です。 |
| ラベル | 文字列 またはアレイ | リストビューおよびフォームビューのテーブルの一意のラベル。 フィールドラベルは、文字列または ラベル オブジェクトのアレイとして指定できます。詳細については、「ラベルオブジェクト」を参照してください。 最大長:80 デフォルト:name プロパティの値 |
| licensingConfig | オブジェクト | テーブルのライセンス構成 [ua_table_licensing_config]。詳細については、「licensingConfig オブジェクト」を参照してください。 |
| 表示 | 文字列 | デフォルトの表示列。schema プロパティの列名を使用します。 |
| extensible | ブーリアン | 他のテーブルがテーブルを拡張できるかどうかを示すフラグ。 有効な値:
このプロパティを true から false に変更すると、追加の子テーブルの作成はできなくなりますが、既存の子テーブルは変更されません。 デフォルト値:false |
| ライブフィード | ブール | テーブル内のレコードでライブフィードが可能かどうかを示すフラグ。 有効な値:
デフォルト値:false |
| accessibleFrom | 文字列 | テーブルにアクセスできるアプリケーションスコープ。 有効な値:
デフォルト:public |
| callerAccess | 文字列 | クロススコープ要求のアクセスレベル。 有効な値:
詳細については、「限定呼び出し元アクセス特権の設定」を参照してください。 デフォルト:none |
| actions | アレイ | アクセスオプションのリスト。 有効な値:
デフォルト:read |
| allowWebServiceAccess | ブール | Web サービスがテーブルを呼び出せるかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| allowNewFields | ブール | 他のアプリケーションスコープから、テーブル上の新しいフィールドの設計時の構成を許可するかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| allowUiAction | ブール | 他のアプリケーションスコープから、テーブル上の UI アクションの設計時の構成を許可するかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| allowClientScript | ブール | 他のアプリケーションスコープから、テーブル上のクライアントスクリプトの設計時の構成を許可するかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| audit | ブーリアン | テーブル内のすべてのレコードの作成、更新、削除を追跡するかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| readOnly | ブール | ユーザーがテーブル内のフィールドを編集できるかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| テキストインデックス | ブール | 検索エンジンがテーブル内のテキストにインデックスを付けるかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| attributes | オブジェクト | サポートされている辞書属性 [sys_schema_attribute] のキーと値のペア。たとえば、次のようになります。詳細については、「辞書属性」を参照してください。 |
| index | アレイ | テーブルのメタデータ XML にインデックスを生成する列参照のリスト。要素プロパティの値は、Column オブジェクトで使用されるオブジェクトキーと一致する必要があります。 データベースインデックスを使用すると、テーブルからデータにアクセスする速度が向上しますが、追加のストレージを使用するコストがかかります。 |
| 自動番号 | オブジェクト | テーブルの自動番号付け構成 [sys_number]。詳細については、「autoNumber オブジェクト」を参照してください。 |
| scriptableTable | ブール | テーブルが外部ソースから取得したデータを使用するリモートテーブルであるかどうかを示すフラグ。詳細については、「Remote tables」を参照してください。 有効な値:
デフォルト値: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,
readOnly: false,
maxLength: 40,
dropdown: 'none',
attributes: {
updateSync: false,
},
default: 'today',
dynamicValueDefinitions: {
type: 'calculated_value',
calculatedValue: '',
},
choices: {
choice1: {
label: 'Choice1 Label',
sequence: 0,
inactiveOnUpdate: false,
dependentValue: '5',
hint: 'hint',
inactive: false,
language: 'en',
},
choice2: { label: 'Choice2 Label', sequence: 1 },
},
}),
dynamic1: StringColumn({
dynamicValueDefinitions: {
type: 'calculated_value',
calculatedValue: myFunction,
},
}),
dynamic2: StringColumn({
dynamicValueDefinitions: {
type: 'dynamic_default',
dynamicDefault: `gs.info()`,
},
}),
dynamic3: StringColumn({
dynamicValueDefinitions: {
type: 'dependent_field',
columnName: 'status',
},
}),
dynamic4: StringColumn({
dynamicValueDefinitions: {
type: 'choices_from_other_table',
table: 'sc_cat_item',
field: 'display',
},
}),
},
actions: ['create', 'read'],
display: 'deadline',
accessibleFrom: 'package_private',
allowClientScripts: true,
allowNewFields: true,
allowUiActions: true,
allowWebServiceAccess: true,
extensible: true,
liveFeed: true,
callerAccess: 'none',
autoNumber: {
number: 10,
numberOfDigits: 2,
prefix: 'abc',
},
audit: true,
readOnly: true,
textIndex: true,
attributes: {
updateSync: true,
},
index: [
{
name: 'idx',
element: 'status',
unique: true,
},
],
})
Column オブジェクト
列 [sys_dictionary] をテーブルに追加します。
Table オブジェクトのスキーマプロパティに Column オブジェクトを追加します。
フィールドタイプに基づく多くのタイプの列があります。Column オブジェクトは <Type>Column 形式で、<Type> はフィールドタイプです。フィールドタイプの詳細については、Field types reference を参照してください。
次のタイプの列がサポートされています:ListColumn、RadioColumn、StringColumn、ChoiceColumn、ScriptColumn、BooleanColumn、ConditionsColumn、DecimalColumn、IntegerColumn、VersionColumn、DomainIdColumn、FieldNameColumn、ReferenceColumn、TableNameColumn、UserRolesColumn、BasicImageColumn、DocumentIdColumn、DomainPathColumn、TranslatedTextColumn、SystemClassNameColumn、 TranslatedFieldColumn、GenericColumn、DateColumn、DateTimeColumn、CalendarDateTime、BasicDateTimeColumn、DueDateColumn、CalendarDateTime、IntegerDateColumn、ScheduleDateTimeColumn、OtherDateColumn、Password2Column、GuidColumn、JsonColumn、NameValuePairsColumn、UrlColumn、EmailColumn、HTMLColumn、FloatColumn、MultiLineTextColumn、DurationColumn、TimeColumn、FieldListColumn、SlushBucketColumn、TemplateValueColumn、および ApprovalRulesColumn。
| 名前 | タイプ | 説明 |
|---|---|---|
| ラベル | 文字列またはアレイ | リスト見出しとフォームフィールドに表示される列の一意のラベル。 フィールドラベルは、文字列または ラベル オブジェクトのアレイとして指定できます。詳細については、「ラベルオブジェクト」を参照してください。 デフォルト:列オブジェクトに使用されるキー |
| maxLength | 番号 | 列の値の最大長。 長さが 254 未満のテキストフィールドは、1 行のテキストフィールドとして表示されます。255 文字以上になると、複数行のテキストボックスとして表示されます。 注: データが失われないようにするため、新しいアプリケーションを開発する場合にのみ文字列フィールドの長さを短くし、フィールドにデータが含まれているときは短くしないでください。 デフォルト:列タイプによって異なります |
| アクティブ | ブール | リストおよびフォームにフィールドを表示するかどうかを示すフラグ。 有効な値:
デフォルト:true |
| mandatory | ブーリアン | レコードを保存するためにフィールドに値が含まれている必要があるかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| readOnly | ブール | フィールド値を編集できるかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| デフォルト | 任意 | レコード作成時のフィールドのデフォルト値。値は、列のタイプに基づいて正しいタイプを使用する必要があります。 |
| choices | オブジェクト | 列の選択肢 [sys_choice] のリスト。詳細については、「choices オブジェクト」を参照してください。 このプロパティは、 ChoiceColumn オブジェクトと選択肢列を拡張する列タイプにのみ適用されます。これには、プリミティブ値のアレイまたは一連の選択肢オブジェクトを含めることができます。 |
| attributes | オブジェクト | サポートされている辞書属性 [sys_schema_attribute] のキーと値のペア。たとえば、次のようになります。詳細については、「辞書属性」を参照してください。 |
| functionDefinition | 文字列 | 数学演算、フィールド長の計算、曜日の計算など、フィールドが実行する関数の定義。 各定義は たとえば、次の関数定義では、簡単な説明、空白、発信者名の順に示すフィールドが作成されます。 関数定義の詳細については、「Function field」を参照してください。 |
| dynamicValueDefinition | オブジェクト | 動的フィルターに基づいて動的に生成されるデフォルト値。ダイナミックデフォルトを指定するには、タイプと関連する動作キーの組み合わせを指定します。次のタイプがサポートされています:
|
| ドロップダウン | 文字列 | テーブルのリストビューおよびフォームビューでの選択肢のリストの表示方法のオプション。このプロパティは、 ChoiceColumn オブジェクトと選択肢列を拡張する列タイプにのみ適用されます。 有効な値:
デフォルト:none |
schema: {
deadline: DateColumn({ label: 'Deadline' }),
state: StringColumn({
label: 'State',
choices: {
ready: { label: 'Ready' },
completed: { label: 'Completed' },
inProgress: { label: 'In Progress' },
}
}),
task: StringColumn({ label: 'Task', maxLength: 120 }),
}schema: {
x_scope_myColumn: StringColumn({...})
}choices オブジェクト
テーブルの列の選択肢 [sys_choice] を構成します。
choices オブジェクトは、Column オブジェクト内のプロパティです。Table オブジェクトの schema プロパティで、サポートされている列タイプを含む choices オブジェクトを使用します。特定の列のタイプのみが、選択肢列のタイプ (ChoiceColumn) を拡張し、選択肢を含めることができます。
| 名前 | タイプ | 説明 |
|---|---|---|
| label | 文字列 | 必須。リスト内の選択肢で表示するテキスト。 |
| dependentValue | 文字列 | Column オブジェクトの dynamicValueDefinitions プロパティの dependentField にマッピングする値。 |
| ヒント | 文字列 | 選択肢にカーソルを合わせたときにツールヒントとして表示される、選択肢の簡単な説明。 |
| language | 文字列 | 翻訳された選択肢の言語の BCP 47 コード。 デフォルト値:en |
| sequence | 整数 | 選択肢のリスト内で選択が行われる順序。 |
| inactive | ブーリアン | リストに選択肢を表示するかどうかを示すフラグ。 有効な値:
デフォルト値:false |
choices オブジェクトには一連の choice オブジェクトが含まれ、選択肢の名前は choices 定義とペアになったオブジェクトキーとして指定します。
choices: {
choice1: {
label: 'Choice1 Label',
sequence: 0,
inactiveOnUpdate: false,
dependentValue: '5',
hint: 'hint',
inactive: false,
language: 'en',
},
choice2: { label: 'Choice2 Label', sequence: 1 },
}
ラベルオブジェクト
テーブルまたは列のフィールドラベル [sys_documentation] を設定します。
label オブジェクトは、Table オブジェクトと Column オブジェクト内のプロパティです。
| 名前 | タイプ | 説明 |
|---|---|---|
| 言語 | 文字列 | フィールドラベルの言語の BCP 47 コード。言語に設定できるラベルは 1 つだけであるため、 ラベルオブジェクトの アレイ内で各言語は一意である必要があります。 |
| ラベル | 文字列 | 指定された言語のフィールドラベルのテキスト。 |
| ヒント | 文字列 | フィールドラベルにカーソルを合わせるとツールヒントとして表示される簡単な説明。 |
| ヘルプ | 文字列 | フィールドに関する追加情報。ヘルプテキストは、テーブルのフォームビューまたはリストビューに表示されません。 |
| 複数形 | 文字列 | フィールドラベルの複数形。 |
| URL | 文字列 | フィールドに関する情報を提供する Web ページの URL。URL を指定すると、ラベルはハイパーリンクとして表示されます。 |
| URL ターゲット | 文字列 | 使用されていません (非推奨)。 |
label: [
{
label: 'English description',
language: 'en',
hint: 'Provide a short description'
},
{
label: 'Description de español',
language: 'es'
},
]
licensingConfig オブジェクト
ライセンス構成 [ua_table_licensing_config] を作成して、テーブルのサブスクリプション数を追跡します。
licensingConfig オブジェクトは、Table オブジェクト内のプロパティです。このプロパティが指定されていない場合、 licenseModel が none に設定されたデフォルトのライセンス構成がインスタンスのテーブルに対して生成されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| licenseModel | 文字列 | サブスクリプション使用状況を追跡するためのモデル。 有効な値:
デフォルト:none |
| ライセンスロール | アレイ | テーブル内のレコードに対する操作がサブスクリプションにカウントされるロールのリスト。 |
| opDelete | ブール | プロデューサーモデルのテーブルのレコードを削除するためにサブスクリプションが必要かどうかを示すフラグ。 有効な値:
デフォルト:true |
| opInsert | ブール | プロデューサーモデルでテーブルのレコードを挿入するためにサブスクリプションが必要かどうかを示すフラグ。 有効な値:
デフォルト:true |
| opUpdate | ブール | プロデューサーモデルでテーブルのレコードを更新するためにサブスクリプションが必要かどうかを示すフラグ。
デフォルト:true |
| ライセンス条件 | 文字列 | サブスクリプションに対して操作をカウントするための条件を決定するフィルタークエリ。 履行者モデルの場合は、ログインしているユーザーがレコードの履行者であるかどうかを決定する一連の条件を指定します。 プロデューサーモデルの場合は、レコードをサブスクリプションにカウントするかどうかを決定する一連の条件を指定します。 |
| 所有者条件 | 文字列 | ユーザーが履行者モデルのレコードを所有しているかどうかを判断するフィルタークエリ。 |
| 達成 | ブール | 使用されていません (非推奨)。アプリケーションに登録していないユーザーによる更新を禁止するかどうかを示すフラグ。 有効な値:
デフォルト値:false |
licensingConfig: {
licenseModel: 'fulfiller',
opInsert: false,
licenseRoles: ['admin'],
}
autoNumber オブジェクト
テーブルの自動番号付け [sys_number] を構成します。
autoNumber オブジェクトは、Table オブジェクト内のプロパティです。
| 名前 | タイプ | 説明 |
|---|---|---|
| prefix | 文字列 | テーブル内のすべてのレコード番号のプリフィックス。たとえば、インシデントの場合は INC です。 デフォルト:pre |
| number | 整数 | このテーブルの基本レコード番号。レコード番号は自動的にインクリメントされ、次の番号はカウンター [sys_number_counter] テーブルに保持されます。 ベース番号を現在のカウンターより大きい値に設定すると、次のレコード番号では新しいベース番号が使用されます。それ以外の場合は、次のレコード番号で現在のカウンターが使用されます。カウンターがそれ自体よりも小さいベース番号にリセットされることはありません。 デフォルト:1000 |
| numberOfDigits | 整数 | プリフィックスの後に使用する最小桁数。 必要に応じて、自動番号に先行ゼロが追加されます。たとえば、INC0001001 には 3 つの先行ゼロが含まれています。桁数が最小長を超えることがあります。たとえば、 numberOfDigits が 2 で、テーブルに 99 を超えるレコードが作成された場合、番号は 100 を超えて継続します (INC101 など)。 警告: このフィールドを変更して、テーブルの既存レコードのすべての番号値を更新できます。本番インスタンスでこのフィールドを変更する場合は注意が必要です。 デフォルト値:7 |
autoNumber: {
prefix: 'TODO',
number: 2000,
numberOfDigits: 9,
}
number: IntegerColumn({
default: 'javascript:getNextObjNumberPadded();'
})