Criar uma ação de IU para fechar vários incidentes
Crie uma ação de IU para fechar vários incidentes de uma vez na lista Ações na exibição de lista.
Antes de Iniciar
Função necessária: business_rule_admin (para regra de negócios), ui_action_admin (para ação de IU) ou administrador
Por Que e Quando Desempenhar Esta Tarefa
Fechar um incidente da lista Ações adiciona a mesma nota de fechamento a todos os incidentes que estão encerrados e não requer a função list_updater. A implementação deste processo requer um Script Include que é referido a partir de uma ação da IU e uma página da IU customizada.
Procedimento
- Navegue até Todos > Definição do sistema > Inclusões de script e clique em Novo.
-
Crie o Inclusões de script com as seguintes informações.
- Nome: IncidentClosure
- Cliente chamável: marque a caixa de seleção
- Ativo: marque a caixa de seleção
- Script: cole as seguintes informações:
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' });
- Salve o registro.
-
Crie as seguintes etapas para criar uma página de IU.
- Nome: mandatory_fields_to_close_incident_ui
- HTML: cole as seguintes informações:
<?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> - Client script: cole as seguintes informações:
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; }); })();
- Salve o registro.
-
Conclua as etapas a seguir para criar a ação da IU para fechar vários incidentes.
- Navegue até Definição do sistema > Ações de IU e clique em Novo.
-
Crie as Ações de IU com as seguintes informações:
- Nome: fechar incidentes
- Tabela: incidente [incident]
- Mostrar atualização: marque a caixa de seleção
- Opção da lista: marque a caixa de seleção
- Lista v2 compatível: marque a caixa de seleção
- Cliente: marque a caixa de seleção
- Onclick: closeIncidents()
- Condição: current.getValue('state') !== '7'
- Script: cole as seguintes informações
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(); }); } }
- Salve o registro.