여러 인시던트를 종료하는 UI 작업 만들기
UI 작업을 만들어 목록 뷰의 작업 목록에서 여러 인시던트를 한 번에 닫습니다.
시작하기 전에
필요한 역할: business_rule_admin(비즈니스 규칙의 경우), ui_action_admin(UI 작업의 경우) 또는 관리자
이 태스크 정보
작업 목록에서 인시던트를 닫으면 종결되어 있고 list_updater 역할이 필요하지 않은 모든 인시던트에 동일한 종결 메모가 추가됩니다. 이 프로세스를 구현하려면 UI 작업 및 사용자 지정 UI 페이지에서 참조하는 스크립트 포함이 필요합니다.
프로시저
- 다음으로 이동 모두 > 시스템 정의 > 스크립트 포함 을 클릭하고 신규를 클릭합니다.
-
다음 정보가 포함된 스크립트 포함을 만듭니다.
- 이름: IncidentClosure
- 클라이언트 호출 가능: 확인란 선택
- 활성: 확인란 선택
- 스크립트: 다음 정보를 붙여 넣습니다.
var IncidentClosure = Class.create(); IncidentClosure.prototype = Object.extendsObject(AbstractAjaxProcessor, { closeIncidents: function() { var selectedIncidents = this.getParameter("sysparm_incidents"); var notes = this.getParameter("sysparm_closeNote"); var code = this.getParameter("sysparm_closeCode"); var incidentGr = new GlideRecord('incident'); incidentGr.addQuery('sys_id', 'IN', selectedIncidents); incidentGr.query(); while (incidentGr.next()) { incidentGr.setValue('state', 7); incidentGr.setValue('close_notes', notes); incidentGr.setValue('close_code', code); incidentGr.update(); } return true; }, type: 'IncidentClosure' });
- 레코드를 저장합니다.
-
다음 단계를 만들어 UI 페이지를 만듭니다.
- 이름: mandatory_fields_to_close_incident_ui
- HTML: 다음 정보를 붙여 넣습니다.
<?xml version="1.0" encoding="utf-8" ?> <j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null"> <style> #content_row .reference-label { padding-right: 15px; } #page_timing_div { display: none; } </style> <form class="form-horizontal"> <div class="form-group"> <label class="col-xs-4 control-label"> <span style="padding-right: 5px;"></span> <span class="label-text">${gs.getMessage('Resolution code')}</span> </label> <div class="col-xs-5 form-field input_controls" style="line-height: 32px;"> <select name="closeCode" id="closeCode"> <option value="" selected="SELECTED" role="option">-- None --</option> <option value="Solved (Work Around)" role="option">Solved (Work Around)</option> <option value="Solved (Permanently)" role="option">Solved (Permanently)</option> <option value="Solved Remotely (Work Around)" role="option">Solved Remotely (Work Around)</option> <option value="Solved Remotely (Permanently)" role="option">Solved Remotely (Permanently)</option> <option value="Not Solved (Not Reproducible)" role="option">Not Solved (Not Reproducible)</option> <option value="Not Solved (Too Costly)" role="option">Not Solved (Too Costly)</option> <option value="Closed/Resolved by Caller" role="option">Closed/Resolved by Caller</option> </select> </div> </div> <div class="form-group"> <label class="col-xs-4 control-label"> <span class="label-text" style="">${gs.getMessage('Resolution Notes')}</span> </label> <div class="col-xs-7 form-field input_controls"> <textarea required="true" class="form-control" value="closeNotes" id="closeNotes" type="text"></textarea> </div> </div> <div class="form-group" style="padding-right:20px;margin-bottom:0;padding-left: 75%; line-height: 45px;"> <g:dialog_button id="cancel_button" type="button" style_class="$btn btn-default" onclick="actionCancel()" style="min-width: 5em;">${gs.getMessage('Cancel')}</g:dialog_button> <g:dialog_button id="ok_button" type="button" onclick="actionOK()" style_class="btn btn-primary" style="min-width: 5em;">${gs.getMessage('OK')}</g:dialog_button> <div class="clearfix"></div> </div> </form> </j:jelly> - 클라이언트 스크립트: 다음 정보를 붙여 넣습니다.
function actionOK() { var modal = GlideModal.prototype.get("mandatory_fields_to_close_incident_ui"); var incidents = modal.getPreference("selected_incidents"); if (incidents) { //close the incidents var glideAjax = new GlideAjax("IncidentClosure"); glideAjax.addParam("sysparm_name", "closeIncidents"); glideAjax.addParam("sysparm_incidents", incidents); glideAjax.addParam("sysparm_closeCode", $("closeCode").value); glideAjax.addParam("sysparm_closeNote", $("closeNotes").value); glideAjax.getXMLAnswer(function(answer) { GlideModal.prototype.get("mandatory_fields_to_close_incident_ui").destroy(); GlideList2.get('incident').refresh(); }); } } function actionCancel() { GlideModal.prototype.get("mandatory_fields_to_close_incident_ui").destroy(); } (function() { var okButton = gel('ok_button'); var closeCodeEl = gel('closeCode'); var closeNotesEl = gel('closeNotes'); okButton.disabled = true; closeNotesEl.value = ""; closeCodeEl.on('change', function() { if (closeCodeEl.value !=="" && closeNotesEl.value !=="") okButton.disabled = false; else okButton.disabled = true; }); closeNotesEl.on('input', function() { if (closeCodeEl.value !=="" && closeNotesEl.value !=="") okButton.disabled = false; else okButton.disabled = true; }); })();
- 레코드를 저장합니다.
-
여러 인시던트를 닫기 위한 UI 작업을 만들려면 다음 단계를 완료합니다.
- 다음으로 이동 시스템 정의 > UI 작업 을 클릭하고 신규를 클릭합니다.
-
다음 정보를 사용해 UI 작업을 만듭니다.
- 이름: 인시던트 종결
- 테이블: 인시던트 [incident]
- 업데이트 표시: 확인란 선택
- 목록 선택: 확인란 선택
- 목록 V2 호환: 확인란 선택
- 클라이언트: 확인란 선택
- 클릭 시: closeincidents()
- 조건: current.getValue('state') !== '7'
- 스크립트: 다음 정보를 붙여넣습니다.
function closeIncidents() { var list = GlideList2.get('incident'); var title = list.getTitle(); var incidents = list.getChecked(); if (incidents) { var o = new GlideModal('mandatory_fields_to_close_incident_ui'); getMessage("Close Incidents", function(msg) { o.setTitle(msg); o.setPreference('selected_incidents', incidents); o.render(); }); } }
- 레코드를 저장합니다.