Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
  

The methods of this class are designed This scoped server class provides methods to get information about the system, the current user, etc.

Many of the methods provide easy ways to include dates in the query ranges, commonly used in filters and reports.

This class has no constructor, the methods are accessible via the ss global object.

ss.addInfoMessage(message, params)


This method displays an Use this method to display an informational toast message in the bottom right cornerUse this method to display a message according  according to the current user locale. To do so, in the message parameter, enter the source_message value of a record from the app category. See Static Interface Localization to learn more. The params parameter allows defining values for the dynamic parts of the translated message.

Parameter(s):

NameTypeMandatoryDefault value
messageStringYN
messageNumberYN
paramsObjectN{}

Return:

TypeDescription
VoidThis method does not return a value.

Example:

Code Block
languagejs
themeEclipse
titless.addInfoMessage()
linenumberstrue
ss.addInfoMessage("Three days left");
// OR
ss.addInfoMessage("{count} {noun} left", {"count": "Three", "noun": "days"});

ss.addErrorMessage(message, params)


This Use this method displays to display an error toast message in the bottom right corner.Use this method to display a message according  according to the current user locale. To do so, in the message parameter, enter the source_message value of a record from the app category. See Static Interface Localization to learn more. The params parameter allows defining values for the dynamic parts of the translated message.

Parameter(s):

NameTypeMandatoryDefault value
messageStringYN
messageNumberYN
paramsObjectN{}

Return:

TypeDescription
VoidThis method does not return a value.

Example:

Code Block
languagejs
themeEclipse
titless.addErrorMessage()
linenumberstrue
ss.addErrorMessage('"Name" cannot be blank');
// OR
ss.addErrorMessage('"{title}" cannot be blank', {title: "Name"});

ss.addSuccessMessage(message, params)


This method displays the Use this method to display a success toast message in the bottom right corner .Use this method to display a message according to the current user locale. To  To do so, in the message parameter, enter the source_message value of a record from the app category. See Static Interface Localization to learn more. The params parameter allows defining values for the dynamic parts of the translated message.

Parameters:

message
NameTypeMandatoryDefault value
messageStringYNNumberYN
paramsObjectN{}

Return:

TypeDescription
VoidThis method does not return a value.

Example:

Code Block
themeEclipse
titless.addSuccessMessage()
linenumberstrue
ss.addSuccessMessage('Successfully updated');
// OR
ss.addSuccessMessage('Successfully {action_name}', {action_name: "updated"});

ss.info(message)


This Use this method to adds an information message into the system journal ( located in the Logs (sys_log) table).

Parameter(s):

message
NameTypeMandatoryDefault value
messageStringAnyYN

Return:

NumberY
TypeDescriptionN
messageObjectYN

Return:

Void
TypeDescription
VoidThis method does not return a value, but shows a variable message.

Example:

Code Block
languagejs
themeEclipse
titless.info()
linenumberstrue
const task = new SimpleRecord('task');
task.orderByDesc('sys_created_at');
task.setLimit(1);
task.selectAttributes('number');
task.query();
while(task.next()){
    ss.info(task.number);
}

ss.debug(message)


This Use this method adds to add a debug message into the system journal ( located in the Logs (sys_log) table).

Parameter(s):

NameTypeMandatoryDefault value
messageStringAnyYN
messageNumberYN
messageObjectYN

Return:

TypeDescription
VoidThis method does not return a value, but shows a variable message.

Example:

Code Block
languagejs
themeEclipse
titless.debug()
linenumberstrue
const insertedID = inquiry.insert();
if (insertedID == 0) {
    ss.debug(inquiry.getErrors());
} else {
    ss.debug(`Create inquiry with ID ${insertedID}`)
}

ss.warning(message)


This Use this method adds to add a warning message into the system journal ( located in the Logs (sys_log) table).

Parameter(s):

NameTypeMandatoryDefault value
messageStringAnyYN
messageNumberYN
messageObjectYN

Return:

TypeDescription
VoidThis method does not return a value, but shows a variable message.

Example:

Code Block
languagejs
themeEclipse
titless.warning()
linenumberstrue
const task = new SimpleRecord('task');
task.query();
while(task.next()){
  ss.warning(task.sys_id);
}

ss.error(message)


This method adds an error message into the system journal ( located in the Logs (sys_log) table).

Parameter(s):

Y
NameTypeMandatoryDefault value
messageStringAnyYNmessageNumberN
messageObjectYN

Return:

TypeDescription
VoidThis method does not return a value, but shows a variable message.

Example:

Code Block
languagejs
themeEclipse
titless.error()
(function executeRule(current, previous /*null when async*/ ) {
    const nowDateTime = new SimpleDateTime();
    const targetDateTime = new SimpleDateTime(current.appropriate_datetime);
    const secondsLeft = targetDateTime.getNumericValue() - nowDateTime.getNumericValue();
    if (secondsLeft < 1800) { // less than half an hour left
        ss.addErrorMessage('Appropriate Datetime cannot be less than half an hour');
        ss.error(`Too Urgent Request: ${secondsLeft} to process`); 
        current.setAbortAction(true);
    }
})(current, previous);

ss.eventQueue(name, current, param_1, param_2, param_3, param_4, param_5)


This Use this method queues to queue an event , basing on the its name and optional parameters. 

The name argument name should be equal to the sys_the same as the record name in the Event Registers (sys_event_register name) table.

A The table of the passed current object should be equal to the the same as the table specified in the record of the Event Register (sys_event_register) table or the table extended from it.

Parameter(s):

NameTypeMandatoryDefault value
nameStringYN
currentSimpleRecord objectYN
param_1stringNNULL
param_2stringNNULL
param_3stringNNULL
param_4stringNNULL
param_5stringNNULL

Return:

TypeDescription
VoidThis method does not return a value.

Example:

Code Block
languagejs
themeEclipse
titless.eventQueue()
linenumberstrue
if (current.state != '10') { // Not Closed
    ss.eventQueue('incident.close', current, ss.getUserID());
}

ss.eventQueueScheduled(name, current, process_started_at, param_1, param_2, param_3, param_4, param_5)


This Use this method queues to queue an event with a specific start and run it at a specified time. 

The name argument name should be equal to the same as the record name in the Event Registers (sys_event_register name) table.

A The table of the passed current object should be equal to the same as the table specified in the record of the Event Register (sys_event_register) table.


Parameter(s):

NameTypeMandatoryDefault value
nameStringYN
currentSimpleRecord objectYN
process_started_atSimpleDateTime objectYN
param_1stringNNULL
param_2stringNNULL
param_3stringNNULL
param_4stringNNULL
param_5stringNNULL

Return:

TypeDescription
VoidThis method does not return a value.

Example:

Code Block
languagejs
themeEclipse
titless.eventQueueScheduled()
linenumberstrue
if (current.state != '10') { // Not Closed
    const plusThreeDays = new SimpleDateTime(); // now
    plusThreeDays.addDays(3); // + 3 days
    ss.eventQueueScheduled('incident.autoclose', current, plusThreeDays, ss.getUserID());
}

ss.generateResetToken()


This Use this method to generates a token, for example, when the password resetting has been requested.

Return:

TypeDescription
StringA password reset token.

Example:

Code Block
languagejs
themeEclipse
titlegenerateResetToken()
linenumberstrue
const resetToken = ss.generateResetToken();
ss.info(resetToken);
//Info: l_kxwLi-TsTwmgLYk3euOCeXeA14nE2U_1610699284

ss.generateUrlAction(

assigned_to

userId, script, expire

_at

)


This method returns the Use this method to return a URL. After following it, the script specified by in the script parameter is executed.

By default, the main page opens after following the URL. To redirect it, put enter its address into the redirectUrl variable variable within the script.

A flash message "Action done" is shown by default. To change the message text, redefine the message variable variable within the script.

The flash message can be turned off. To do so, set the message = To deactivate the flash message, set the message variable as null or '''.

Parameter(s):

NameTypeMandatoryDefault value
assigned_touserIdStringYN
scriptStringYN
expire_atStringYN

Return:

TypeDescription
StringThe action URL.

Example:

Code Block
languagejs
themeEclipse
titless.generateUrlAction()
linenumberstrue
const simpleInstanceUri = ss.getProperty('simple.instance.uri');
const instanceUrl = simpleInstanceUri.startsWith('https://') ? simpleInstanceUri : 'https://' + simpleInstanceUri;


const аctionScript = `
    const task = new SimpleRecord('task');
    task.get('${current.sys_id}');
    if (task.state == '7') { // Completed
        task.state = '10'; // Closed
        task.update();
    }
    message = null;
    redirectUrl = instanceUrl + '/record/task/' + current.sys_id
`;
const nowDateTime = new SimpleDateTime();
nowDateTime.addDays(3);
const url = ss.generateUrlAction(current.getValue('caller'), аctionScript, nowDateTime.getValue());
ss.info(url);
//Info: your-instance-uri.simpleone.ru/url-action/run?key=Q2GqNFRXCRY2

ss.getApplicationId()


This Use this method returns to return the ID of the current application for that the current user is using at the moment.

Return:

TypeDescription
StringThis method returns The application ID.

Example:

Code Block
languagejs
themeEclipse
titlegetApplicationID()
linenumberstrue
const appId = ss.getApplicationId();
ss.info(appId);
//Info: 155931135900000002

ss.getProperty(name)

This method returns the value from the 'sys_property' basing on the 'name'.


Use this method to return a value from the specified in the name parameter record of the System Properties (sys_property) table.

Parameter(s):

NameTypeMandatoryDefault value
nameStringYN

Return:

TypeDescription
StringProperty The property value if available; otherwise, the method returns NULL null.

Example:

Code Block
languagejs
themeEclipse
titless.getProperty()
linenumberstrue
ss.info(ss.getProperty('simple.passwordreset.enabled'));
//Info: false

ss.setProperty(name, value, description)


This method verifies if Use this method to verify, using the name parameter. that there is a record in the System Property (sys_property) table, using the name parameter.

If the record is absentexists, the method creates a new record, otherwise, it performs the UPDATE actionupdates its value and description.

Parameter(s):

NameTypeMandatoryDefault value
nameStringYN
valueStringYN
descriptionStringNNULL

Return:

TypeDescription
VoidThis method does not return a value.

Example:

Code Block
languagejs
themeEclipse
titless.setProperty()
linenumberstrue
ss.setProperty('user.timezone.default', 'Europe/Moscow', 'Define the default user time zone');

ss.getSession()


Use this method to get a reference to information on the current authorization session.

Return:

TypeDescription
ObjectA SimpleSession object of SimpleSessionReference to the current session.

Example:

Code Block
languagejs
themeEclipse
titlegetSession()
linenumberstrue
const session = ss.getSession();
const ipAddress = session.getClientIP();
ss.info(ipAddress);
//Info: 127.0.0.1

ss.getUser()


This method returns Use this method to return the SimpleRecord object of the current user SimpleRecord object.

Return:

TypeDescription
ObjectThe SimpleRecord object The of the current user SimpleRecord object.

Example:

Code Block
languagejs
themeEclipse
titlegetUser()
linenumberstrue
ss.info(ss.getUser().username);
//Info: admin

ss.getUserID()


This Use this method to returns the sys_id value of the current user ID.

Return:

TypeDescription
StringThe sys_id ID value.

Example:

Code Block
languagejs
themeEclipse
titlegetUserID()
linenumberstrue
const approval = new SimpleRecord('sys_approval');
approval.addQuery('approver_id', ss.getUserID());
approval.addQuery('state', 'requested');
approval.selectAttributes('sys_id');
approval.query();
if (approval.getRowCount() > 0) {
  //...
}

ss.getDocIdByIds(

tableID

tableId,

RecordID

recordId)


This method gets a table ID and a table record ID, and returns the record Use this methods to return a record Document ID (32-character UUID value) .basing on the table ID and the table record ID.

ParameterParameter(s):

NameTypeMandatoryDefault value
tableIDtableIdStringYN
RecordIDrecordIdStringYN

Return:

TypeDescription
StringA Document ID record DocumentID (32-character UUID value).

Example:

Code Block
languagejs
themeEclipse
titless.getDocIdByIds()
linenumberstrue
const docID = ss.getDocIdByIds(current.sys_db_table_id, current.sys_id);
const approval = new SimpleRecord('sys_approval');
approval.addQuery('item', docID);
approval.query();

ss.getTableIdByDocId(

DocID

docId)


This method gets a record Use this method to returm the table ID basing on the Document ID record (32-character UUID value) and returns the table IDspecified.

Parameter(s):

NameTypeMandatoryDefault value
DocIDdocIdStringYN

Return:

TypeDescription
StringA table ID.

Example:

Code Block
languagejs
themeEclipse
titless.getTableIdByDocId()
linenumberstrue
const tableID = ss.getTableIdByDocId(current.item);
const table = new SimpleRecord('sys_db_table');
table.get(tableID);
const record = new SimpleRecord(table.name);
const recordID = ss.getRecordIdByDocId(current.item);
record.get(recordID);
ss.addInfoMessage(record.sys_created_at);
//Info: 2020-05-24 16:30:21

ss.getRecordIdByDocId(

DocID

docId)


This Use this method gets to return a record ID basing on the DocumentID record (32-character UUID value) and returns the record IDspecified.

Parameter(s):

NameTypeMandatoryDefault value
DocIDdocIdStringYN

Return:

TypeDescription
StringA record ID.

Example:

Code Block
languagejs
themeEclipse
titless.getRecordIdByDocId()
linenumberstrue
const tableID = ss.getTableIdByDocId(current.item);
const table = new SimpleRecord('sys_db_table');
table.get(tableID);
const record = new SimpleRecord(table.name);
const recordID = ss.getRecordIdByDocId(current.item);
record.get(recordID);
ss.addInfoMessage(record.sys_created_at);

ss.hasRole(role)


This method checks whether Use this method to verify that the current user has a the specified role or the admin role. If the role specified has the Elevated Privilege checkbox selected and the admin user role is not elevated up to the specified one, the method returns false.

T

Parameter(s):

NameTypeMandatoryDefault value
roleStringYN

Return:

TypeDescription
BooleanThis method returns true if if the user has a the specified or admin role, ; otherwise, it returns false.

Example:

Code Block
languagejs
themeEclipse
titless.hasRole()
linenumberstrue
const isUserManager = ss.hasRole('process_manager'); // true or false
return isUserManager;


Note

The method always returns ' true ' if a user has a specific or the admin role. To check whether verify that the user has a particular role, use the following script:

Code Block
languagejs
themeEclipse
titless.hasRole()
linenumberstrue
const MANAGER_ROLE = 'process_manager';
const userHasRole = new SimpleRecord('sys_user_has_role');
userHasRole.addQuery('user_id', ss.getUserId());
userHasRole.addQuery('role_id.name', MANAGER_ROLE);
userHasRole.setLimit(1);
userHasRole.selectAttributes(['sys_id']);
userHasRole.query();
const isManager = !!userHasRole.next();
return isManager

ss.importIncludeScript(name)

This method allows importing Script Includes into the server-side scripts.

Note

When used in the server-side inline scripts like a UI Action condition, it is mandatory to use return to return the value. See the example below:

!!userHasRole.next();
return isManager


ss.importIncludeScript(name)


Use this method to import Script Includes.

Code Block
languagejs
themeEclipse
titless.importIncludeScript
linenumberstrue
ss.importIncludeScript('get_access'); return get_access();

Parameter(s):

NameTypeMandatoryDefault value
nameStringYN

Return:

TypeDescription
VoidThis method does not return a value.

Example:

Code Block
languagejs
themeEclipse
titless.importIncludeScript()
linenumberstrue
ss.importIncludeScript('calculateCAB');
const approvers = [];
if (!!current.customized_cab) {
    approvers = approvers.concat(current.customized_cab.split(','));
}
if (!current.ignore_automatically_generated_cab) {
    const includeScriptResult = calculateCAB(current);
    approvers = approvers.concat(includeScriptResult);
}

ss.setRedirect(url)


This method sets the URL for this transaction to which the user will be redirected nextUse this method to redirect a user to the specified URL. If the URL is not provided, the system reloads the current page is reloaded after calling the method.

Info

It is not recommended to pass the an absolute URL as a parameter value for this method, because it leads to the scalability issues. Define Specify the paths in a relative way. See the example below.:

Not recommendedRecommended
https://instance.example.com/record/task/record/task


Parameter(s):

NameTypeMandatoryDefault value
urlStringN""

Return:

TypeDescription
VoidThis method does not return a value.

Example:

Code Block
languagejs
themeEclipse
titlesetRedirect
linenumberstrue
ss.setRedirect(`/list/${current.getTableName()}`);
// Redirect to the list view of the current table

ss.setRedirect('/record/task');
// Redirect to the default view of the Task table


Table of Contents
absoluteUrltrue
classfixedPosition
printablefalse