How to test Async business rules?

Rajesh98
ServiceNow Employee
ServiceNow Employee

I have written insert or update Async Business rule on one Table? I have to test that business rule is working fine or not ? How can i do this?

1 ACCEPTED SOLUTION

Sanjay Bagri1
Tera Guru

Hi Rajesh,

 

Please can you go once this Link :

Async Business Rules and the 'current' object
 
and also please prefer this below article it is very nice article
 
Performance considerations when using ASYNC Business Rules
 
 
Please mark as correct and also Helpful ,if it is helping for you.
 
Thanks
Sanjay Bagri
DxSherpa.com

View solution in original post

5 REPLIES 5

what is the exact output of the below insert or update Before business rule

 

Condition: current.u_hours_requested.changes() && !current.u_hours_requested.nil() &&   (['-5','14'].indexOf(current.state+'')>=0 || (current.state == '11' && current.u_approval_level == 'Not Required'))

 

Script:

 

setApprovalLevel();

 

function setApprovalLevel() {

//If the State == Approved but the Approval level == 'Not Required', set it back to 'Pending'
//The update to the Hours requested may dictate a different approval level
if (current.state == '11' && current.u_approval_level == 'Not Required') {
current.state = '-5';
}

// STRY1653748 -- CSAT Approval should have Geo Finance Approver as ONLY approver for Specific CSAT Reason Types
var csUtil = new PS_CSATRequestUtil();
var geoFinApp = csUtil.requireGFinApproval(current.getValue('u_reason_type'));
if(geoFinApp){
var cApp = new GlideRecord("u_csat_app_matrix");
cApp.get('u_approval_level', 'GF');
current.u_approval_level = cApp.u_approval_level;
current.u_approver= getGeoFinApprover(current);
}else{

var cam = new GlideRecord("u_csat_app_matrix");
//JJ 12/04 - STRY0922996
var requestedHours = current.u_hours_requested;
if (!current.u_parent_csat_request.nil()) {
requestedHours = requestedHours + current.u_parent_csat_request.u_total_hours_approved;
}
//EO - STRY0922996

cam.addQuery("u_min_hours", "<=", requestedHours);
cam.addQuery("u_max_hours",">=", requestedHours);
cam.orderBy("u_order");
cam.query();
//gs.addErrorMessage('SQL:>' + cam.getEncodedQuery() + 'cam.getRowCount():' + cam.getRowCount());
if (cam.getRowCount() == 1) {
cam.next();
current.u_approval_level = cam.u_approval_level;
current.u_approval_limit = cam.u_max_hours;
if (cam.u_approval_level == 'Not Required') {
current.u_approver = '';
current.state = '11'; //Approved
}
else if (!cam.u_approver.nil()) {
current.u_approver = cam.u_approver;
}
else {
current.u_approver=getApprover(current,cam);

if (!current.u_approver||current.u_approver==0){

current.u_approver = '';
gs.addInfoMessage("ERROR: Unable to find a PS manager assigned to this Account's Sales Territory (" + current.u_account.u_account_territory.getDisplayValue() + ") . Final approver could not be set, please contact PSOperations@servicenow.com for assistance.");

}

}
}else { //Hours requested is above the last limit, requires CFO and SVP approval
while (cam.next()) {
current.u_approval_level = cam.u_approval_level;
current.u_approver = cam.u_approver;
current.u_approval_limit = requestedHours;
}
}
}
}

function getApprover(csatRec,cam){

var deployment;
var deploymentExists = true;

if(!csatRec.u_deployment.nil())
deployment = csatRec.u_deployment;
else if(!csatRec.u_csat_deployment.nil())
deployment = csatRec.u_csat_deployment;
else
deploymentExists = false;

if(deploymentExists)
{
var psTerritory = csatRec.u_account.u_account_territory;
if(cam.u_approval_level == 'GEO'){
if (deployment.nil()==false && deployment.u_ps_territory.nil() == false&&!deployment.u_ps_territory.u_geo_customer_delivery_leader.nil()) {
return deployment.u_ps_territory.u_geo_customer_delivery_leader;
}else{
return getPSRequestApprover(psTerritory, "GEO");
}
}

if(cam.u_approval_level == 'DIR'){
if (deployment.nil()==false && deployment.u_ps_territory.nil() == false &&!deployment.u_ps_territory.u_area.u_manager.nil()){
return deployment.u_ps_territory.u_area.u_manager;
}else{
return getPSRequestApprover(psTerritory, "DIR");
}

}


if(cam.u_approval_level == 'REG'){
if(deployment.nil()==false && deployment.u_ps_territory.nil() == false&&!deployment.u_ps_territory.u_delivery_manager.nil()){
return deployment.u_ps_territory.u_delivery_manager;
}else{
return getPSRequestApprover(psTerritory, "REG");
}
}

if(cam.u_approval_level == 'EM'){
if(deployment.nil()==false&& deployment.u_engagement_manager.nil()==false){
return deployment.u_engagement_manager;
}
}
}

return 0;
}

function getGeoFinApprover(csatRec){
var deployment;
var deploymentExists = true;

if(!csatRec.u_deployment.nil())
deployment = csatRec.u_deployment;
else if(!csatRec.u_csat_deployment.nil())
deployment = csatRec.u_csat_deployment;
else
deploymentExists = false;

if(deploymentExists){
var user = 0;
if(deployment.u_ps_territory && deployment.u_ps_territory.u_ps_deal_desk)
user = deployment.u_ps_territory.u_ps_deal_desk;
return user;
}
return 0;
}