Genehmigungszuweisungsskripts
Dies ist eine durchsuchbare Version der nützlichen Genehmigungs- und Zuweisungsskripts.
Warnung:
Die hier beschriebene Anpassung wurde für die Verwendung in bestimmten Fällen entwickelt und wird von Now Support nicht unterstützt. Diese Methode wird wie sie ist zur Verfügung gestellt und sollte vor der Implementierung gründlich getestet werden. Veröffentlichen Sie alle Fragen und Kommentare zu dieser Anpassung in unserem Community-Forum.
Informationen zu finden Sie unter Viewing my approvals.
- Gruppe für ESS-Anforderungen zuweisen
-
Das folgende Zuweisungsregelskript weist automatisch eine Gruppe für alle ESS-Anforderungen zu.
if(current.opened_by.roles==""){ current.assignment_group.setDisplayValue('Network'); current.update();} - Weisen Sie der Gruppe ein Katalogelement basierend auf der Bereitstellungsplanaufgabe zu
-
Diese Zuweisungsregel weist der Datenbankgruppe ein Servicekatalogelement zu, wenn ein Bereitstellungsplan verwendet wird, in dem der Desktopgruppe 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;}}} - Elemente mit einer Aufgabe zuweisen
-
Diese Zuweisungsregel weist automatisch alle Katalogelemente zu, 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 auf Basis der Auslastung
-
Typ: Business-Regel.
Beschreibung: Füllen Sie Zugewiesen an basierend auf dem Zuweisungsgruppenmitglied aus, das die geringste Anzahl aktiver Incidents hat.
Parameter:- Bestellung: > 1.000, wenn Sie nach Zuweisungsregeln ausführen möchten
- Bedingung: current.assigned_to == '' && current.assignment_group != ''
- Wann: 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();} - Zuweisungsregeln bei Kategorieänderung ausführen
-
Typ: Client-Skript.
Tabelle: Incident.
Beschreibung: Bei diesem Beispiel handelt es sich um ein onChange-Client-Skript für das Kategoriefeld im Incident. Hinweis: Dieses Skript verwendete früher synchrones AJAX (asynchrones Verhalten wird durch den dritten Parameter des ajaxRequest-Aufrufs angegeben). Die folgende Implementierung verwendet asynchrones AJAX. Der Nachteil der Verwendung der synchronen Version besteht darin, dass ein Netzwerkantwortproblem zu einem Absturz des Browsers führen kann.// 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','','');}}} - Benutzerdefiniertes Genehmigungs-UI-Makro
- Informationen zum Erstellen eines anwenderdefinierten Genehmigungs-UI-Makros finden Sie unter UI-Makros.