ビジネスルール API - ServiceNow Fluent

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:8分
  • ビジネスルール API は、レコードが表示、挿入、更新、または削除されるとき、またはテーブルに対してクエリが実行されるときに実行されるサーバー側スクリプト [sys_script] を定義します。

    ビジネスルールに関する一般的な情報については、「 Classic Business rules」を参照してください。

    BusinessRule オブジェクト

    特定のサーバー側条件が満たされたときにフォームフィールドの値を自動的に変更するビジネスルール [sys_script] を作成します。

    表 : 1. プロパティ
    名前 タイプ 説明
    $id 文字列または数値 必須。メタデータオブジェクトの一意の ID。アプリケーションをビルドすると、この ID は一意のsys_idにハッシュされます。詳細については、「ServiceNow Fluent 言語構成」を参照してください。

    形式: Now.ID['string' or number]

    name 文字列 必須。ビジネスルールの名前。
    table 文字列 必須。ビジネスルールが実行されるテーブルの名前。
    スクリプト スクリプト カスタムスクリプトは、定義された条件が true の場合に実行されます。 このプロパティは、JavaScript モジュールからの関数、スクリプトを含むアプリケーション内の別のファイルへの参照、またはインライン JavaScript をサポートします。
    Format (形式):
    • 関数には、JavaScript モジュールからエクスポートされた関数、関数式、またはデフォルト関数の名前を使用し、 .now.ts ファイルにインポートします。JavaScript モジュールの詳細については、「 JavaScript モジュールとサードパーティライブラリ」を参照してください。
    • 別のファイルのテキストコンテンツを使用するには、 Now.include('path/to/file') の形式を使用してアプリケーションでファイルを参照します。詳細については、「ServiceNow Fluent 言語構成」を参照してください。
    • インラインスクリプトを指定するには、複数行のコードに文字列リテラルまたはテンプレートリテラルを使用します ( 「スクリプト」または「スクリプト」)
    順序 番号 ビジネスルールを実行する順序を示す番号。特定のアクティビティに複数のルールがある場合、ルールは指定された順序 (昇順) で実行されます。

    デフォルト:100

    アクティブ ブール ビジネスルールが有効かどうかを示すフラグ。
    有効な値:
    • true:ビジネスルールが適用されます。
    • false:ビジネスルールは適用されません。

    デフォルト:true

    when 文字列 ビジネスルールを実行する時間。ビジネスルールを実行するタイミングの詳細については、「How business rules work」を参照してください。
    有効な値:
    • 次の値より前
    • 次の値より後
    • 非同期
    • 表示

    デフォルト:before

    action アレイ ビジネスルールが適用されるレコードオプション。ビジネスルールアクションの詳細については、「How business rules work」を参照してください。
    有効な値:
    • insert
    • update
    • delete
    • クエリ
    addMessage ブール ビジネスルールの実行時に表示されるメッセージを追加するかどうかを示すフラグ。
    有効な値:
    • true:メッセージを表示します。
    • false:メッセージを表示しません。

    デフォルト値:false

    abortアクション ブール 現在のデータベーストランザクションを中止するかどうかを示すフラグ。たとえば、挿入前のビジネスルールで、条件が満たされている場合は、レコードをデータベースに挿入しません。
    有効な値:
    • false:現在のデータベーストランザクションを中止しません。
    • true:現在のデータベーストランザクションを中止します。フィールド値の設定やスクリプトの実行など、レコードに対して追加のアクションを実行することはできません。addMessage プロパティと message プロパティを使用して、ユーザーにメッセージを表示することはできます。

    デフォルト値:false

    message 文字列 ビジネスルールの実行時に表示されるメッセージ。
    ロール条件 アレイ テーブル内のレコードを変更するユーザーがビジネスルールを実行するために持っている必要がある ロール オブジェクトの変数識別子のリスト。詳細については、「ロール API - ServiceNow Fluent」を参照してください。
    condition 文字列 スクリプトを実行するために true でなければならないフィールドと値を指定する JavaScript 条件ステートメント。 このプロパティは、インライン JavaScript、またはスクリプトを含むアプリケーション内の別のファイルへの参照をサポートします。
    注:
    filterCondition またはスクリプトプロパティに条件ステートメントを含める場合は、このプロパティを使用しないでください。

    このプロパティで条件ステートメントを指定すると、条件が個別に評価され、条件が true の場合にのみビジネスルールが実行されます。非同期ビジネスルールを実行する前に条件ステートメントを再評価するには、 glide.businessrule.async_condition_check システムプロパティを true に設定します。

    Format (形式):
    • 別のファイルのテキストコンテンツを使用するには、 Now.include('path/to/file') の形式を使用してアプリケーションでファイルを参照します。詳細については、「ServiceNow Fluent 言語構成」を参照してください。
    • インラインスクリプトを指定するには、複数行のコードに文字列リテラルまたはテンプレートリテラルを使用します ( 「スクリプト」または「スクリプト」)
    filterCondition 文字列 ビジネスルールを実行するために true でなければならないフィールドと値を指定するフィルタークエリ。詳細については、「Operators available for filters and queries」を参照してください。
    フィールド値の設定 文字列 テーブルのフィールドに設定する値。これは、 setFieldValue: 'sec_created=false^EQ' などのエンコードされたクエリとして指定できます。
    説明 文字列 ビジネスルールの実行内容の説明。
    $meta オブジェクト アプリケーションメタデータのメタデータ。
    installMethod プロパティを使用すると、特定の状況でのみロードされる出力ディレクトリにアプリケーションメタデータをマップできます。
    $meta: {
          installMethod: 'String'
    }
    installMethod の有効な値:
    • demo:[デモデータのロード] オプションが選択されている場合、アプリケーションメタデータを metadata/unload.demo ディレクトリに出力して、アプリケーションとともにインストールします。
    • 初回インストール:アプリケーションがインスタンスに初めてインストールされたときにのみインストールされるように 、アプリケーションメタデータをメタデータ/アンロード ディレクトリに出力します。
    import { BusinessRule } from '@servicenow/sdk/core'
    import { FunctionExport, FunctionExpression } from '../server/scripts.js'
    import DefaultExportFunction from '../server/scripts.js'
    
    const BR1 = BusinessRule({
        name: 'exportedFunction',
        table: 'x_snc_table',
        when: 'after',
        action: ['update', 'delete', 'insert'],
        script: FunctionExport,
        order: 100,
        active: true,
        addMessage: false,
        message: '<p>message</p>',
        abortAction: false,
        $id: Now.ID[0],
    })
    
    const BR2 = BusinessRule({
        name: 'businessrule2',
        table: 'x_snc_table',
        script: FunctionExpression,
        when: 'after',
        action: ['update'],
        $id: Now.ID[1],
    })
    
    const BR3 = BusinessRule({
        name: 'businessrule3',
        table: 'x_snc_table',
        script: DefaultExportFunction,
        when: 'after',
        action: ['update'],
        filterCondition: `sys_updated_onSTARTSWITHb^sys_updated_bySTARTSWITHm^EQ
        <item goto="false" or="false" field="sys_updated_on" endquery="false" value="b" operator="STARTSWITH" newquery="false"/>
        <item goto="false" or="false" field="sys_updated_by" endquery="false" value="m" operator="STARTSWITH" newquery="false"/>
        <item goto="false" or="false" field="" endquery="true" value="" operator="=" newquery="false"/>`,
        $id: Now.ID[2],
    })
    
    const BR4 = BusinessRule({
        name: 'templateBR',
        action: ['insert'],
        when: 'after',
        table: 'x_snc_table',
        roleConditions: [admin],
        order: 100,
        active: true,
        addMessage: true,
        message: '<p>message</p>',
        script: `gs.info('info')`,
        abortAction: false,
        $id: Now.ID[3],
    })