정책 스크립트의 PaCE 구조

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기7분
  • 이 섹션에서는 정책 스크립트의 구조에 PaCE 대해 설명합니다.

    정책이 실행되면 매개 변수 집합이 전달되고 정책 개발자는 이 정책 스크립트에서 이러한 매개 변수를 사용하여 규정 준수, 비규격 또는 규정 준수 예외인지 여부를 결정하고 이 결정을 호출 서비스에 다시 반환할 수 있습니다. 다음 이미지는 샘플 스크립트를 보여줍니다.
    그림 1. 샘플 정책 스크립트
    샘플 스크립트 정책.

    다음 표에는 정책 함수 매개변수와 정책 스크립트에서 사용되는 방법이 나와 있습니다.

    변수 이름 설명
    Logger 는 정책 코더가 메시지를 기록하는 데 사용할 수 있는 개체입니다. 로그 메시지는 sn_pace_execution_log 테이블에 저장됩니다. 디버깅, 추적 또는 모니터링을 위해 이러한 로그 메시지를 검토할 수 있습니다. 로그 메시지는 다음 수준 중 하나로 기록될 수 있습니다.
    • 1 : 정보
    • 2: 디버그
    • 3: 경고
    • 4: 오류

    API를 통해 정책을 호출할 때 원하는 로그 수준을 지정할 수 있습니다. 예:형식은 다음과 같습니다.

    logger.info("** snapshotId is: "+snapshotId);

    current

    기록

    currentRecord 는 정책이 사용될 때 실행되는 현재 버전의 정책 객체입니다. currentRecord 세부 정보를 보려면 정책 홈 페이지의 버전 탭으로 이동하여 버전 상태가 현재로 설정된 정책을 찾습니다.
    아래 이미지에서 정책의 현재 활성 버전이 강조 표시된 것을 볼 수 있습니다. 여기에는 다음과 같은 세부 정보가 표시됩니다.
    • 버전 번호
    • 최근 업데이트 날짜
    • 버전을 업데이트한 사용자의 이름
    • 호출 응용 프로그램에서 실행한 횟수
    • 테스트 환경에서 실행된 횟수
    정책 스크립트는 정책에 전달된 currentRecord 객체와 상호작용하여 정책 실행 시간 동안 이 데이터에 액세스할 수 있습니다.

    PaCE 버전 상세 정보
    이 예는 정책 개발자가 정책 버전 기록의 속성에 액세스할 수 있는 방법을 보여줍니다.
    (function(logger, currentRecord, documentRecord, apiVars, configParams, recordRefs, dataCollectors, childrenOutputs, output) {
         //retrieve the input values
         logger.info(currentRecord.getValue('name'));
      }
     )(logger, currentRecord, documentRecord, apiVars, configParams, recordRefs, dataCollectors, childrenOutputs, output);
    
    문서

    기록

    documentRecord 는 유효성 검사 중인 관련 객체(table 및 documentID)에 정책을 매핑하는 데 사용됩니다. documentRecord는 table_name와 sysID의 조합입니다. 객체의 속성에 따라 정책 논리는 올바른 결정을 내리기 위해 유효성이 검사되는 객체를 관리하고 상호 작용하는 데 사용됩니다.
    예: DevOps 구성 환경에서 정책을 배포 가능 항목에 매핑할 수 있습니다. API가 호출되면 문서(배포 가능) 테이블과 배포 가능 항목의 시스템 ID에서 쿼리가 시작됩니다.
    {
               "table": "sn_cdm_deployable",
               "sysId": "d1be8f5e87d80110eec7dbdd3fbb357d"
    		}
    이 예제에서는 정책 스크립트에서 documentRecord를 사용할 수 있는 방법을 보여 줍니다.
    (function(logger, currentRecord, documentRecord, apiVars, configParams, recordRefs, dataCollectors, childrenOutputs, output) 
    {
    //assuming that associated document has state field
      var documentState = documentRecord.getValue(“state”);
    if (documentState == “new”)
       …
    else
       …
    }
    )(logger, currentRecord, documentRecord, apiVars, configParams, recordRefs, dataCollectors, childrenOutputs, output);
    

    apiVar

    apiVars는 호출될 때 API에 PaCE 전달됩니다. 여기에는 정책 버전에 정의된 모든 API 변수가 포함됩니다. 자세한 내용은 <호출자 입력 정의> 섹션을 참조하십시오.

    샘플 정책 스크립트 DevOps 환경에서 정책을 사용하여 구성 데이터의 유효성을 검사하는 방법을 보여줍니다. 샘플 스크립트에서 apiVars 변수는 다음과 같이 정의됩니다.
    var snapshotId = apiVars.snapshotId;
    여기서 지정된 snapshotId 는 지정된 기준에 따라 검증되는 DevOps 구성 배포 가능 항목의 해당 snapshotId 에 매핑됩니다.

    정책 개발자는 API가 호출될 때 전달된 apiVars 값을 사용하여 결정을 결정하는 정책 스크립트의 논리를 정의할 수 있습니다. 예를 들어, 전달된 SnapshotID는 documentRecord 객체에 전달된 배포 가능 항목의 특정 snapshotID와 관련된 키-값을 식별하는 데 사용됩니다.

    configParams

    구성 매개변수 는 정책을 매핑할 때 전달되는 변수이며 정책의 특정 버전에 대해 정의된 모든 구성 매개변수 변수를 포함합니다.

    configParams 변수는 샘플 정책 스크립트.
    var dbPort = configParams.dbPort;
    정책 개발자는 정책 스크립트의 논리를 정의하여 매핑 시 전달된 값을 사용하여 결정을 내릴 수 있습니다. 예를 들어 dbPort 번호는 30000보다 작아야 하며, 그렇지 않으면 정책이 non_compliant 것으로 간주됩니다.
    recordRefs (기록 참조) 기록 참조는 쿼리를 정의하여 테이블에서 ServiceNow® 데이터를 추출하고 데이터를 사용하여 정책 논리를 구성합니다. Javascript 편집기에서 레코드 참조를 선택할 수 있는 자동 완성 기능이 있습니다.
    데이터 수집기 데이터 수집기 함수는 출력을 제공하기 위해 외부 데이터 원본 또는 외부 데이터 원본에서 ServiceNow 입력 프로세스 데이터를 수집합니다.
    하위

    출력

    이 버전에서는 지원되지 않습니다.
    출력

    이 매개 변수는 결정을 포함하는 정책 실행의 출력을 호출 서비스에 다시 전달하는 데 사용됩니다. 이 정책은 오류, 경고 및 결과 세부 정보와 같은 추가 정보와 함께 이 정책과 관련된 결정을 제공합니다.

    이 예는 규정 준수 및 non_compliant 결정이 포함된 샘플 출력을 보여줍니다.
    
    {
        "decision": "compliant",
        "results": [],
        "warnings": [],
        "failures": [],
        "state": "complete"
    }
    
    
    {
        "decision": "non_compliant",
        "results": [],
        "warnings": [],
        "failures": [“Failed to validate key”],
        "state": "complete"
    }
    
    출력.

    결정

    결정 속성은 다음과 같이 설정할 수 있습니다.
    • 규정 준수: 정책이 요구 사항을 준수하는지 확인합니다.
    • 비준수: 정책이 요구 사항을 준수하지 않음을 확인합니다.
    • Compliant-exception: 정책에 대한 예외가 승인되었으며 정책을 준수하지 않는 모든 정책이 compliant-exception 상태로 설정되어 있는지 확인합니다.

    결정은 JSON 형식으로 호출 서비스에 다시 반환됩니다.

    주:
    스크립트의 output.decision 필드에 값이 지정되어 있지 않은 경우 정책이 실행될 때 오류가 없으면 기본적으로 이 필드는 complianty 로 설정됩니다.
    출력.

    결과

    results 속성은 정책 유효성 검사 단계에서 결정된 사항에 대한 데이터를 호출 서비스로 다시 전달하는 데 사용할 수 있습니다. 결과 목록이 있는 목록 개체를 호출 서비스로 다시 전달할 수 있습니다.

    출력.

    경고

    warnings 속성은 정책 유효성 검사 단계에서 발생한 경고에 대해 데이터를 호출 서비스로 다시 전달하는 데 사용할 수 있습니다.

    출력.

    실패

    failures 속성은 정책 유효성 검사 단계에서 발생한 오류에 대한 데이터를 호출 서비스로 다시 전달하는 데 사용할 수 있습니다.

    주:
    다음 필드는 정책 스크립트가 PaCE 실행될 때 자동으로 채워집니다.
    출력.

    name

    실행 중인 정책의 이름(현재 버전)입니다.
    출력.

    상태

    정책 발동 상태를 나타냅니다.
    • 완료: 발동이 성공적으로 완료되었습니다.
    • 보류 중: 정책을 성공적으로 실행할 수 없으며 미완료 상태임을 나타냅니다.
    주:
    • 자동 완성 제안은 로거, callerInputmappedInput 매개변수에 대한 정책 스크립트 편집기에서 사용할 수 있습니다.
    • 매개변수에 대한 추가 정보를 보려면 매개변수 이름을 입력하고 다음과 같이 옵션 중 하나를 선택합니다.
      PaCE 추가 매개변수 상세 정보