Script includes used to store JavaScript functions and classes that will execute on the server. Script includes generally specifying either object class or function.


Role required: admin.

The script include form


A script include has a name, a description, and a script itself. Also, it is possible to specify if it is active or client-callable.  

To create a new script include, please complete the following steps:


FieldDescription
NameScript include name. Should match with the class name declared in the script field
DescriptionShort action description
ActiveWhen set to TRUE, this script will execute when called; otherwise, it will not execute.
Client callableWhen set to TRUE, this script will be available to call on the client-side scripts.
Script

Define the server-side script to run when called from other scripts

When invoking script includes in other server-side scripts, please use the ss.importIncludeScript method of the SimpleSystem class like shown on the example below:

ss.importIncludeScript('EmailHelper');
const helper = new EmailHelper();

Otherwise, the script would be unavailable.



Special features


You can call a server-side script include in case if you need to use server-side methods on the client-side. To perform this, activate the Client Callable attribute.


ss.importIncludeScript('AbstractAjaxProcessor');
var DurationCalculator = Class.create();
DurationCalculator.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  getDuration() {
    const start = new SimpleDateTime(this.getParameter('sysparm_start'));
    const end = new SimpleDateTime(this.getParameter('sysparm_end'));
    const scheduleID = this.getParameter('sysparm_schedule');
    const schedule = new SimpleSchedule(scheduleID);
    return schedule.duration(start, end).getDurationSeconds() * 1000;
  }
});


Script include on the client-side

if (s_form.getValue('start') &&
  s_form.getValue('end') &&
  s_form.getValue('schedule_id')) {
  const calculate = new SimpleAjax('DurationCalculator'); //Call script include
  calculate.addParam('sysparm_name', 'getDuration');
  calculate.addParam('sysparm_start', s_form.getValue('start'));
  calculate.addParam('sysparm_end', s_form.getValue('end'));
  calculate.addParam('sysparm_schedule', s_form.getValue('schedule_id'));
  calculate.getXML(callback);
  function callback(response) {const answer = response.responseXML.documentElement.getAttribute('answer');
    s_form.setValue('duration', answer);
  }
}