Pulling data from license details table
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-08-2017 04:18 AM
Hi all
Please can you help. I am trying to automate license allocation to users based on user request and available licenses in the system. However GlideRecord and query on license_details table doesn't return me desired results. Please find below the script am using in the workflow. Please can you see why?
// This script needs to set answer to 'yes' or 'no' to indicate the state of the activity.
//
// For example,
//
answer = ifScript();
//
function ifScript() {
var usr = new GlideRecord('sys_user_has_role');
usr.addQuery('user', current.variables.requestedfor);
usr.query();
if (usr.next()){
gs.log("I am already charged");
return 'yes';
}
else {
//below is the section with issue
var lic = new GlideRecord('license_details');
lic.addQuery('sys_id', "3701a52437132200ad36616043990e54");
lic.query();
var alloc = parseInt(lic.allocated);
var used = parseInt(lic.count);
gs.log("Name"+ lic.name +" "+ lic.allocated+ "Allocated "+ alloc+ " "+ lic.count+ "Used "+ used);
// this gs.log prints "Name 0Allocated 0 Used NaN" in the log. So name not picked, allocated and used not picked as in the system. 1010 and 0 should be the numbers
while(lic.next()){
if (alloc < used) {
gs.log("I am newly charged");
return 'yes';
}
gs.log("Sorry no license");
return 'no';
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-08-2017 05:16 PM
Until you call lic.next(), the lic object has not been populated with an actual record. Thus, your lic.count and lic.allocated check is checking against a null GlideRecord value and naturally will always evaluate to 0 when cast as an Integer. Put those checks inside the lic.next() while loop.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-08-2017 05:27 PM
Just a small mistake
lic.addQuery('sys_id', "3701a52437132200ad36616043990e54");
lic.query();
// this gs.log prints "Name 0Allocated 0 Used NaN" in the log. So name not picked, allocated and used not picked as in the system. 1010 and 0 should be the numbers
while(lic.next()){
//should be inside the while loop
var alloc = parseInt(lic.allocated);
var used = parseInt(lic.count);
gs.log("Name"+ lic.name +" "+ lic.allocated+ "Allocated "+ alloc+ " "+ lic.count+ "Used "+ used);
if (alloc < used) {
gs.log("I am newly charged");
return 'yes';
}
gs.log("Sorry no license");
return 'no';
}
Please mark this response as correct or helpful if it assisted you with your question.