비즈니스 규칙 디버깅
비즈니스 규칙 디버깅은 제품에서 사용할 수 있는 자원을 사용하여 수행할 수 있습니다 ServiceNow .
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 테이블입니다. 아래 스크립트는 확장 테이블(sc_task)에서 현재 sys_id을 쿼리한 다음 상위 테이블(작업)에서 일치하는 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);
}
}