Defina metadados da aplicação no código com ServiceNow Fluente o. ServiceNow SDK

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 5 min. de leitura
  • Defina metadados da aplicação no código com ServiceNow Fluente o. ServiceNow SDK.

    Antes de Iniciar

    Função necessária: administrador

    Por Que e Quando Desempenhar Esta Tarefa

    ServiceNow FluentÉ uma linguagem específica do domínio (DSL) baseada no typescript para definir os arquivos de metadados [sys_metadata] que compõem as aplicações e inclui APIs para os diferentes tipos de metadados, como tabelas, funções, ACLs, regras de negócios, e. Automated Test Frameworktestes. Para obter mais informações sobre ServiceNow FluentAPIs e exemplos, consulte ServiceNow Fluent Referência de API.

    Procedimento

    1. Em Visual Studio Code, abra o diretório da aplicação com escopo.
    2. Em src/fluente , adicione um arquivo com .now.ts extensão.
      Você pode definir metadados da aplicação em um único arquivo ou em vários .now.ts arquivos como você deseja e organiza arquivos em diretórios dentro do fluente diretório.
      Dica:
      Em fluente , você pode fazer referência a um arquivo de exemplo chamado index.now.ts .
    3. Em .now.ts arquivo, use objetos no ServiceNow FluentAPIs para definir metadados na aplicação.
      Por exemplo, para criar uma tabela [sys_db_object] na aplicação, use a API Tabela. O exemplo a seguir inclui uma tabela simples para listas de tarefas pendentes usando um Tabela objeto com as propriedades e valores necessários.
      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 }),
          },
      })
      Nota:
      Você pode usar a API de registro para definir metadados da aplicação que não têm uma API dedicada.
    4. Adicione as importações necessárias para as APIs de servicenow/sdk/core .
      Por exemplo, para definir uma tabela com uma coluna de data e uma coluna de cadeia de caracteres, importe os objetos correspondentes a serem usados da API de tabela:
      import { Table, DateColumn, StringColumn } from '@servicenow/sdk/core'
    5. Opcional: Para ServiceNow FluentAs APIs que usam scripts do lado do servidor, como regras de negócios, importam código de módulos JavaScript para chamá-los de um objeto script propriedade.
      Este exemplo importa o. ShowStateUpdate , que pode ser referenciada a partir de script propriedade.
      import { showStateUpdate } from '../server/script.js'
    6. Salve as mudanças.
    7. Opcional: Crie e instale sua aplicação para compilar o código-fonte nos metadados da aplicação e disponibilizar suas mudanças na instância. Para obter mais informações, consulte Crie e. instalar uma aplicação com ServiceNow SDK.
    Dica:
    Você pode usar as seguintes diretivas em um comentário de código para ajudar a gerenciar seu código:
    • fluent-ignore : Suprime ServiceNow Fluenterros e avisos de diagnóstico na seguinte linha de código.
    • fluent-disable-sync : Desativa a sincronização de mudanças para um ServiceNow Fluentobjeto. Antes de uma expressão de chamada (por exemplo, Registro(...) ) para desativar a sincronização desse objeto e seus objetos secundários. Use esta diretiva somente se você quiser ignorar as mudanças feitas fora do código-fonte no objeto e nunca atualizá-lo durante a sincronização.
    • fluent-disable-sync-for-file : Desativa a sincronização de mudanças para um ServiceNow Fluentarquivo ( .now.ts ). Use na primeira linha do arquivo para desativar a sincronização de todos os códigos no arquivo. Use esta diretiva somente se você quiser ignorar as mudanças feitas fora do código-fonte no arquivo e nunca atualizá-lo durante a sincronização.

    Definindo metadados da aplicação no código-fonte com ServiceNow Fluent

    Em arquivos com .now.ts extensão, use objetos no ServiceNow FluentAPIs para definir metadados na aplicação. Você também deve incluir as importações necessárias para as APIs de servicenow/sdk/core . Para objetos com scripts do lado do servidor, como BusinessRule Objeto, você pode importar e usar código de módulos JavaScript.

    Dica:
    Você pode usar conteúdo de outro arquivo em ServiceNow FluentUsando a sintaxe, consulte o arquivo de uma propriedade Now.include('path/to/file') . Fazer referência ao conteúdo em um arquivo diferente em vez de incluir o conteúdo em linha pode ser útil para registros com campos compatíveis com JavaScript, HTML, CSS e assim por diante para facilitar o desenvolvimento de diferentes tipos de arquivo com o realce de sintaxe apropriado.. Now.include o utilitário oferece suporte à sincronização bidirecional, portanto muda para campos de outro ServiceNow AI Platformas interfaces do usuário são sincronizadas com o código-fonte do arquivo referenciado e as mudanças no código são sincronizadas de volta para metadados na instância.
    O exemplo a seguir inclui as definições de uma tabela, script de cliente e regra de negócio na aplicação. O script do cliente usa um script do client-script.js arquivo. A regra de negócio usa uma função do script.js JavaScript.
    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,
    })
    O script do cliente referenciado a partir de ClientScript objeto:
    function onLoad() {
        g_form.addInfoMessage("Table loaded successfully!!")
    }
    O módulo JavaScript referenciado a partir de BusinessRule objeto:
    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}"`)
    }

    Após criar e instalar a aplicação, este código-fonte gera os seguintes arquivos de metadados da aplicação na instância.

    Figura 1. Metadados da aplicação gerados a partir de ServiceNow Fluentcódigo
    Arquivos de aplicação gerados a partir do código de exemplo.