Définir les métadonnées d’application dans le code avec ServiceNow Fluent et le ServiceNow SDK

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 6 minutes de lecture
  • Définir les métadonnées d’application dans le code avec ServiceNow Fluent et le ServiceNow SDK.

    Avant de commencer

    Rôle requis : admin

    Pourquoi et quand exécuter cette tâche

    ServiceNow Fluent est un langage spécifique à un domaine (DSL) basé sur TypeScript pour définir les fichiers de métadonnées [sys_metadata] qui composent les applications et inclut des API pour les différents types de métadonnées, tels que les tables, les rôles, les ACL, les règles métier et Framework de tests automatisés les tests. Pour plus d’informations sur ServiceNow Fluent les API et des exemples, reportez-vous à la section ServiceNow Fluent Référence d’API.

    Procédure

    1. Dans , ouvrez le répertoire de votre application incluse dans Visual Studio Codele champ d’application.
    2. Dans le répertoire src/fluent , ajoutez un fichier avec l’extension .now.ts .
      Vous pouvez définir les métadonnées d’application dans un seul fichier ou autant .now.ts fichiers que vous le souhaitez et organiser les fichiers dans des répertoires du répertoire fluent .
      Conseil :
      Dans le répertoire fluent , vous pouvez vous référer à un exemple de fichier nommé index.now.ts.
    3. Dans le fichier .now.ts , utilisez des objets dans les ServiceNow Fluent API pour définir les métadonnées dans l’application.
      Par exemple, pour créer une table [sys_db_object] dans l’application, utilisez l’API Table. L’exemple suivant inclut une table simple pour les listes de tâches à l’aide d’un objet Table avec les propriétés et les valeurs nécessaires.
      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 }),
          },
      })
      Remarque :
      Vous pouvez utiliser l’API Record pour définir les métadonnées d’une application qui n’a pas d’API dédiée.
    4. Ajoutez les importations requises pour les API à partir de @servicenow/sdk/core.
      Par exemple, pour définir une table avec une colonne de date et une colonne de chaîne, importez les objets correspondants à utiliser à partir de l’API de table :
      import { Table, DateColumn, StringColumn } from '@servicenow/sdk/core'
    5. Facultatif : Pour ServiceNow Fluent les API qui utilisent des scripts côté serveur, tels que les règles métier, importez du code à partir de modules JavaScript pour les appeler à partir de la propriété de script d’un objet.
      Cet exemple importe la fonction showStateUpdate , qui peut ensuite être référencée à partir de la propriété de script .
      import { showStateUpdate } from '../server/script.js'
    6. Enregistrez vos changements.
    7. Facultatif : Créez et installez votre application pour compiler le code source dans les métadonnées de l’application et rendre vos modifications disponibles sur l’instance. Pour en savoir plus, consultez Créer et installer une application avec le ServiceNow SDK.
    Conseil :
    Vous pouvez utiliser les directives suivantes dans un commentaire de code pour faciliter la gestion de votre code :
    • @fluent-ignorer : supprime les avertissements de diagnostic et les ServiceNow Fluent erreurs dans la ligne de code suivante.
    • @fluent-disable-sync : désactive la synchronisation des modifications apportées à un ServiceNow Fluent objet. Utilisez avant une expression d’appel (par exemple, Record({ ... })) pour désactiver la synchronisation de cet objet et de ses objets enfants. N’utilisez cette directive que si vous souhaitez ignorer les modifications apportées à l’objet en dehors du code source et ne jamais la mettre à jour lors de la synchronisation.
    • @fluent-disable-sync-for-file : désactive la synchronisation des modifications dans un ServiceNow Fluent fichier (.now.ts). Utilisez dans la première ligne du fichier pour désactiver la synchronisation de tout le code du fichier. N’utilisez cette directive que si vous voulez ignorer les modifications apportées au fichier en dehors du code source et ne jamais le mettre à jour lors de la synchronisation.

    Définition des métadonnées d’application dans le code source avec ServiceNow Fluent

    Dans les fichiers avec l’extension .now.ts , utilisez les objets des ServiceNow Fluent API pour définir les métadonnées dans l’application. Vous devez également inclure les importations requises pour les API à partir de @servicenow/sdk/core. Pour les objets avec des scripts côté serveur, tels que l’objet BusinessRule , vous pouvez importer et utiliser du code à partir de modules JavaScript.

    Conseil :
    Vous pouvez utiliser le contenu d’un autre fichier dans ServiceNow Fluent les API en faisant référence au fichier à partir d’une propriété à l’aide de la syntaxe Now.include('chemin/vers/fichier'). Il peut être utile de faire référence au contenu dans un autre fichier au lieu d’inclure le contenu en ligne pour les enregistrements dont les champs prennent en charge JavaScript, HTML, CSS, etc., afin de faciliter le développement de différents types de fichiers avec la mise en surbrillance syntaxique appropriée. L’utilitaire Now.include prend en charge la synchronisation bidirectionnelle, de sorte que les modifications apportées aux champs à partir d’autres ServiceNow AI Platform interfaces utilisateur sont synchronisées dans le code source du fichier référencé et que les modifications apportées au code sont synchronisées avec les métadonnées dans l’ensemble de l’instance.
    L’exemple suivant inclut les définitions d’une table, d’un script client et d’une règle métier dans l’application. Le script client utilise un script du fichier client-script.js . La règle métier utilise une fonction du module JavaScript script.js .
    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,
    })
    Script client référencé à partir de l’objet ClientScript :
    function onLoad() {
        g_form.addInfoMessage("Table loaded successfully!!")
    }
    Module JavaScript référencé à partir de l’objet BusinessRule :
    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}"`)
    }

    Après la création et l’installation de l’application, ce code source génère les fichiers de métadonnées d’application suivants sur l’instance.

    Figure 1. Métadonnées d’application générées à partir du ServiceNow Fluent code
    Fichiers d’application générés à partir de l’exemple de code.