Definieren Sie Anwendungsmetadaten in Code mit ServiceNow FluentUnd ServiceNow SDK

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 5 Minuten Lesedauer
  • Definieren Sie Anwendungsmetadaten in Code mit ServiceNow FluentUnd ServiceNow SDK.

    Vorbereitungen

    Erforderliche Rolle: Administrator

    Warum und wann dieser Vorgang ausgeführt wird

    ServiceNow FluentIst eine domänenspezifische Sprache (DSL) basierend auf TypeScript zum Definieren der Metadatendateien [sys_metadata], aus denen Anwendungen bestehen und APIs für die verschiedenen Metadatentypen enthalten, z. B. Tabellen, Rollen, ACLs, Business-Regeln, und Automated Test FrameworkTests. Für weitere Informationen zu ServiceNow FluentAPIs und Beispiele, siehe ServiceNow Fluent API-Referenz.

    Prozedur

    1. In Visual Studio Code, Öffnen Sie Ihr bereichsbezogenes Anwendungsverzeichnis.
    2. In src/Fluent Verzeichnis, fügen Sie eine Datei mit hinzu .Jetzt.TS Erweiterung.
      Sie können Anwendungsmetadaten in einer einzelnen Datei oder in beliebiger Anzahl definieren .Jetzt.TS Dateien wie gewünscht und Dateien in Verzeichnissen innerhalb von organisieren Fluent Verzeichnis.
      Tipp:
      In Fluent Verzeichnis, können Sie sich auf eine Beispieldatei mit dem Namen beziehen index.now.ts .
    3. In .Jetzt.TS Datei, verwenden Sie Objekte in ServiceNow FluentAPIs zum Definieren von Metadaten in der Anwendung.
      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 mit Tabelle Objekt 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' },
                      inProgress: { 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 aus hinzu @servicenow/sdk/Core .
      Um beispielsweise eine Tabelle mit einer Datumsspalte und einer Zeichenfolgenspalte zu definieren, importieren Sie die entsprechenden zu verwendenden Objekte aus der Tabellen-API:
      import { Table, DateColumn, StringColumn } from '@servicenow/sdk/core'
    5. Wahlweise: Für ServiceNow FluentAPIs, die serverseitige Skripts wie Business-Regeln verwenden, importieren Code aus JavaScript-Modulen, um sie von Objekten aufzurufen Skript Eigenschaft.
      In diesem Beispiel wird importiert ShowStateUpdate Funktion, auf die dann von verwiesen werden kann Skript Eigenschaft.
      import { showStateUpdate } from '../server/script.js'
    6. Speichern Sie die Änderungen.
    7. Wahlweise: Erstellen und installieren Sie Ihre Anwendung, um Quellcode in Anwendungsmetadaten zu kompilieren und Ihre Änderungen in der Instanz verfügbar zu machen. Weitere Informationen finden Sie unter Erstellen und Installieren Eine Anwendung mit ServiceNow SDK.
    Tipp:
    Sie können die folgenden Anweisungen in einem Codekommentar verwenden, um Ihren Code zu verwalten:
    • @Fluent-ignorieren : Unterdrückt ServiceNow FluentDiagnosewarnungen und -Fehler in der folgenden Codezeile.
    • @Fluent-disable-Sync : Deaktiviert die Synchronisierung von Changes mit ServiceNow FluentObjekt. Vor einem Anruf-Ausdruck verwenden (z. B. Datensatz({ ... }) ), um die Synchronisierung für dieses Objekt und seine untergeordneten Objekte zu deaktivieren. Verwenden Sie diese Anweisung nur, wenn Sie Änderungen, die außerhalb des Quellcodes am Objekt vorgenommen wurden, ignorieren und bei der Synchronisierung niemals aktualisieren möchten.
    • @Fluent-disable-Sync-for-file : Deaktiviert die Synchronisierung von Changes mit ServiceNow FluentDatei ( .Jetzt.TS ). Verwenden Sie diese Option in der ersten Zeile der Datei, um die Synchronisierung für alle Codes in der Datei zu deaktivieren. Verwenden Sie diese Anweisung nur, wenn Sie Änderungen außerhalb des Quellcodes an der Datei ignorieren und sie beim Synchronisieren nie aktualisieren möchten.

    Definieren von Anwendungsmetadaten im Quellcode mit ServiceNow Fluent

    In Dateien mit .Jetzt.TS Erweiterung, verwenden Sie Objekte in ServiceNow FluentAPIs zum Definieren von Metadaten in der Anwendung. Sie müssen auch die erforderlichen Importe für die APIs aus einschließen @servicenow/sdk/Core . Für Objekte mit serverseitigen Skripts, z. B. BusinessRule Objekt können Sie Code aus JavaScript-Modulen importieren und verwenden.

    Tipp:
    Sie können Inhalte aus einer anderen Datei in verwenden ServiceNow FluentAPIs durch Verweis auf die Datei aus einer Eigenschaft mithilfe der Syntax Now.include('path/to/file') . Wenn Sie auf Inhalte in einer anderen Datei verweisen, anstatt den Inhalt inline einzubeziehen, kann dies für Datensätze mit Feldern hilfreich sein, die JavaScript, HTML, CSS usw. unterstützen, um die Entwicklung verschiedener Dateitypen mit der entsprechenden Syntaxhervorhebung zu erleichtern.Die Now.include Das Dienstprogramm unterstützt die bidirektionale Synchronisierung, daher ändert es sich an Feldern aus anderen ServiceNow AI PlatformAnwenderoberflächen werden mit dem Quellcode der referenzierten Datei synchronisiert, und Änderungen am Code werden in der gesamten Instanz wieder mit Metadaten synchronisiert.
    Das folgende Beispiel enthält die Definitionen einer Tabelle, eines Clientskripts und einer Business-Regel in der Anwendung. Das Clientskript verwendet ein Skript von Client-script.js Datei. Die Business-Regel verwendet eine Funktion aus Skript.js JavaScript-Modul.
    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,
    })
    Das Client-Skript, auf das verwiesen wird von ClientScript Objekt:
    function onLoad() {
        g_form.addInfoMessage("Table loaded successfully!!")
    }
    Das JavaScript-Modul, auf das verwiesen wird von BusinessRule Objekt:
    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}"`)
    }

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

    Abbildung : 1. Anwendungsmetadaten generiert aus ServiceNow FluentCode
    Aus dem Beispielcode generierte Anwendungsdateien.