Criar uma ação de roteamento de IU

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 2 min. de leitura
  • 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

    1. Crie uma nova tabela que estenda a tabela de tarefas (por exemplo, Nova chamada).
    2. Crie um módulo para criar um novo registro de nova chamada.
    3. 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 )
    4. 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.
    5. Remova botões e funcionalidades desnecessárias do formulário.
    6. 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);
      }
    7. 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);
        }
      }