Definieren Sie Anwendungsmetadaten im Code mit ServiceNow Fluent und ServiceNow SDK

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 4 Minuten Lesedauer
  • Definieren Sie mit im Code Anwendungsmetadaten ServiceNow Fluent und ServiceNow SDK.

    Vorbereitungen

    Erforderliche Rolle: Administrator

    Warum und wann dieser Vorgang ausgeführt wird

    ServiceNow Fluent ist eine auf TypeScript basierende domänenspezifische Sprache ( Domain Specific Language, Domänenspezifische Sprache) zum Definieren der Metadatendateien [sys_metadata], aus denen Anwendungen bestehen. Sie enthält APIs für die verschiedenen Arten von Metadaten, z. B. Tabellen, Rollen, ACLs, Business-Regeln und Automated Test Framework -Tests. Weitere Informationen und Beispiele zu ServiceNow Fluent -APIs finden Sie unter ServiceNow Fluent API-Referenz.

    Prozedur

    1. Öffnen Sie in Visual Studio Codedas Verzeichnis für Ihre bereichsbezogene Anwendung.
    2. Fügen Sie im Verzeichnis src/fluent eine Datei mit der Erweiterung .now.ts hinzu.
      Sie können Anwendungsmetadaten in einer einzelnen Datei oder in beliebig vielen .now.ts- Dateien definieren und Dateien in Verzeichnissen innerhalb des Flow -Verzeichnisses organisieren.
      Tipp:
      Im Fließend -Verzeichnis können Sie auf eine Beispieldatei mit dem Namen index.now.tsverweisen.
    3. Verwenden Sie in der Datei .now.ts Objekte in den ServiceNow Fluent APIs, um Metadaten in der Anwendung zu definieren.
      Um beispielsweise eine Tabelle [sys_db_object] in der Anwendung zu erstellen, verwenden Sie die Tabellen-API. Das folgende Beispiel enthält eine einfache Tabelle für Aufgabenlisten unter Verwendung eines Tabellenobjekts mit den erforderlichen Eigenschaften und Werten.
      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 }),
          },
      })
      Hinweis:
      Sie können die Datensatz-API verwenden, um Anwendungsmetadaten zu definieren, die keine dedizierte API haben.
    4. Fügen Sie die erforderlichen Importe für die APIs von @servicenow/sdk/corehinzu.
      Um beispielsweise eine Tabelle mit einer Datumsspalte und einer Zeichenfolgenspalte zu definieren, importieren Sie die entsprechenden Objekte aus der Tabellen-API:
      import { Table, DateColumn, StringColumn } from '@servicenow/sdk/core'
    5. Wahlweise: Für ServiceNow Fluent -APIs, die serverseitige Skripts verwenden, z. B. Geschäftsregeln, importieren Sie Code aus JavaScript-Modulen, um sie über die Skripteigenschaft eines Objekts aufzurufen.
      In diesem Beispiel wird die Funktion „showStateUpdate“ importiert, auf die dann in der Eigenschaft „Skript“ verwiesen werden kann.
      import { showStateUpdate } from '../server/script.js'
    6. Speichern Sie die Änderungen.
    7. Wahlweise: Erstellen Sie Ihre Anwendung, und stellen Sie sie bereit, um Quellcode in Anwendungsmetadaten zu kompilieren und Ihre Änderungen in der -Instanz verfügbar zu machen. Weitere Informationen finden Sie unter Erstellen und stellen Sie eine Anwendung mit bereit ServiceNow SDK.
    Tipp:
    Sie können die folgenden Anweisungen in einem Codekommentar verwenden, um Ihren Code zu verwalten:
    • @fluent-ignore: Unterdrückt ServiceNow Fluent Diagnosewarnungen und -fehler in der folgenden Codezeile.
    • @fluent-disable-sync: Deaktiviert die Synchronisierung von Changes mit einem Objekt ServiceNow Fluent. Verwenden Sie vor einem Anrufausdruck (z. B. Record({ ... })), um die Synchronisierung für dieses Objekt und seine untergeordneten Objekte zu deaktivieren. Verwenden Sie diese Direktive nur, wenn Sie Änderungen, die außerhalb des Quellcodes am Objekt vorgenommen werden, ignorieren und bei der Synchronisierung niemals aktualisieren möchten.
    • @fluent-disable-sync-for-file: Deaktiviert die Synchronisierung von Changes mit einer Datei ServiceNow Fluent (.now.ts). Verwenden Sie in der ersten Zeile der Datei, um die Synchronisierung für den gesamten Code in der Datei zu deaktivieren. Verwenden Sie diese Direktive nur, wenn Sie Änderungen, die außerhalb des Quellcodes an der Datei vorgenommen werden, ignorieren und bei der Synchronisierung niemals aktualisieren möchten.

    Definieren von Anwendungsmetadaten im Quellcode mit ServiceNow Fluent

    Verwenden Sie in Dateien mit der Erweiterung „.now.ts“ Objekte in den ServiceNow Fluent APIs, um Metadaten in der Anwendung zu definieren. Sie müssen auch die erforderlichen Importe für die APIs von @servicenow/sdk/coreeinschließen.

    Das folgende Beispiel enthält die Definitionen einer Tabelle, eines Client-Skripts und einer Geschäftsregel in der Anwendung. Die Geschäftsregel verwendet eine Funktion aus dem JavaScript-Modul script.js.
    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,
    })

    Nach dem Erstellen und Bereitstellen der Anwendung generiert dieser Quellcode die folgenden Anwendungsmetadatendateien in der -Instanz.

    Abbildung : 1. Aus ServiceNow Fluent -Code generierte Anwendungsmetadaten
    Anwendungsdateien, die aus dem Beispielcode generiert wurden.