You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 29 Next »

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:

  • Navigate to System Definition -> Script Includes.
  • Click New and fill in the fields.
  • Click Save or Save and Exit to apply changes. 


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.

Practical case


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.

Server-side script include on the client-side
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; // value that would be passed to client-side
  }
});


Script include on the client-side

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'); // call method
  calculate.addParam('sysparm_start', s_form.getValue('start')); // pass param
  calculate.addParam('sysparm_end', s_form.getValue('end')); // pass param
  calculate.addParam('sysparm_schedule', s_form.getValue('schedule_id')); // pass param
  calculate.getXML(callback);
  function callback(response) {
    const answer = response.responseXML.documentElement.getAttribute('answer'); // value received from server-side
    s_form.setValue('duration', answer);
  }
}
  • No labels