Nützliche Skripts für Genehmigungszuweisung

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 4 Minuten Lesedauer
  • Dies ist eine durchsuchbare Version der nützlichen Genehmigungs- und Zuweisungsskripts.

    Warnung:
    Die hier beschriebene Anpassung wurde für die Verwendung in bestimmten Instanzen entwickelt und wird von nicht unterstützt Now Support. Diese Methode wird unverändert bereitgestellt und sollte vor der Implementierung gründlich getestet werden. Veröffentlichen Sie alle Fragen und Kommentare zu dieser Anpassung in unserer Community Forum .

    Eine einfach zu navigierende Version finden Sie unter Portal für nützliche Skripts.

    Weisen Sie eine Gruppe für ESS-Anforderungen zu

    Typ: Zuweisungsregel.

    Beschreibung: Dieses Skript weist automatisch eine Gruppe für alle ESS-Anforderungen zu.

    Skriptbeispiel:

    if(current.opened_by.roles==""){
        current.assignment_group.setDisplayValue('Network');
        current.update();}

    Weisen Sie der Gruppe ein Katalogelement basierend auf der Bereitstellungsplanaufgabe zu

    Typ: Zuweisungsregel.

    Beschreibung: Diese Zuweisungsregel weist der Datenbankgruppe ein Servicekatalogelement zu, wenn sie einen Bereitstellungsplan verwendet, dem eine Katalogaufgabe zugewiesen ist.
    //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;}}}

    Weisen Sie Elemente mit einer Aufgabe zu

    Typ: Zuweisungsregel.

    Beschreibung: Weist automatisch alle Katalogelemente zu, bei denen nur eine Aufgabe einer bestimmten Gruppe zugeordnet ist.
    //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;}}}

    Zuweisung basierend auf Arbeitsauslastung

    Typ: Business-Regel.

    Beschreibung: Füllen Sie „Zugewiesen an“ basierend auf dem Mitglied der Zuweisungsgruppe aus, das die geringste Anzahl aktiver Incidents hat.

    Parameter:
    • Reihenfolge: >1000, wenn Sie nach Zuweisungsregeln ausführen möchten
    • Bedingung: Current.assigned_to == „“ und& current.assignment_Group != „“
    • Wenn: Vor, einfügen/aktualisieren
    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();}

    Führen Sie Zuweisungsregeln aus, wenn die Kategorie geändert wird

    Typ: Client-Skript.

    Tabelle: Incident.

    Beschreibung: Dieses Beispiel ist ein onChange-Client-Skript im Kategoriefeld in Incident. Hinweis: Dieses Skript wird verwendet, um synchrone AJAX zu verwenden (asynchrones Verhalten wird durch den dritten Parameter des ajaxRequest-Aufrufs angegeben). Die folgende Implementierung verwendet asynchrone AJAX. Der Nachteil der Verwendung der synchronen Version besteht darin, dass ein Netzwerkantwortproblem dazu führen kann, dass der Browser hängen bleibt.
    // 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','','');}}}

    Anwenderdefiniertes GenehmigungsUI-Makro

    Typ: UI-Makro.

    Die folgende Option veranschaulicht, wie Sie weitere Details von erhalten Meine Genehmigungen Ansicht eines Ausführungsplans durch Erstellen eines neuen UI-Makros.
    • Navigieren Sie zu System-UI Und klicken Sie auf UI-Makros .
    • Benennen Sie die vorhandene „approval_summarizer_sc_task“ in eine Art wie „approval_summarizer_sc_task_old“ um, und deaktivieren Sie sie.
    • Erstellen Sie eine neue mit demselben Namen („approval_summarizer_sc_task“). Der Name sollte im Grunde sagen, was das Makro tut und was es betrifft. In diesem Fall ersetzen wir einen vorhandenen, daher haben wir uns entschieden, den vorhandenen Namen wiederzuverwenden.
    Abbildung : 1. Makroliste
    Makroliste mit hervorgehobenen „approval_summarizer_sc_task“ und „approval_summarizer_sc_task_old“.

    Kopieren Sie dann das XML-Skript unten in diesem artikel in das XML-Codefenster im neuen UI-Makro. Dies ist eine großartige Möglichkeit, einem Genehmiger einige Details zu geben, wenn Sie Einzelelementgenehmigungen mithilfe von Genehmigungsaufgaben innerhalb der Servicekatalog-Ausführungspläne durchführen.

    Verschiedene Möglichkeiten

    Alte Art

    Dies ist die Ansicht, die Sie in sehen Meine Genehmigungen Bei Verwendung einer Genehmigungsaufgabe mit der alten Methode.

    Abbildung : 2. Meine Genehmigungen
    Meine Genehmigungsinformationen, die in der alten Methode angezeigt werden.

    Beachten Sie, dass es nicht viele Details gibt, die dem Genehmiger mitteilen, was er tatsächlich genehmigt. Sie können die kurze Beschreibung der Aufgabe, aber nicht viele Informationen zum Element sehen.

    Neue Methode

    Dies ist die Ansicht, die angezeigt wird, wenn Sie das XML-Skript unten anstelle des OOB-UI-Makros (sofort einsatzbereit) verwenden.

    Abbildung : 3. Meine Genehmigungen
    Meine Genehmigungsinformationen, die in der neuen Methode angezeigt werden.

    Mit dieser Methode können Sie Details wie die Anforderungsgenehmigung anzeigen. Sie haben einen Link zum bestellten Artikel, eine Kurzbeschreibung (die die Möglichkeit enthält, die Variablen aus dem Artikel zu erweitern), Preis, Menge und Gesamtpreis. Diese Methode hilft dem Genehmiger, mehr Details anzuzeigen. Der Genehmiger kann jetzt sehen, was er tatsächlich genehmigt.