ServiceNow Fluent

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기5분
  • 도메인별 프로그래밍 언어를 사용하여 ServiceNow Fluent 소스 코드에서 애플리케이션 메타데이터를 정의합니다.

    ServiceNow Fluent 개요

    ServiceNow Fluent 는 애플리케이션을 구성하는 메타데이터 파일[sys_metadata]을 정의하기 위한 TypeScript 기반의 DSL(Domain-Specific Language)이며 테이블, 역할, ACL, 비즈니스 규칙 및 Automated Test Framework 테스트와 같은 다양한 유형의 메타데이터에 대한 API를 포함합니다.

    개발자는 양식 또는 작성기 도구 사용자 인터페이스를 통하지 않고 몇 줄의 코드로 이 메타데이터를 정의합니다. 를 ServiceNow IDE 사용하여 작성되거나 변환된 응용 프로그램 또는 ServiceNow SDK 에서 개발 ServiceNow Fluent중인 지원.

    ServiceNow Fluent 는 메타데이터 변경 사항을 다른 Now Platform 사용자 인터페이스에서 소스 코드로 동기화하고 소스 코드의 변경 사항을 인스턴스 전체의 메타데이터로 다시 동기화할 수 있는 양방향 동기화를 지원합니다.
    주:
    테스트 API는 Automated Test Framework 단방향 동기화만 지원합니다. 소스 코드에서 ATF 테스트를 정의한 후 메타데이터가 소스 코드 외부에서 수정되면 해당 변경 사항이 소스 코드에 동기화되거나 반영되지 않습니다.

    or 사용을 ServiceNow IDE 시작하려면 or ServiceNow SDK 설명서를 참조하십시오ServiceNow IDE.ServiceNow SDK

    API

    ServiceNow Fluent 에는 다음과 같은 유형의 메타데이터에 대한 API가 포함되어 있습니다. 기록 API를 사용하여 전용 API가 없는 애플리케이션 메타데이터를 정의할 수 있습니다.

    API 및 예제에 대한 자세한 내용은 ServiceNow SDK 예제 GitHub 리포지토리를 참조하십시오ServiceNow Fluent API reference.

    • 접근 제어 목록(ACL)
    • 애플리케이션 메뉴
    • Automated Test Framework 테스트
    • 비즈니스 규칙
    • 클라이언트 스크립트
    • 목록
    • 속성
    • 기록
    • 역할
    • 스크립트 기반 REST API
    • 테이블

    사용량

    확장명이 .now.ts 인 파일에서 API의 ServiceNow Fluent 개체를 사용하여 애플리케이션에서 메타데이터를 정의합니다. @servicenow/sdk/core에서 API에 필요한 가져오기도 포함해야 합니다.

    다음 예시에는 애플리케이션의 테이블, 클라이언트 스크립트 및 비즈니스 규칙 정의가 포함되어 있습니다. 비즈니스 규칙은 script.js JavaScript 모듈의 함수를 사용합니다.
    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,
    })

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

    그림 1. 코드에서 생성된 ServiceNow Fluent 애플리케이션 메타데이터
    예제 코드에서 생성된 애플리케이션 파일입니다.
    팁:
    코드 주석에 다음 지시문을 사용하면 코드를 관리하는 데 도움이 됩니다.
    • @fluent-ignore: 다음 코드 줄에서 진단 경고 및 오류를 표시하지 않습니다 ServiceNow Fluent .
    • @fluent-disable-sync: 개체에 대한 ServiceNow Fluent 변경 내용 동기화를 끕니다. 호출 식 앞(예: Record({ ... }))을 사용하여 해당 개체 및 해당 자식 개체에 대한 동기화를 해제합니다. 개체에 대한 소스 코드 외부의 변경 내용을 무시하고 동기화할 때 업데이트하지 않으려는 경우에만 이 지시문을 사용합니다.
    • @fluent-disable-sync-for-file: 파일에 대한 ServiceNow Fluent 변경 사항 동기화를 끕니다(.now.ts). 파일의 첫 번째 줄에서 파일의 모든 코드에 대한 동기화를 해제하는 데 사용합니다. 파일에 대한 소스 코드 외부의 변경 사항을 무시하고 동기화할 때 업데이트하지 않으려는 경우에만 이 지시문을 사용합니다.