チュートリアルパート 3: ServiceNow Fluent コードでテーブルを定義する

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:8分
  • テーブルを作成し、 ServiceNow Fluent API を使用してサンプルスクリプト定義で参照します。

    始める前に

    チュートリアルパート 2: アプリケーションのリポジトリを初期化する」を完了します。

    必要なロール:admin

    このタスクについて

    ServiceNow Fluent は、アプリケーションを構成するメタデータファイル [sys_metadata] を定義するための TypeScript に基づくドメイン固有言語 (DSL) であり、テーブル、ロール、ACL、ビジネスルール、自動テストフレームワーク (ATF) テストなど、さまざまなタイプのメタデータの API が含まれています。ServiceNow Fluent API のオブジェクトを使用して、.now.ts 拡張子を持つファイルのメタデータを定義します。ServiceNow IDEには、デフォルトでServiceNow Fluent API とアプリケーションの言語処理と検証が備わっています。ServiceNow Fluent の詳細については、「ServiceNow Fluent」を参照してください。

    この例では、 ServiceNow Fluent Table API のオブジェクトを使用して、To Do リスト用の単純なテーブルを作成します。次に、新しいテーブルを参照するようにビジネスルールとクライアントスクリプト定義のサンプルコードを更新します。最後に、メタデータエクスプローラーから変更を確認します。テーブル API の詳細については、「 テーブル API - ServiceNow Fluent」を参照してください。

    手順

    1. アクティビティバーから、[ファイルエクスプローラー] ビュー(ファイルエクスプローラー) を選択します。
    2. アプリケーションの src/fluent ディレクトリに移動します。
    3. index.now.tsサンプルファイルを開きます。
      ヒント:
      ServiceNow Fluent コードを 1 つのファイルまたは必要な数の .now.ts ファイルに記述し、Fluent ディレクトリ内のディレクトリにファイルを整理できます。
    4. ファイルの末尾の新しい行に「 Table({}) 」と入力して、Table オブジェクトを追加します。
    5. ステータスバーから、診断アイコン ( 診断) を選択して [問題] パネルを開き、コードの問題を確認します。

      クイックフィックスのオプションを含むクイックフィックスメニュー

    6. 表示されるエラーを右クリックし、[ Update import from "@servicenow/sdk/core" (「/sdk/core」からインポートを更新 する」クイックフィックスを選択します。

      [問題] パネルに @servicenow/sdk/core からのテーブルインポートを追加するクイックフィックス

      2 行目では、 テーブル オブジェクトが @servicenow/sdk/core からのインポートのリストに追加されます。
      import { BusinessRule, ClientScript, Table } from '@servicenow/sdk/core'
      ヒント:
      この問題を修正したら、[問題] パネルを閉じて次の手順に進むことができます。後のステップで、問題が残っている場合はそのステップに戻ります。
    7. Table オブジェクトで、次のプロパティを追加します。
      • name:テーブル名はアプリケーションスコープで始まり、すべて小文字で <scope>_<name> の形式で使用する必要があります。スコープは、アプリケーションの now.config.json ファイルにあります。
      • label:ラベルは一意である必要があり、リストビューおよびフォームビューのテーブルに表示されます。
      • extends:テーブルの基になっている別のテーブルの名前。
      Table({
          name: 'x_snc_hello_world_to_do', //ensure that the name begins with the correct scope (<scope>_<name>)
          label: 'To-do Items',
          extends: 'task',
      })
      ヒント:
      オブジェクトにカーソルを合わせると、その製品内ドキュメントが表示されます。

      Table オブジェクトにカーソルを合わせると、Table API のドキュメントが表示されます。

    8. テーブルで列を定義するときの先行入力をサポートするには、nameプロパティと同じ名前のエクスポートされた変数を追加します。
      export const x_snc_hello_world_to_do = Table({
          name: 'x_snc_hello_world_to_do',
          label: 'To-do Items',
          extends: 'task',
      })
    9. Table オブジェクトで、スキーマプロパティを追加してテーブルの列を定義します。
      export const x_snc_hello_world_to_do = Table({
          name: 'x_snc_hello_world_to_do',
          label: 'To-do Items',
          extends: 'task',
          schema: {
              //define columns here
          }
      })

      スキーマプロパティは、 Column オブジェクトのアレイです。フィールドタイプに基づく多くのタイプの列があります。Column オブジェクトは <Type>Column 形式で、<Type> はフィールドタイプです。

      次の詳細を使用して、テーブルの 3 つの列 (期限、マトリクス、およびタスク) を定義します。各列の設定については、 Column オブジェクト ドキュメントを参照してください。

      列名 詳細
      deadline
      • [Label (ラベル)]:Deadline (期限)
      • タイプ:日付/時刻
      マトリクス
      • ラベル:マトリクス
      • タイプ:文字列
      • Choices (選択肢):
        • ラベル: 緊急および重要
        • ラベル: 重要だが緊急ではない
        • ラベル: 緊急だが重要ではない
        • ラベル: 緊急でも重要でもない
      タスク
      • ラベル:タスク
      • タイプ:文字列
      • 最大長:120
      これらの詳細により、 スキーマ プロパティは次の例のようになります。選択肢に使用するキーは、任意の文字列にすることができます。
      export const x_snc_hello_world_to_do = Table({
          name: 'x_snc_hello_world_to_do',
          label: 'To-do Items',
          extends: 'task',
          schema: {
              deadline: DateColumn({ label: 'Deadline' }),
              matrix: StringColumn({
                  label: 'Matrix',
                  choices: {
                      do: { label: 'Urgent and Important' },
                      decide: { label: 'Important but Not Urgent' },
                      delegate: { label: 'Urgent but Not Important' },
                      delete: { label: 'Neither Urgent nor Important' },
                  },
              }),
              task: StringColumn({ label: 'Task', maxLength: 120 }),
          },
      })
    10. 2 行目に、 DateColumn オブジェクトと StringColumn オブジェクトのインポートを追加します。
      import { BusinessRule, ClientScript, Table, DateColumn, StringColumn } from '@servicenow/sdk/core'
    11. 既存のビジネスルールとクライアントスクリプト定義を更新して、作成したテーブルを参照します。
      1. ClientScript オブジェクトで、テーブルプロパティの値をテーブル名 (x_snc_hello_world_to_do) に変更します。
      2. BusinessRule オブジェクトに対して前の手順を繰り返します。
    12. 診断アイコン ( 診断) にエラーまたは警告が表示されている場合は、それを選択して [問題] パネルを開き、診断メッセージとクイックフィックスを確認して解決します。
    13. 次のいずれかのキーボードショートカットを使用して変更を保存します。
      • Windows:Ctrl-S
      • Mac:Cmd-S
      注:
      ファイルに未保存の変更がある場合は、[ファイル] タブにドットアイコンが表示されます。
    14. ステータスバーから、[ビルドとインストール] ] を選択します。

      のインストールが正常に完了すると、更新されたServiceNow Fluentソースコードがインスタンス上のアプリケーションファイル [sys_metadata] にコンパイルされます。

    15. 変更をメタデータとしてレビューします。
      1. アクティビティバーから、[メタデータエクスプローラー] ビュー (メタデータエクスプローラー) を選択します。
      2. アプリケーションを選択して展開します。
      3. 移動先 データ > テーブル をクリックし、[ To Do アイテム] を選択します。
        テーブルが テーブルビルダーで開きます。

        ServiceNow IDE のメタデータエクスプローラーからアクセスするテーブルビルダーの To Do アイテムテーブル。

    16. オプション: メタデータを編集し、変更をソースコードに同期します。
      メタデータエクスプローラーから、別のユーザーがソースコードの外部でメタデータを編集している様子をシミュレートして、変更が追加したコードに変換されることを確認できます。
      1. テーブルビルダーで、[タスク] フィールドを検索し、[列] ラベルを「タスク」から「To Do」に変更します。
      2. [Save (保存)] を選択します。
      3. アクティビティバーから、Now SDK ビュー ( Now SDK) を選択します。
      4. [ 変更を同期] を選択します。

        Now SDK ビュー内の同期コマンド。

        index.now.tsファイルで、タスク列のラベルプロパティが「To Do」に変更されていることがわかります。
        task: StringColumn({ label: 'To Do', maxLength: 120 }),

    タスクの結果

    ServiceNow Fluent API を使用して最初のアプリケーションメタデータを作成しました。To Do アイテム [x_snc_hello_world_to_do] テーブルは、他の ServiceNow IDE ユーザーによってソースコード内、または他の ServiceNow AI Platform ユーザーインターフェイスから変更できます。

    ナビゲーションフィルターに「x_snc_hello_world_to_do.list」と入力すると、ServiceNow AI Platformからテーブルのリストビューに移動できます。To Do アイテム [x_snc_hello_world_to_do] テーブルで実行するようにクライアントスクリプト定義を更新したため、[ 新規 ] を選択してレコードをテーブルに追加すると、レコードのロード時にクライアントスクリプトからのメッセージが表示されます。

    新しいレコードが To Do アイテムテーブルに追加されると、クライアントスクリプト定義からのメッセージ文字列が表示されます

    次のタスク

    チュートリアルパート 4: サードパーティライブラリをインストールして使用する に続きます。