Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

How to pass various sys ids in the parm 1 in an event

AB6
Tera Contributor

Hi community!

I want to pass various sys ids in the parm 1 in an event.
I have a function in a script include that has an array 

var array= [];

array.push(groups.sys_id.toString());

return array;

Actually the function is working perfectly returning all the sys_id ´s groups

The problem is when I try to use this return to a event queue, the event parm 1 is not taking anything.

gs.eventQueue('groups.inserted', current, array);

Any idea how to take the array into the eventQueue?

Regards

 

1 ACCEPTED SOLUTION

Thanks,

(function executeRule(current, previous /*null when async*/) {

	
	var ci = current.cmdb_ci;
var gr = new GlideRecord('cmdb_ci');
if(gr.get(ci))
	var assiGroups = new testUtils().getAssiGroups(gr); // passing the object instead of sys_id
	gs.eventQueue('groups.inserted', current, assiGroups.toString());
	

})(current, previous);

View solution in original post

16 REPLIES 16

Shweta KHAJAPUR
Tera Guru

Hi,

Can you provide your whole code?

Hi @Shweta

Here the code in the after business rule:

 

(function executeRule(current, previous /*null when async*/) {

	
		var ci = current.cmdb_ci;
	var assiGroups = new testUtils().getAssiGroups(ci);
	gs.eventQueue('groups.inserted', current, assiGroups.toString());
	

})(current, previous);

 

Here the function in the testUtils script include:

 

getAssiGroups: function(ci){


var aGroup = [];

var CIUtil = new CIUtils();
 var ciT = ci.getUniqueValue(); 
 var serviceIds = CIUtil.servicesAffectedByCI(ciT);


for (var i=0; i < serviceIds.length; i++) {


var service = new GlideRecord("cmdb_ci_service"); 
 service.get(serviceIds[i]);


aGroup.push(service.assignment_group);


}


return aGroup.toString();


},

Hi,

the code is correct, it is passing multiple values in third parameter(event.parm1) already. Please check on event log, if you are getting an array as first parameter.

gs.eventQueue('groups.inserted', current, assiGroups); // do not stringify the array

AB6
Tera Contributor

Hi rahulpandey

 

find_real_file.png

Hi,

Can you check logs if you are getting any return values at all.

(function executeRule(current, previous /*null when async*/) {

	var ci = current.cmdb_ci;
	var assiGroups = new testUtils().getAssiGroups(ci);
gs.log('assiGroups'+assiGroups, 'assiGroups');
	gs.eventQueue('groups.inserted', current, assiGroups.toString());
	

})(current, previous);