ServiceNow Fluent

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 4 minutes de lecture
  • Définir les métadonnées d’application dans le code source à l’aide du langage de programmation spécifique au ServiceNow Fluent domaine.

    Vue d'ensemble de ServiceNow Fluent

    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.

    Les développeurs définissent ces métadonnées en quelques lignes de code plutôt que via une interface utilisateur de formulaire ou d’outil de création. Applications créées ou converties avec le ou ServiceNow SDK prenant en charge le ServiceNow IDE développement dans ServiceNow Fluent.

    ServiceNow Fluent prend en charge la synchronisation bidirectionnelle, ce qui permet de synchroniser les modifications apportées aux métadonnées à partir d’autres ServiceNow AI Platform interfaces utilisateur dans le code source, et aux modifications apportées au code source d’être synchronisées avec les métadonnées dans l’ensemble de l’instance.

    Pour commencer à utiliser le ServiceNow IDE ou ServiceNow SDK, consultez la documentation ou ServiceNow IDEServiceNow SDK .

    API ServiceNow Fluent

    ServiceNow Fluent inclut des API pour les types de métadonnées suivants. 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.

    Pour en savoir plus sur les API et des exemples, consultez ServiceNow Fluent Référence d’API et le référentiel d’exemples du SDK ServiceNow GitHub .

    • Listes de contrôle d’accès (ACL)
    • Menus d'application
    • Tests Framework de tests automatisés
    • Règles métier
    • Scripts clients
    • Privilèges entre périmètres
    • Ensembles de données à importer
    • Listes
    • Propriétés
    • Enregistrements
    • Rôles
    • Actions des scripts
    • Inclusions de script
    • API REST basées sur un script
    • Widgets du portail de services
    • Tables
    • Actions d'interface utilisateur
    • Pages de l'interface utilisateur
    • Politiques d'interface utilisateur
    Remarque :
    Un nombre limité de types de métadonnées, tels que les instantanés de métadonnées [sys_metadata_link] et les ressources UX [sys_ux_lib_asset], ne peuvent pas être représentés sous forme ServiceNow Fluent de code et ne sont pas transformés. Ces types de métadonnées restent sous forme de fichiers XML de métadonnées dans le répertoire de métadonnées de votre application.

    ServiceNow Fluent Utilisation

    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.

    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 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.
    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.