실행 계획의 스크립트 가능 할당
각 카탈로그 항목에는 해당 유형의 항목을 주문할 때마다 사용되는 실행 계획이 연결되어 있습니다. 계획을 지정하지 않으면 기본 계획이 사용됩니다. 이 기본값은 대부분의 조직에 효과적이지만 추가 기준에 따라 실행 계획을 달라야 할 수도 있습니다.
예를 들어 기본 시스템 서비스 카탈로그에서 새 PC에 대한 요청은 항상 PC 제공 계획을 사용합니다. 그러나 요청자가 원격 위치에서 재택근무를 하는 경우와 같은 비정상적인 상황의 경우 이 계획을 변경해야 할 수 있습니다.
이러한 유연성을 제공하기 위해 스크립트를 사용하여 특정 카탈로그 항목의 기본 실행 계획을 무효화할 수 있습니다.
스크립트 실행 중 제한 사항
실행 계획 스크립트에는 구현하는 동안 고려해야 하는 제한 사항이 있습니다.
실행 계획 스크립트가 실행되는 동안:
- 카탈로그 작업은 실행 계획을 선택한 후에만 작성되므로 카탈로그 작업과 상호작용할 수 없습니다.
- 총 제공 시간 및 기한과 같은 일부 필드는 아직 계산되지 않지만 요청 자체는 current.request()를 통해 스크립트 내에서 사용할 수 있습니다.
- 승인이 아직 생성되지 않았습니다.
스크립트 작성
실행 계획 스크립트를 작성할 때 다음 지침을 따르십시오.
실행 계획 스크립트는 다른 서버 측 실행 계획에서와 동일한 전역 변수 및 기타 기능에 액세스할 수 있습니다.
- current 는 현재 요청된 카탈로그 항목인
sc_req_item입니다. - current.delivery_plan() 은 이 카탈로그 항목에 할당된 실행 계획입니다.
스크립트에서 평가된 값은 실행 계획의 sys_id 로 사용됩니다.
간단한 예:
current.delivery_plan.setDisplayValue('PC Delivery Plan')잘못된 값(예: 정의되지 않음 또는 찾을 수 없음)이 반환되면 기존의 할당된 값이 사용됩니다.
더 복잡한 예:
getexecutionplan();
function getexecutionplan() {
var location = current.request.requested_for.location.getDisplayValue();
// if we're in Atlanta
if (location == 'Atlanta') {
// use the remote pc delivery plan instead of the normal one
var remote_plan = new GlideRecord('sc_cat_item_delivery_plan');
remote_plan.addQuery('name', 'Remote PC Delivery Plan');
remote_plan.query();
remote_plan.next();
current.delivery_plan = remote_plan.sys_id;
return remote_plan_sys_id;
}
return current_delivery_plan;
}이 예에서는 애틀랜타 ServiceNow 에 있는 사용자에 대한 요청일 때마다 원격 PC 제공 계획을 사용합니다. 그렇지 않으면 실행 계획이 재정의되지 않고 ServiceNow 카탈로그 항목의 일반 실행 계획인 PC 제공 계획을 사용합니다.
카탈로그 항목에 스크립트 추가
사용자가 해당 항목을 요청할 때마다 스크립트가 실행되도록 카탈로그 항목에 스크립트를 추가할 수 있습니다.
시작하기 전에
필요한 역할: 관리자
프로시저
- 다음으로 이동 .
- 스크립트를 추가할 관련 카탈로그 항목을 선택합니다.
- 카탈로그 항목 양식을 구성하여 실행 계획 스크립트 필드( 보통 제공 계획 스크립트라고 함)를 추가합니다.
- 스크립트 상세 정보를 입력합니다.
- 변경 내용으로 항목 양식을 업데이트합니다.
결과
스크립트를 사용하여 실행 계획 승인
승인 규칙 스크립트를 사용하여 실행 계획을 승인할 수 있습니다.
시작하기 전에
필요한 역할: 관리자
프로시저
- 필터 탐색기에 sc_cat_item_dt_approval.list 를 입력하여 승인 실행 계획 작업을 검색합니다.
- 양식 컨텍스트 메뉴에서 .
- 승인 스크립트 필드에서 승인 규칙에 사용하는 것과 동일한 구문과 규칙을 사용하여 승인 스크립트를 입력합니다.
승인자를 지정하는 스크립트
(function manager_as_approver () {
var request = current.request_item.request;
var rc = request.requested_for.manager;
return rc;
})();