Scripts d’affectation d’approbation utiles
Il s’agit d’une version consultable des scripts d’approbation et d’affectation utiles.
Pour une version facile à naviguer, visitez le portail Scripts utiles.
Affecter un groupe pour les demandes ESS
Type : règle d’affectation.
Description : ce script affecte automatiquement un groupe pour toutes les demandes ESS.
Exemple de script :
if(current.opened_by.roles==""){
current.assignment_group.setDisplayValue('Network');
current.update();}Affecter un élément de catalogue au groupe en fonction de la tâche du plan d’exécution
Type : règle d’affectation.
//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;}}}Affecter des éléments à une seule tâche
Type : règle d’affectation.
//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;}}}Affectation basée sur la charge de travail
Type : règle métier.
Description : renseignez le champ Affecté à en fonction du membre du groupe d’affectation qui a le moins d’incidents actifs.
- Ordre : 1 000 > si vous souhaitez exécuter après les règles d’affectation
- condition : current.assigned_to == '' && current.assignment_group != ''
- Quand : avant, insérer/mettre à jour
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();}Exécuter des règles d’affectation lorsque la catégorie est modifiée
Type : Script client.
Table : Incident.
// 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','','');}}}Macro d’interface utilisateur d’approbation personnalisée
Type : macro d’interface utilisateur.
- Accédez à l’interface utilisateur du système et cliquez sur Macros d’interface utilisateur.
- Renommez le « approval_summarizer_sc_task » existant en quelque chose comme « approval_summarizer_sc_task_old » et désactivez-le.
- Créez-en un nouveau en utilisant le même nom (« approval_summarizer_sc_task »). Le nom doit essentiellement vous indiquer ce que fait la macro et à quoi elle s’applique. Dans ce cas, nous remplaçons un nom existant, nous avons donc décidé de réutiliser le nom existant.
Copiez ensuite le script XML au bas de cet article dans la fenêtre de code XML dans la nouvelle macro d’interface utilisateur. C’est un excellent moyen de donner des détails à un approbateur lorsque vous procédez à des approbations d’éléments de campagne à l’aide de tâches d’approbation dans les plans d’exécution de Catalogue de services.
Différentes façons
Ancienne méthode
Il s’agit de la vue que vous voyez dans Mes approbations lors de l’utilisation d’une tâche d’approbation à l’aide de l’ancienne méthode.
Notez qu’il n’y a pas beaucoup de détails indiquant à l’approbateur ce qu’il approuve réellement. Vous pouvez voir la brève description de la tâche, mais pas beaucoup d’informations sur l’élément.
Nouvelle façon
Il s’agit de la vue que vous voyez si vous utilisez le script xml ci-dessous à la place de la macro d’interface utilisateur prête à l’emploi.
L’utilisation de cette méthode vous permet de voir les détails, tout comme l’approbation de la demande. Vous disposez d’un lien vers l’article commandé, d’une brève description (qui contient la possibilité de développer les variables à partir de l’article), du prix, de la quantité et du prix total. Cette méthode aide l’approbateur en montrant plus de détails. L’approbateur peut maintenant voir ce qu’il approuve réellement.