ServiceNow Fluent
ServiceNow Fluent ドメイン固有のプログラミング言語を使用して、ソースコードでアプリケーションメタデータを定義します。
ServiceNow Fluent の概要
ServiceNow Fluent は、アプリケーションを構成するメタデータファイル [sys_metadata] を定義するための TypeScript に基づく宣言型ドメイン固有言語 (DSL) であり、テーブル、ロール、ACL、ビジネスルール、 自動テストフレームワーク (ATF) テストなど、さまざまなタイプのメタデータの API が含まれています。
開発者は、フォームやビルダーツールのユーザーインターフェイスではなく、数行のコードでこのメタデータを定義します。ServiceNow IDE または ServiceNow SDK で作成または変換されたアプリケーションは、ServiceNow Fluent での開発をサポートします。
ServiceNow Fluent は双方向同期をサポートしています。これにより、メタデータへの変更を他の ServiceNow AI Platform ユーザーインターフェイスからソースコードに同期し、ソースコードへの変更をインスタンス全体のメタデータに同期することができます。
ServiceNow IDE または ServiceNow SDK の使用を開始するには、『ServiceNow IDE』または『ServiceNow SDK』のドキュメントを参照してください。
ServiceNow Fluent 個の API
ServiceNow Fluent には、多くのタイプのメタデータの API が含まれています。レコード API を使用して、専用 API を持たないアプリケーションメタデータを定義できます。サポートされている API と例の最新のリストについては、GitHub の ServiceNow Fluent API リファレンスと ServiceNow SDK のサンプルリポジトリを参照してください。
ServiceNow Fluent の使用法
拡張子が .now.ts のファイルで、ServiceNow Fluent API のオブジェクトを使用して、アプリケーションのメタデータを定義します。また、@servicenow/sdk/core からの API に、必要なインポートも含める必要があります。BusinessRule オブジェクトなどのサーバー側スクリプトを持つオブジェクトの場合は、JavaScript モジュールからコードをインポートして使用できます。
import '@servicenow/sdk/global'
import { BusinessRule, ClientScript, DateColumn, StringColumn, Table } from '@servicenow/sdk/core'
import { showStateUpdate } from '../server/script.js'
//creates todo table, with three columns (deadline, status and task)
export const x_snc_example_to_do = Table({
name: 'x_snc_example_to_do',
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 }),
},
})
//creates a client script that pops up 'Table loaded successfully!!' message everytime todo record is loaded
ClientScript({
$id: Now.ID['cs0'],
name: 'my_client_script',
table: 'x_snc_example_to_do',
active: true,
appliesExtended: false,
global: true,
uiType: 'all',
description: 'Custom client script generated by Now SDK',
isolateScript: false,
type: 'onLoad',
script: Now.include('../client/client-script.js'),
})
//creates a business rule that pops up state change message whenever a todo record is updated
BusinessRule({
$id: Now.ID['br0'],
action: ['update'],
table: 'x_snc_example_to_do',
script: showStateUpdate,
name: 'LogStateChange',
order: 100,
when: 'after',
active: true,
})function onLoad() {
g_form.addInfoMessage("Table loaded successfully!!")
}import { gs } from '@servicenow/glide'
export function showStateUpdate(current, previous) {
const currentState = current.getValue('state')
const previousState = previous.getValue('state')
gs.addInfoMessage(`state updated from "${previousState}" to "${currentState}"`)
}アプリケーションのビルド後、このソースコードはインスタンスで次のアプリケーションメタデータファイルを生成します。
@fluent-ignore:次のコード行の ServiceNow Fluent 診断警告とエラーを抑制します。@fluent-disable-sync:ServiceNow Fluent オブジェクトへの変更の同期をオフにします。呼び出し式の前 (たとえば、Record({ ... })) を使用して、そのオブジェクトと子オブジェクトの同期をオフにします。このディレクティブは、ソースコードの外部でオブジェクトに加えられた変更を無視し、同期時に更新しない場合にのみ使用します。@fluent-disable-sync-for-file:ServiceNow Fluent ファイル (.now.ts) への変更の同期をオフにします。ファイル内のすべてのコードの同期をオフにするには、ファイルの最初の行で使用します。このディレクティブは、ソースコードの外部でファイルに加えられた変更を無視し、同期時に更新しない場合にのみ使用します。