only one value is pushed in answer in workflow

Hemachithra
Tera Contributor

 

Hi experts,

 

I'm trying to pass list of values based on the list collector values selected. The below is the script configured.

 

 

answer = [];
var list = current.variables.access_type.toString();
gs.info('hcv: ' + list);

var listSplit = list.split(',');
gs.info('listsplit: ' + listSplit);

for (var i = 0; i < listSplit.length; i++) {
    var user = new GlideRecord('u_active_directory_software_approver');
    user.addQuery('u_software_subject.sys_id', listSplit[i].trim());
    gs.info('software_sub1: ' + listSplit[i].getDisplayValue());
    user.query();
  
    while (user.next()) {
        gs.info('recordfoundhc');
        var approverValue = user.u_approver;
        gs.info('u_approver value: ' + approverValue.getDisplayValue());
        answer.push(approverValue);
    }
    gs.info('Answer array is: ' + answer);
}

 

For the script Im getting the u_approver_value log returning two desired values as expected 
u_approver value: d69683af58dab4009433855ae41cd8e6
u_approver value: f6460f2f58dab4009433855ae41cd87a

Answer array is: f6460f2f58dab4009433855ae41cd87a,f6460f2f58dab4009433855ae41cd87a

but in answer  log I'm getting only one sys id repeated twice because of this only one approver is pushed in answer .

 

Please help

 

1 ACCEPTED SOLUTION

Sandeep Rajput
Tera Patron
Tera Patron

@Hemachithra Please update your script as follows.

 

answer = [];
var list = current.variables.access_type.toString();
gs.info('hcv: ' + list);

var listSplit = list.split(',');
gs.info('listsplit: ' + listSplit);

for (var i = 0; i < listSplit.length; i++) {
    var user = new GlideRecord('u_active_directory_software_approver');
    user.addQuery('u_software_subject.sys_id', listSplit[i].trim());
    gs.info('software_sub1: ' + listSplit[i].getDisplayValue());
    user.query();
  
    while (user.next()) {
        gs.info('recordfoundhc');
        var approverValue = user.u_approver.toString(); //toString() will resolve the duplicate sys_id issue
        gs.info('u_approver value: ' + approverValue.getDisplayValue());
        answer.push(approverValue);
    }
    gs.info('Answer array is: ' + answer);
}

 

Hope this helps.

View solution in original post

3 REPLIES 3

Sandeep Rajput
Tera Patron
Tera Patron

@Hemachithra Please update your script as follows.

 

answer = [];
var list = current.variables.access_type.toString();
gs.info('hcv: ' + list);

var listSplit = list.split(',');
gs.info('listsplit: ' + listSplit);

for (var i = 0; i < listSplit.length; i++) {
    var user = new GlideRecord('u_active_directory_software_approver');
    user.addQuery('u_software_subject.sys_id', listSplit[i].trim());
    gs.info('software_sub1: ' + listSplit[i].getDisplayValue());
    user.query();
  
    while (user.next()) {
        gs.info('recordfoundhc');
        var approverValue = user.u_approver.toString(); //toString() will resolve the duplicate sys_id issue
        gs.info('u_approver value: ' + approverValue.getDisplayValue());
        answer.push(approverValue);
    }
    gs.info('Answer array is: ' + answer);
}

 

Hope this helps.

Thanks a lot it worked . Can I store the answer array in workflow scratchpad and use it to query in later activity in workflow.

@Hemachithra Thanks for marking my answer correct.

Yes you can store the answer array in workflow scratchpad and use it later on.

 

Also don't forget to upvote my answer.