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 と例の詳細については、「 ServiceNow Fluent API reference 」および「 ServiceNow SDK サンプル GitHub リポジトリ」を参照してください。
- アクセス制御リスト (ACL)
- アプリケーションメニュー
- 自動テストフレームワーク (ATF) テスト
- ビジネスルール
- クライアントスクリプト
- クロススコープ権限
- インポートセット
- リスト
- プロパティ
- レコード
- ロール
- スクリプトアクション
- スクリプトインクルード
- スクリプト化 REST API
- サービスポータルウィジェット
- テーブル
- UI アクション
- UI ページ
- UI ポリシー
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) への変更の同期をオフにします。ファイルの 1 行目で使用して、ファイル内のすべてのコードの同期をオフにします。このディレクティブは、ソースコードの外部でファイルに加えられた変更を無視し、同期時に更新しないようにする場合にのみ使用します。