Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

start workflow from Business rule and pass values to workflow

manojn_cse
Tera Contributor

Hi Team,
I am trying to trigger workflow from Business rule and pass values to workflow variable from Business rule. I used the syntax from below link . Workflow got triggered successfully but values are not getting assigned to workflow variables.

Ref URL : https://docs.servicenow.com/bundle/jakarta-servicenow-platform/page/administer/using-workflows/concept/c_UsingVariablesInAWorkflow.html#ariaid-title3

Business Rule on sc_req_item table :


startWorkflow(current.cat_item.workflow);
action.setRedirectURL(current);

function startWorkflow(id) {
gs.addInfoMessage("G U_SCCM_Device :"+current.u_sccm_device);
var w = new Workflow();
var vars = { } ;
vars.device = "ggg123" ;
vars.install_user_group = "input_var_value2" ;
vars.g_dev_1 = "test124" ;
//var context = w.startFlow(id, current, current.operation('update'),{device: "test124" });
//var context = w.startFlow(id, current, current.operation('update'),{g_dev_1: "g_dev_124" });
var context = w.startFlow(id, current, current.operation('update'),vars);
//var context = w.startFlow(id, current, current.operation('update'), getVars());
if (context != null)
current.context = context.sys_id;
//gs.addInfoMessage("GGG Inside Business Rule 123 :"+context);
gs.addInfoMessage("GGG getVars() :"+ getVars());
}


/**
* Get the variables from the request item so that we can map these to the workflow.input
* variables if the names match.
*/
function getVars() {
var vars = {};
vars.device = "ggg123";
vars.g_dev_1 ="g_test1234";

// gs.addInfoMessage("GGG vars.device:"+ vars.device);
// for (var n in current.variables)
//vars[n] = current.variables[n];

return vars;
}

Regards,
Manoj Nagarajan

1 ACCEPTED SOLUTION

havikosuru
Kilo Expert

(function executeRule(current, previous /*null when async*/) {

gs.addInfoMessage("Business Rule started for Ping Host");

gs.log('workflow started for Failed Ping Events');

var wflw = new Workflow();


wflw.startFlow(wflw.getWorkflowFromName('workflow name'), current, 'update');

})(current, previous);

View solution in original post

5 REPLIES 5

AshleyD13
Kilo Contributor

@alisa will it be enough to call event from BR