Scripts de atribuição de aprovação úteis
Esta é uma versão pesquisável dos scripts úteis de aprovação e atribuição.
Para obter uma versão fácil de navegar, visite o portal de scripts úteis.
Atribuir um grupo para solicitações de ESS
Tipo: regra de atribuição
Descrição: este script atribui automaticamente um grupo para todas as solicitações de ESS.
Exemplo de script:
if(current.opened_by.roles==""){
current.assignment_group.setDisplayValue('Network');
current.update();}Atribuir item do catálogo ao grupo com base na tarefa do plano de entrega
Tipo: regra de atribuição
//Return catalog items that have no group but do have a delivery plan assigned
var ri =new GlideRecord("sc_cat_item");
ri.addQuery("group","=",null);
ri.addQuery("delivery_plan","!=",null);
ri.query();
while(ri.next()){
gs.log("Found an item");
//Return tasks that point to the same delivery plan as the above item
var dptask =new GlideRecord("sc_cat_item_delivery_task");
dptask.addQuery("delivery_plan","=",ri.delivery_plan);
dptask.query();while(dptask.next()){
gs.log("Found a task");var gp = dptask.group.getDisplayValue();
gs.log(gp);//If the task is assigned to desktop, assign the item's group to desktop
if(dptask.group.getDisplayValue()=="Desktop"){
ri.group.setDisplayValue("Desktop");
gs.log("updating "+ ri.getDisplayValue());
ri.update();break;}}}Atribuir itens com uma tarefa
Tipo: regra de atribuição
//Get the catalog item for the current requested item
var scCatItem =new GlideRecord("sc_cat_item");
if(scCatItem.get('sys_id', current.cat_item)){
// If the catalog item already has an assignment group or if using workflow we don't need to make an assignment
if(!scCatItem.delivery_plan.nil()&& scCatItem.group.nil()){
var dpTask =new GlideRecord("sc_cat_item_delivery_task");
dpTask.addQuery("delivery_plan","=",scCatItem.delivery_plan);
dpTask.query();
if(dpTask.getRowCount()==1&& dpTask.next()){
// Check that there is only 1 record in the GlideRecord
dpTask.group;}}}Atribuição baseada na carga de trabalho
Tipo: regra de negócio
Descrição: oculte o atribuído a com base no membro do grupo de atribuição que tem a menor quantidade de incidentes ativos.
- ordem: > 1000 se você quiser executar regras de atribuição posteriores
- condição: current.assigned_to == '' && current.assignment_group != ''
- quando: antes, inserir/atualizar
var assignTo = getLowestUser();
gs.addInfoMessage("assigning to is "+ assignTo);
current.assigned_to= assignTo;
function getLowestUser(){
var userList =new Array();
var cg =new GlideRecord('sys_user_grmember');
cg.addQuery('group', current.assignment_group);
cg.query();
while(cg.next()){
var tech = cg.user.toString();
var cnt = countTickets(tech);
gs.addInfoMessage("Tech counts "+ cg.user.name+' '+ cnt +" "+ tech);
userList.push({ sys_id: tech,name: cg.user.name, count: cnt });}
for(var i=0; i < userList.length; i++){
gs.addInfoMessage(userList[i].sys_id+" "+ userList[i].name+" "+ userList[i].count);}
userList.sort(function(a, b){
gs.addInfoMessage("Sorting: "+ a.sys_id+"("+ a.count+");
"+ b.sys_id+"("+ b.count+")");
return a.count- b.count;});
if(userList.length<=0)return"";
return userList[0].sys_id;}
function countTickets(tech){
var ct =new GlideRecord('incident');
ct.addQuery('assigned_to',tech);
ct.addQuery('active',true);
ct.query();
return ct.getRowCount();}Executar regras de atribuição quando a categoria for alterada
Tipo: client script
Tabela: incidente
// Make an AJAX request to the server to get who this incident would be
// assigned to given the current values in the record. This runs the assignment
// rules thathave been defined in System Policy and returns the assigned_to and
// the assignment_group
function onChange(control, oldValue, newValue, isLoading){
if(isLoading){return;
// No change, do not do anything
}
// Construct the URL to ask the server for the assignment
var url ="xmlhttp.do?sysparm_processor=AJAXAssignment&sys_target=incident";
var uv = gel('sys_uniqueValue');
if(uv){
url +="&sys_uniqueValue="+ uv.value;}
// Make the AJAX request to the server and get the response
var serial = g_form.serialize();
// get all values currently assigned to the incident
var response = ajaxRequest(url, serial,true, responseFunc);}
// This callback function handles the AJAX response.
function responseFunc(response){
varitem= response.responseXML.getElementsByTagName("item")[0];
// Process the item returned by the server
if(item){
// Get the assigned_to ID and its display value and put them on the form
varname=item.getAttribute("name");
var name_label =item.getAttribute("name_label");
if(name_label &&name){
g_form.setValue('assigned_to',name, name_label);}
else{
g_form.setValue('assigned_to','','');}
// Get the assignment_group ID and its display value and put then on the form
var group =item.getAttribute("group");
var group_label =item.getAttribute("group_label");
if(group_label && group){
g_form.setValue('assignment_group', group, group_label);}
else{
g_form.setValue('assignment_group','','');}}}Macro de IU de aprovação personalizada
Tipo: macro de IU
- Navegue até IU do sistema e clique em Macros de IU.
- Renomeie o "approval_summarizer_sc_task" existente para algo como "approval_summarizer_sc_task_old" e desative-o.
- Crie um novo usando o mesmo nome ("approval_summarizer_sc_task"). O nome deve informar basicamente o que a macro faz e ao que ela se aplica. Nesse caso, estamos substituindo um nome existente. Por isso, resolvemos reutilizar o nome existente.
Em seguida, copie o script xml na parte inferior deste artigo para a janela de código xml na nova macro de IU. Essa é uma ótima maneira de fornecer detalhes a um aprovador ao fazer aprovações de itens de linha usando tarefas de aprovação nos Planos de execução do Catálogo de serviços.
Maneiras diferentes
Maneira antiga
Esta é a exibição que você vê em Minhas aprovações ao usar uma tarefa de aprovação usando o método antigo.
Observe que não há muitos detalhes para informar ao aprovador o que ele está realmente aprovando. Você pode ver a descrição resumida da tarefa, mas não muitas informações sobre o item.
Nova maneira
Esta é a exibição que você verá se usar o script xml abaixo no lugar da Macro de IU OOB (pronto para uso).
Usando este método, você pode ver detalhes semelhantes à aprovação da solicitação. Você tem um link para o item solicitado, uma descrição resumida (que contém a capacidade de expandir as variáveis do item), preço, quantidade e o preço total. Isso ajuda o aprovador na medida em que mostra mais detalhes. Agora eles podem ver o que estão realmente aprovando.