Scripts d’affectation d’approbation utiles
Il s’agit d’une version interrogeable 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 l’é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 avec 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 : sélectionnez l’utilisateur affecté en fonction du membre du groupe d’affectation qui a le moins d’incidents actifs.
- Ordre : 1 000 > si vous souhaitez exécuter les règles d’affectation après
- 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 les 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 avec 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 en bas de cet article dans la fenêtre de code XML de la nouvelle macro d’interface utilisateur. Il s’agit d’un excellent moyen de donner des détails à un approbateur lorsque vous effectuez des approbations d’éléments de campagne à l’aide de tâches d’approbation dans les plans d’exécution de Service Catalog.
Différentes manières
À l’ancienne
Il s’agit de la vue affichée 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 méthode
Il s’agit de la vue que vous verrez si vous utilisez le script xml ci-dessous à la place de la macro d’interface utilisateur OOB (prête à l’emploi).
Cette méthode vous permet d’afficher des détails, tout comme l’approbation de la demande. Vous disposez d’un lien vers l’élément commandé, d’une brève description (qui contient la possibilité de développer les variables de l’article), d’un prix, d’une quantité et du prix total. Cela aide l’approbateur à afficher plus de détails. Ils peuvent maintenant voir ce qu’ils approuvent réellement.