비즈니스 규칙 디버깅

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기3분
  • 비즈니스 규칙 디버깅은 제품에서 ServiceNow 사용 가능한 자원으로 수행할 수 있습니다.

    1. 도구

    프로세스의 첫 번째 단계는 무엇이 잘못되었는지 파악하는 데 도움이 되는 도구를 식별하는 것입니다.

    표 1. 디버깅 도구
    디버깅 도구 설명
    시스템 딕셔너리 다음으로 이동 시스템 정의 > 딕셔너리레이블이 표시됩니다. 딕셔너리는 인스턴스 내의 모든 테이블 목록을 제공하며, 정보를 찾으려고 할 때 매우 유용할 수 있습니다.
    시스템 로그 다음으로 이동 시스템 로그 > 시스템 로그레이블이 표시됩니다. 로그에 정보를 쓸 수 있는 경고 문을 비즈니스 규칙에 배치할 수 있습니다.
    비즈니스 규칙 디버그(상세 정보) 다음으로 이동 시스템 진단 > 세션 디버그 > 비즈니스 규칙 디버그(상세 정보)레이블이 표시됩니다. 이 디버깅 모듈은 결과 비즈니스 규칙을 표시합니다. 이 모듈을 사용하여 조건이 충족되고 값이 예상대로 설정되는지 확인합니다.
    경보 메시지 페이지, 필드 또는 로그 파일에 메시지를 인쇄할 수 있는 몇 가지 시스템 기능이 있습니다. 경보, 정보 및 오류 메시지 스크립팅 문서를 참조하십시오.
    비즈니스 규칙 예 경우에 따라 비즈니스 규칙 오류 메시지를 포함하여 다른 사람이 작성한 스크립트에서 또는 OR 쿼리를 작성하여 원하는 것을 찾을 수 있습니다.
    GlideRecord 정보 데이터베이스에 정보를 쿼리하는 데 사용되는 기본 구문입니다. 스크립트에서 테이블 쿼리 문서를 참조하십시오. GlideRecord에는 집계 지원도 포함됩니다.

    2. 변수

    다음 단계는 비즈니스 규칙의 동작에 대한 통찰력을 얻는 것입니다. 삽입을 제외한 모든 작업에 대해 쿼리를 사용하여 레코드를 가져올 가능성이 높습니다.

    var rec = new GlideRecord('incident');
    rec.addQuery('active',true); 
    rec.query();
    while (rec.next()) {
     gs.print(rec.number + ' exists');
     }

    쿼리가 실제로 레코드를 반환하는지 확인하려면 gs.addInfoMessage 를 사용하여 화면 상단에 정보를 표시할 수 있습니다.

    var rec = new GlideRecord('incident');
    rec.addQuery('active',true); 
    rec.query();
    gs.addInfoMessage("This is rec.next: " + rec.next());
    while (rec.next()) {
     gs.print(rec.number + ' exists');
     }

    쿼리가 레코드를 반환하지 않으면 다음이 표시됩니다.

    This is rec.next: false

    이 기술을 사용하여 비즈니스 규칙 내의 모든 변수에 예상 값이 포함되어 있는지 확인합니다.

    팁:
    필요한 경우 스크립트를 개별 조각으로 나누고 각 조각이 전체와 별도로 작동하는지 확인한 다음 한 번에 한 단계씩 모두 다시 결합합니다.

    3. 위치 정보

    마지막 단계는 규칙에서 찾고 있는 정보를 찾을 수 있는 위치를 알고 있는지 확인하는 것입니다.

    애플리케이션에서 한 테이블은 ServiceNow 다른 테이블을 확장할 수 있습니다. 즉, 정보를 검색할 때 원하는 정보를 찾으려면 확장된 테이블의 sys_id에 대해 상위 테이블을 쿼리해야 할 수 있습니다.

    작업 테이블을 확장하는 sc_task 테이블이 좋은 예입니다. 아래 스크립트는 현재 sys_id에 대해 확장된 테이블(sc_task)을 쿼리한 다음 상위 테이블(작업)에서 일치하는 sys_id 있는 기록을 쿼리한 다음 작업 메모 필드를 출력합니다.

    var kids = new GlideRecord('sc_task');
    kids.query();
     
    gs.addInfoMessage("This is requested item number: " + current.number);
    gs.print("This is the requested item number: " + current.number);
     
    while (kids.next()) { 
     var parents = new GlideRecord('task');
     parents.addQuery('sys_id', '=', kids.sys_id);
     parents.query();
     
     while(parents.next()) {
      gs.addInfoMessage("This is task number: " + parents.number);
      gs.print("This is task number: " + parents.number);
      gs.addInfoMessage("These are the work notes: " + parents.work_notes);
      gs.print("These are the work notes: " + parents.work_notes);
      }
     
     }