ServiceNow Fluent

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:6分
  • ServiceNow Fluent ドメイン固有のプログラミング言語を使用して、ソースコードでアプリケーションメタデータを定義します。

    ServiceNow Fluentの概要

    ServiceNow Fluent は、アプリケーションを構成するメタデータファイル [sys_metadata] を定義するための TypeScript に基づくドメイン固有言語 (DSL) であり、テーブル、ロール、ACL、ビジネスルール、自動テストフレームワーク (ATF) テストなど、さまざまなタイプのメタデータの API が含まれています。

    開発者は、フォームやビルダーツールのユーザーインターフェイスではなく、数行のコードでこのメタデータを定義します。ServiceNow IDE または ServiceNow SDK で作成または変換されたアプリケーションは、ServiceNow Fluent での開発をサポートしています。

    ServiceNow Fluent は双方向同期をサポートしています。これにより、メタデータへの変更を他の Now Platform ユーザーインターフェイスからソースコードに同期し、ソースコードへの変更をインスタンス全体のメタデータに同期することができます。
    注:
    自動テストフレームワーク (ATF) のテスト API は一方向の同期のみをサポートします。ソースコードで ATF テストを定義した後、メタデータがソースコードの外部で変更された場合、それらの変更は同期されず、ソースコードに反映されません。

    ServiceNow IDE または ServiceNow SDK の使用を開始するには、『ServiceNow IDE』または『ServiceNow SDK』のドキュメントを参照してください。

    API

    ServiceNow Fluent には、次のタイプのメタデータの API が含まれています。レコード API を使用して、専用 API を持たないアプリケーションメタデータを定義できます。

    API と例の詳細については、「 ServiceNow Fluent API reference および ServiceNow SDK サンプル GitHub リポジトリ」を参照してください。

    • アクセス制御リスト (ACL)
    • アプリケーションメニュー
    • 自動テストフレームワーク (ATF) テスト
    • ビジネスルール
    • クライアントスクリプト
    • リスト
    • プロパティ
    • レコード
    • ロール
    • スクリプト済み REST APIs
    • テーブル

    使用法

    拡張子が .now.ts のファイルで、ServiceNow Fluent API のオブジェクトを使用して、アプリケーションのメタデータを定義します。また、@servicenow/sdk/core からの API に、必要なインポートも含める必要があります。

    次の例には、アプリケーションのテーブル、クライアントスクリプト、およびビジネスルールの定義が含まれています。ビジネスルールは、script.js JavaScript モジュールの関数を使用します。
    import '@servicenow/sdk/global'
    import { BusinessRule } from '@servicenow/sdk/core'
    import { ClientScript } from '@servicenow/sdk/core'
    import { Table, DateColumn, StringColumn } 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' },
                    in_progress: { 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,
        applies_extended: false,
        global: true,
        ui_type: 'all',
        description: 'Custom client script generated by Now SDK',
        messages: '',
        isolate_script: false,
        type: 'onLoad',
        script: script`function onLoad() {
            g_form.addInfoMessage("Table loaded successfully!!")
        }`,
    })
    
    //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,
    })

    アプリケーションのビルド後、このソースコードはインスタンスで次のアプリケーションメタデータファイルを生成します。

    図 : 1. ServiceNow Fluent コードから生成されたアプリケーションメタデータ
    コード例から生成されたアプリケーションファイル。
    ヒント:
    コードコメントで次のディレクティブを使用して、コードを管理できます。
    • @fluent-ignore:次のコード行 ServiceNow Fluent 診断の警告とエラーを抑制します。
    • @fluent-disable-sync: ServiceNow Fluent オブジェクトへの変更の同期をオフにします。呼び出し式の前 ( 例: Record({ ... })) を使用して、そのオブジェクトとその子オブジェクトの同期をオフにします。このディレクティブは、ソースコードの外部でオブジェクトに加えられた変更を無視し、同期時に更新しない場合にのみ使用してください。
    • @fluent-disable-sync-for-file: ServiceNow Fluent ファイル (.now.ts) への変更の同期をオフにします。ファイルの最初の行で使用して、ファイル内のすべてのコードの同期をオフにします。このディレクティブは、ソースコードの外部でファイルに加えられた変更を無視し、同期時に更新しない場合にのみ使用してください。