Créer une action d’acheminement d’interface utilisateur

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 2 minutes de lecture
  • Cette solution vous permet de créer un enregistrement auprès du Centre de services sans savoir s’il s’agit d’un incident ou d’un élément de demande. Le Centre de services peut ensuite acheminer l’enregistrement vers la table appropriée.

    Pourquoi et quand exécuter cette tâche

    Remarque :
    Les fonctionnalités décrites ici nécessitent le rôle admin.

    Pour créer une action d’acheminement d’interface utilisateur :

    Procédure

    1. Créez une table étendant la table de tâches (par exemple, Nouveau appel).
    2. Créez un module pour créer un nouvel enregistrement d’appel.
    3. Créez les champs de votre choix dans la table Nouvel appel.

      Les seuls champs dont vous avez besoin sont ceux nécessaires pour déterminer si le nouvel appel doit être acheminé vers un incident ou un élément de demande. Assurez-vous que le formulaire contient tous les champs que vous souhaitez transmettre à l’incident ou à l’élément de demande. Dans cet exemple, les éléments suivants sont créés sur le formulaire :

      • Demandé pour (référence)
      • Emplacement (référence)
      • Type d’appel (choix avec deux valeurs : incident et demande)
      • Élément de demande (référence à la table Élément sc_cat_item )
    4. Ajoutez des politiques d’interface utilisateur pour définir quelques champs comme obligatoires et masquer le champ Élément de demande en fonction de la sélection du type d’appel .
    5. Supprimez les fonctionnalités et boutons inutiles du formulaire.
    6. Bouton Créer une action d’interface utilisateur.
      Ce bouton redirige l’utilisateur vers un incident ou une demande. Il crée également l’enregistrement d’incident et copie les valeurs dans l’incident et le formulaire d’élément de demande.
      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. Dans l’exemple précédent, le bouton Acheminement transmet les valeurs Demandé pour et Emplacement de l’URL au formulaire Élément de demande.
      Assurez-vous que vous disposez de variables appelées requested_for et emplacement sur votre élément, votre créateur d’enregistrement ou votre guide de commande qui mappent ces valeurs à l’aide du script client suivant. Il y a une limite quant à la quantité d’informations que vous pouvez transmettre, car l’URL a une longueur limitée. Évitez d’envoyer des informations à partir de champs de texte longs en utilisant cette méthode.
      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);
        }
      }