Defina metadados da aplicação em código com ServiceNow Fluent no ServiceNow IDE

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 4 min. de leitura
  • Definir metadados da aplicação no código com ServiceNow Fluent no ServiceNow IDE.

    Antes de Iniciar

    Crie, converta ou clone uma aplicação e adicione-a ao seu espaço. Para obter mais informações, consulte os seguintes tópicos:

    Função necessária: administrador

    Por Que e Quando Desempenhar Esta Tarefa

    ServiceNow Fluent é uma linguagem específica de domínio (DSL) baseada em 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ócio e testes Automated Test Framework. Para obter mais informações sobre ServiceNow Fluent APIs e exemplos, consulte ServiceNow Fluent Referência de API. O ServiceNow IDE tem processamento de idioma e validação para ServiceNow Fluent APIs e aplicações por padrão.

    Procedimento

    1. Navegar até Tudo > Desenvolvimento de apps > IDE da ServiceNow.
    2. Abra um espaço com uma aplicação.
    3. Na Barra de atividades, selecione a exibição do Explorador de arquivos ( Explorador de arquivos).
    4. No diretório src/fluent, adicione um arquivo com a extensão .now.ts.
      Você pode definir metadados da aplicação em um único arquivo ou em quantos arquivos .now.ts quiser e organizar arquivos em diretórios dentro do diretório fluent.
      Dica:
      No diretório fluente, você pode consultar um arquivo de exemplo chamado index.now.ts.
    5. No arquivo .now.ts, use objetos nas ServiceNow Fluent APIs para definir metadados na aplicação.
      Por exemplo, para criar uma tabela [sys_db_object] na aplicação, use a API de tabela. O exemplo a seguir inclui uma tabela simples para listas de tarefas pendentes usando um objeto Tabela 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' },
                      in_progress: { label: 'In Progress' },
                  },
              }),
              task: StringColumn({ label: 'Task', maxLength: 120 }),
          },
      })
      Nota:
      Você pode usar a API de registro para definir metadados de aplicações que não têm uma API dedicada.
    6. 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 da tabela:
      import { Table, DateColumn, StringColumn } from '@servicenow/sdk/core'
    7. Opcional: Para ServiceNow Fluent APIs que usam scripts do lado do servidor, como regras de negócio, importe o código de módulos JavaScript para chamá-los da propriedade de script de um objeto.
      Este exemplo importa a função showStateUpdate, que pode ser referenciada na propriedade de script.
      import { showStateUpdate } from '../server/script.js'
    8. Salve as mudanças.
    9. Opcional: Crie e implante sua aplicação para compilar o código de origem nos metadados da aplicação e disponibilizar suas mudanças em toda a instância. Para obter mais informações, consulte Criar uma aplicação no ServiceNow IDE.
    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 Fluent avisos de diagnóstico e erros na linha de código a seguir.
    • @fluent-disable-sync: desativa a sincronização de mudanças para um objeto ServiceNow Fluent. Use antes de uma expressão de chamada (por exemplo, Record({ ... })) para desativar a sincronização desse objeto e de seus objetos secundários. Use esta diretiva somente se quiser ignorar as mudanças feitas fora do código de origem no objeto e nunca atualizá-lo durante a sincronização.
    • @fluent-disable-sync-for-file: desativa a sincronização de mudanças para um arquivo ServiceNow Fluent (.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 quiser ignorar as mudanças feitas fora do código de origem no arquivo e nunca atualizá-lo durante a sincronização.

    Definição de metadados da aplicação no código de origem com ServiceNow Fluent

    Em arquivos com a extensão .now.ts, use objetos nas APIs ServiceNow Fluent para definir metadados na aplicação. Você também deve incluir as importações necessárias para as APIs de @servicenow/sdk/core.

    O exemplo a seguir inclui as definições de uma tabela, client script e regra de negócio na aplicação. A regra de negócio usa uma função do módulo JavaScript 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,
    })

    Depois de criar a aplicação, este código de origem gera os seguintes arquivos de metadados da aplicação na instância.

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