를 사용하여 ServiceNow Fluent 코드에서 애플리케이션 메타데이터 정의 ServiceNow SDK

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 8분
  • 를 사용하여 코드에서 애플리케이션 메타데이터 정의 ServiceNow Fluent 그리고 ServiceNow SDK.

    시작하기 전에

    필요한 역할: 관리자

    이 태스크 정보

    ServiceNow Fluent 은 애플리케이션을 구성하는 메타데이터 파일 [sys_metadata]을 정의하기 위한 TypeScript를 기반으로 하는 DSL(도메인별 언어)이며 테이블, 역할, ACL, 비즈니스 규칙 및 Automated Test Framework 테스트와 같은 다양한 유형의 메타데이터에 대한 API를 포함합니다. API 및 예제에 대한 ServiceNow Fluent 자세한 내용은 다음 문서를 참조하십시오 ServiceNow Fluent API 참조.

    프로시저

    1. Visual Studio Code에서 범위가 지정된 애플리케이션 디렉터리를 엽니다.
    2. src/fluent 디렉터리에서 확장명이 .now.ts인 파일을 추가합니다.
      단일 파일 또는 원하는 수의 .now.ts 파일에서 애플리케이션 메타데이터를 정의하고 Fluent 디렉터리 내의 디렉터리에 파일을 구성할 수 있습니다.
      팁:
      Fluent 디렉터리에서 index.now.ts라는 예제 파일을 참조할 수 있습니다.
    3. .now.ts 파일에서 API의 ServiceNow Fluent 객체를 사용하여 애플리케이션의 메타데이터를 정의합니다.
      예를 들어 애플리케이션에서 테이블 [sys_db_object]을 만들려면 테이블 API를 사용하십시오. 다음 예시에는 필요한 속성과 값이 있는 테이블 객체를 사용하는 할 일 목록에 대한 간단한 테이블이 포함되어 있습니다.
      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 }),
          },
      })
      주:
      기록 API를 사용하여 전용 API가 없는 애플리케이션 메타데이터를 정의할 수 있습니다.
    4. @servicenow/sdk/core에서 API에 필요한 임포트를 추가합니다.
      예를 들어 날짜 열과 문자열 열이 있는 테이블을 정의하려면 테이블 API에서 사용할 해당 객체를 임포트합니다.
      import { Table, DateColumn, StringColumn } from '@servicenow/sdk/core'
    5. 옵션: 비즈니스 규칙과 같은 서버 측 스크립트를 사용하는 API의 경우 ServiceNow Fluent JavaScript 모듈에서 코드를 임포트하여 객체의 스크립트 속성에서 호출합니다.
      이 예시에서는 스크립트 속성에서 참조할 수 있는 showStateUpdate 함수를 임포트합니다.
      import { showStateUpdate } from '../server/script.js'
    6. 변경 내용을 저장합니다.
    7. 옵션: 애플리케이션을 빌드 및 설치하여 소스 코드를 애플리케이션 메타데이터로 컴파일하고 인스턴스에서 변경 내용을 사용할 수 있도록 합니다. 자세한 내용은 를 사용하여 애플리케이션 및 설치 배포ServiceNow SDK 문서를 참조하십시오.
    팁:
    코드 설명에 다음 지침을 사용하여 코드를 관리하는 데 도움이 될 수 있습니다.
    • @fluent-ignore: 다음 코드 줄에서 진단 경고 및 오류를 표시하지 ServiceNow Fluent 않습니다.
    • @fluent-disable-sync: 객체에 ServiceNow Fluent 대한 변경 내용 동기화를 끕니다. 호출 식(예: Record({ ... })) 앞에 사용하여 해당 객체와 해당 하위 객체에 대한 동기화를 끕니다. 객체에 대한 소스 코드 외부의 변경 사항을 무시하고 동기화할 때 업데이트하지 않으려는 경우에만 이 지시문을 사용하십시오.
    • @fluent-disable-sync-for-file: 파일에 대한 ServiceNow Fluent 변경 내용 동기화를 끕니다(.now.ts). 파일의 첫 번째 줄에서 사용하여 파일의 모든 코드 동기화를 끕니다. 소스 코드 외부에서 파일에 대한 변경 사항을 무시하고 동기화할 때 업데이트하지 않으려는 경우에만 이 지시문을 사용하십시오.

    를 사용하여 소스 코드에서 애플리케이션 메타데이터 정의 ServiceNow Fluent

    .now.ts 확장명이 있는 파일에서는 API의 객체를 ServiceNow Fluent 사용하여 애플리케이션의 메타데이터를 정의합니다. 또한 @servicenow/sdk/core의 API에 필요한 임포트를 포함해야 합니다. BusinessRule 개체처럼 서버 측 스크립트가 있는 개체의 경우 JavaScript 모듈에서 코드를 임포트하여 사용할 수 있습니다.

    팁:
    구문 Now.include('path/to/file')를 사용하여 속성에서 파일을 참조하여 API에서 ServiceNow Fluent 다른 파일의 콘텐츠를 사용할 수 있습니다. 컨텐츠를 인라인으로 포함하는 대신 다른 파일의 컨텐츠를 참조하면 JavaScript, HTML, CSS 등을 지원하는 필드가 있는 레코드에 도움이 될 수 있으며, 적절한 구문 강조 표시를 사용하여 다양한 파일 형식을 보다 쉽게 개발할 수 있습니다.Now.include 유틸리티는 양방향 동기화를 지원하므로 다른 ServiceNow AI Platform 사용자 인터페이스의 필드에 대한 변경 사항은 참조된 파일의 소스 코드로 동기화되고 코드에 대한 변경 내용은 인스턴스 전체의 메타데이터로 다시 동기화됩니다.
    다음 예시에는 애플리케이션의 테이블, 클라이언트 스크립트 및 비즈니스 규칙에 대한 정의가 포함되어 있습니다. 클라이언트 스크립트는 client-script.js 파일의 스크립트를 사용합니다. 비즈니스 규칙은 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,
    })
    ClientScript 객체에서 참조하는 클라이언트 스크립트입니다.
    function onLoad() {
        g_form.addInfoMessage("Table loaded successfully!!")
    }
    BusinessRule 객체에서 참조하는 JavaScript 모듈:
    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}"`)
    }

    애플리케이션을 빌드하고 설치한 후 이 소스 코드는 인스턴스에 다음과 같은 애플리케이션 메타데이터 파일을 생성합니다.

    그림 1. 코드에서 ServiceNow Fluent 생성된 애플리케이션 메타데이터
    예제 코드에서 생성된 애플리케이션 파일입니다.