Script include permet d’appeler du code côté serveur depuis le côté client et les règles métier. Plus d’informations dans la documentation ServiceNow.
Structure du Script Include
Ce script include comporte deux fonctions.
- La fonction principale CVWorkflowCall sert aux appels côté client utilisant glide ajax.
- La seconde, CVWorkflowCall_BR, permet aux règles métier de transmettre des paramètres à l’exécution du flux de travail.
Les deux fonctions sont presque identiques et ne diffèrent que par leur méthode de passage des paramètres.
Code principal
Lire/copier le code du Script Include
var CoreViewWorkflowCall = Class.create();
CoreViewWorkflowCall.prototype = Object.extendsObject(AbstractAjaxProcessor, {
CVWorkflowCall :function(){
var CVWorkflowID = this.getParameter('sysparm_CVWorkflowID');
var CVWorkflowParams = this.getParameter('sysparm_CVWorkflowParams');
//Building the CoreView workflow call
var authUrl = 'https://www.loginportal.online/api/auth'; //url to auth to CoreView
var authToken = '**********m1K-PAFbI4lAaO'; //CoreView api auth token
var companyId = '**********bdfe1a974a345ea3042d4b'; //internal CoreView ID for company tenant
//Get an access token from CoreView
var jwtRequest = new sn_ws.RESTMessageV2();
jwtRequest.setEndpoint(authUrl);
jwtRequest.setHttpMethod('post');
jwtRequest.setRequestHeader("Accept","Application/json");
jwtRequest.setRequestHeader("Content-type", "Application/json"); //needed for CoreView workflow v2
jwtRequest.setRequestBody('{}');
jwtRequest.setRequestHeader("Authorization", "Bearer " + authToken);
var jwtResponse = jwtRequest.executeAsync();
jwtResponse.waitForResponse(60);
var jwtBody = jwtResponse.getBody();
var jwtToken = JSON.parse(jwtBody);
var jwt = jwtToken.bearerToken;
// Workflow call Variables.
var workflowUrl = 'https://coreflowusapi.coreview.com';
var workflowPath = '/api/executions/';
var workflowId = CVWorkflowID; //workflow being called in CoreView passed from glideajax in client script
//Execute the call back to the CoreView api to run the workflow
var request = new sn_ws.RESTMessageV2();
request.setEndpoint(workflowUrl + workflowPath + workflowId);
request.setHttpMethod("post");
request.setRequestHeader("Accept", "Application/json");
request.setRequestHeader("Authorization", "Bearer " + jwt);
request.setRequestHeader("x-scompany", companyId);
request.setRequestHeader("Content-type", "Application/json"); //needed for CoreView
workflow v2
request.setRequestBody(CVWorkflowParams); //workflow params passed from glideajax in client script, JSON was stringified before the call
var response = request.executeAsync();
response.waitForResponse(60);
var responseBody = response.getBody();
},
CVWorkflowCall_BR :function(CVWorkflowID, CVWorkflowParams){
//Building the CoreView workflow call
var authUrl = 'https://www.loginportal.online/api/auth'; //url to auth to CoreView
var authToken = '**********m1K-PAFbI4lAaO'; //CoreView api auth token
var companyId = '**********bdfe1a974a345ea3042d4b'; //internal CoreView ID for company tenant
//Get an access token from CoreView
var jwtRequest = new sn_ws.RESTMessageV2();
jwtRequest.setEndpoint(authUrl); jwtRequest.setHttpMethod('post');
jwtRequest.setRequestHeader("Accept","Application/json");
jwtRequest.setRequestHeader("Content-type", "Application/json"); //needed for CoreView workflow v2
jwtRequest.setRequestBody('{}');
jwtRequest.setRequestHeader("Authorization", "Bearer " + authToken);
var jwtResponse = jwtRequest.executeAsync();
jwtResponse.waitForResponse(60);
var jwtBody = jwtResponse.getBody();
var jwtToken = JSON.parse(jwtBody);
var jwt = jwtToken.bearerToken;
// Workflow call Variables.
var workflowUrl = 'https://coreflowusapi.coreview.com';
var workflowPath = '/api/executions/';
var workflowId = CVWorkflowID; //workflow being called in CoreView passed from glideajax in client script
//Execute the call back to the CoreView api to run the workflow
var request = new sn_ws.RESTMessageV2();
request.setEndpoint(workflowUrl + workflowPath + workflowId);
request.setHttpMethod("post");
request.setRequestHeader("Accept", "Application/json");
request.setRequestHeader("Authorization", "Bearer " + jwt);
request.setRequestHeader("x-scompany", companyId);
request.setRequestHeader("Content-type", "Application/json"); //needed for CoreView workflow v2
request.setRequestBody(CVWorkflowParams); //workflow params passed from glideajax in client script, JSON was stringified before the call
var response = request.executeAsync(); response.waitForResponse(60);
var responseBody = response.getBody();
},
type: 'CoreViewWorkflowCall'
});
Règles métier
La règle métier peut utiliser un code minimal pour transmettre des paramètres dans la fonction du script include et peut être déclenchée selon des tables et éléments spécifiques. Plus d’informations dans la documentation ServiceNow.

Lire/copier le code de la règle métier
(function executeRule(current, previous /*null when async*/) {
// Add your code here
var workflowParams = {
FirstName: current.variables.requested_user.u_displayname.getValue(),
UserServiceNowSys_ID: current.variables.requested_user.getValue(),
ServiceNowID: current.getUniqueValue() //gets the sys_id of the item
};
var WorkflowID = "4e0a550d-72b5-43d4-865e-3f4d3f401873"; //ID of workflow to execute in CoreView
var wfcall = new CoreViewWorkflowCall();
wfcall.CVWorkflowCall_BR(WorkflowID, JSON.stringify(workflowParams));
})(current, previous);
Script catalogue client
Permet d’exécuter du code côté serveur grâce à une exécution côté client. Le code suivant est conçu pour les actions onSubmit. Plus d’informations dans la documentation ServiceNow.

Lire/copier le script catalogue client
function onSubmit() {
//Type appropriate comment here, and begin script below
//build the workflow json and then pass it to the script include via a glideajax call
var workflowParams = {
FirstName: g_form.getReference('requested_user').u_displayname,
ServiceNowID: g_form.getUniqueValue() //gets the sys_id of the item
};
var WorkflowID = "4e0a550d-72b5-43d4-865e-3f4d3f401873"; //ID of workflow to execute in CoreView
//glideajax call to execute workflow server side script
var ga = new GlideAjax('CoreViewWorkflowCall');
ga.addParam('sysparm_name', 'CVWorkflowCall');
ga.addParam('sysparm_CVWorkflowID', WorkflowID);
ga.addParam('sysparm_CVWorkflowParams', JSON.stringify(workflowParams));
ga.getXML(); //execute glideajax call
}
Conclusion
Pour savoir comment utiliser le script include, suivez l’exemple pratique.