Criar uma ação de roteamento de IU
Esta solução permite criar um registro com a central de serviços sem saber se é um incidente ou item da solicitação; a central de serviços pode rotear o registro para a tabela apropriada.
Por Que e Quando Desempenhar Esta Tarefa
Nota:
A funcionalidade descrita aqui requer a função de administrador.
Para criar uma ação de roteamento de IU:
Procedimento
-
Crie uma nova tabela que estenda a tabela de
tarefas(por exemplo, Nova chamada). - Crie um módulo para criar um novo registro de nova chamada.
-
Crie os campos desejados na tabela Nova chamada.
Os únicos campos necessários são os campos necessários para determinar se a nova chamada deve ser encaminhada para um incidente ou um item da solicitação. Certifique-se de que o formulário contenha todos os campos que você deseja passar para o incidente ou o item da solicitação. Neste exemplo, o seguinte é criado no formulário:
- Solicitado para (referência)
- Local (referência)
- Tipo de chamada (opção com dois valores: incidente e solicitação)
- Item da solicitação (referência à tabela de itens
sc_cat_item)
- Adicione algumas políticas de IU para definir alguns campos como obrigatórios e ocultar o campo Item da solicitação com base na seleção do tipo de chamada.
- Remova botões e funcionalidades desnecessárias do formulário.
-
Crie um novo botão de Ação de IU.
Este botão redireciona o usuário para um incidente ou uma solicitação. Ele também cria o registro de incidente e copia os valores para o incidente e o formulário Item da solicitação.
var reqItem = current.u_item; var requestedFor = current.u_requested_for; var location = current.location; if(current.u_incident_request == 'Incident'){ //Create a new incident record and redirect to the new incident var rec = new GlideRecord('incident'); rec.initialize(); rec.caller_id = requestedFor; rec.location = location; rec.insert(); action.setRedirectURL(rec); } if(current.u_incident_request == 'Request'){ //Build the url and route the user to the request item var url = ''; if(current.u_item.sys_class_name == 'sc_cat_item_guide'){ url = 'com.glideapp.servicecatalog_cat_item_guide_view.do?sysparm_initial=true&sysparm_guide=' + reqItem + '&sysparm_user=' + requestedFor + '&sysparm_location=' + location; } else{ url = 'com.glideapp.servicecatalog_cat_item_view.do?sysparm_id=' + reqItem + '&sysparm_user=' + requestedFor + '&sysparm_location=' + location; } action.setRedirectURL(url); } -
O botão Rota no exemplo anterior passa os valores Solicitado para e Local no URL para o formulário Item da solicitação.
Certifique-se de ter variáveis chamadas request_for e location em seu item, produtor de registro ou guia de pedido que mapeiam esses valores usando o client script a seguir. Há um limite para a quantidade de informações que você pode passar, pois o URL tem um tamanho restrito. Evite enviar informações de campos de texto longo usando este método.
function onLoad() { var url = document.location.toString(); var userKey = 'sysparm_user='; var locKey = 'sysparm_location='; var userPosition = url.indexOf(userKey); var locPosition = url.indexOf(locKey) if (userPosition != -1) { var user = url.substr(userPosition+userKey.length, 32); g_form.setValue('requested_for',user); } if (locPosition != -1) { var loc = url.substr(locPosition+locKey.length, 32); g_form.setValue('location',loc); } }