Access variables of record producer from Business Rule

abirakundu23
Mega Sage

Hi All/ @Ankur Bawiskar ,

We are trying to access record producer varibles value using Business Rule. But we are not able to get the values.

Please guide me. Async/Update BR. We submit the Record Producer after that record is creted respective table. We wrote BR of that table.

(function executeRule(current, previous /*null when async*/) {
    
gs.info('ITP HR service ' + current.hr_service);
    
    var transfer_person = current.variables.employee_name;
    gs.log("Abira transfer for " +transfer_person);
    var position = current.variables.new_position;
    gs.log("Abira Position " +position);
    
    var effecdate = current.variables.effective_date;
    gs.log("Abira date " +effecdate);
    var country = current.variables.transfered_position_country;
    gs.log("Abira country " +country);
    var loc = current.variables.transfered_position_location;
    gs.log("Abira location " +loc);

})(current, previous);

1 ACCEPTED SOLUTION

So the BR would run when the record is updated and the HR Service is Matching your service

1) in your BR you cannot use producer object; you need to use current

2) gs.log() won't work in scoped application and your script will break so use gs.info()

(function executeRule(current, previous /*null when async*/) {
    
gs.info('ITP HR service ' + current.hr_service);
    
    var transfer_person = current.variables.employee_name;
    gs.info("Abira transfer for " +transfer_person);
    var position = current.variables.new_position;
    gs.info("Abira Position " +position);
    
    var effecdate = current.variables.effective_date;
    gs.info("Abira date " +effecdate);
    var country = current.variables.transfered_position_country;
    gs.info("Abira country " +country);
    var loc = current.variables.transfered_position_location;
    gs.info("Abira location " +loc);
    
        var req_body='{'+
        '"effectivedate":"'+effecdate+'",'+
        '"trapercountry":"'+country+'",'+
        '"location":"'+loc+'",'+
        '"Position":"'+position+'",'+
        '}';
gs.info('ITP payload details'+req_body);

})(current, previous);

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

18 REPLIES 18

Voona Rohila
Kilo Patron
Kilo Patron

Hi absnow

what is the purpose of the BR? looks like you are just trying to log few statements.


Mark it helpful if this helps you to understand. Accept solution if this give you the answer you're looking for
Kind Regards,
Rohila V
2022-25 ServiceNow Community MVP

Your code works, can you give us more info on which table you are trying to use this? is it extended from task table?

you can also query question_answer table for submitted values.


Mark it helpful if this helps you to understand. Accept solution if this give you the answer you're looking for
Kind Regards,
Rohila V
2022-25 ServiceNow Community MVP

Sagar Pagar
Tera Patron

Hi,

Try with producer object instead of current object to access the variables.

(function executeRule(current, previous /*null when async*/) {
    
gs.info('ITP HR service ' + current.hr_service);
    
    var transfer_person = producer.variables.employee_name;
    gs.log("Abira transfer for " +transfer_person);
    var position = producer.variables.new_position;
    gs.log("Abira Position " +position);
    
    var effecdate = producer.variables.effective_date;
    gs.log("Abira date " +effecdate);
    var country = producer.variables.transfered_position_country;
    gs.log("Abira country " +country);
    var loc = producer.variables.transfered_position_location;
    gs.log("Abira location " +loc);

})(current, previous);

 

Thanks,

Sagar Pagar

The world works with ServiceNow

Hi Sagar,

I am trying producer object instead of current object, still it is not working. Please guide me how can i access it.