Business rules are getting called even after using gr.setworkflow(false)

Rachael12
Tera Contributor

Every assignment has a sub-group and which has members as manager, lead and a default approver in case the others are not available. Now when the group member is empty, I need to add them as members. When the length of array is 2, it works fine but as it becomes 3, it goes into an infinite loop and adds the lead 'n' number of times in sub-group.
It calls another business rule written on Group member table.

var approver = 'xxxxxxxxxxxx';
var lead = current.assignment_group.u_lead;
var manager = current.assignment_group.manager;
var grp = current.assignment_group.sub_group;
var grpM = manager + ',' + approver + ','+ lead;   

if (grp) { // update members
        var grpList = grpM.split(',');
 
        for (var i = 0; i < grpList.length; i++) {
            var grpMember = new GlideRecord('sys_user_grmember');
            grpMember.initialize();
            grpMember.user = grpList[i];
            grpMember.group = grp;
            grpMember.setworkflow(false);
            grpMember.insert();
        }
    }

  

4 REPLIES 4

Uncle Rob
Kilo Patron

Its case sensitive. 
grpMember.setWorkflow(false)

Still doesn't work.

Then you have some other problem, like 'sub_group' not being defined on any table. Anyway, see definition of .setWorkflow() here:

 

GlideRecord API: setWorkflow

 

Please be specific about HOW it doesn't work.  What happens?
Have you logged out your variables so you're CERTAIN they are the values you expect when the rule triggers?  As @Bert_c1 suggests... that setWorkflow(false) is inside the if, so if that first if doesn't evaluate, you won't trigger the setWorkflow(false) and thus other business rules can trigger.