Versions Compared

Key

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

This scoped server class provides methods to 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 use the ss global object to access the methods.

ss.addInfoMessage(message, params)


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

Parameter(s):

NameTypeMandatoryDefault
Value
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 lower right corner.Use this method to display a message according to  according to the current user locale. To do so, enter the in the message parameter, enter the source_messagevalue in the message parameter. See Static Interface Localization value of a record from the app category. See Localization and Multi-Language Support to learn more. The params parameter allows defining Use the params parameters to define values for the dynamic the dynamic parts of the translated message.

Parameter(s):

NameTypeMandatoryDefault
Value
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 lower right corner .Use this method to display a message according to the current user locale. To according to the current user locale. To do so, in the message parameter, enter the source_messagevalue in the message parameter. See Static Interface Localization value of a record from the app category. See Localization and Multi-Language Support to learn more. The params parameter allows defining values for the dynamic parts Use the params parameters to define values for the dynamic parts of the translated message.

Parameters:

NameTypeMandatoryDefault
Value
value
messageStringYN
message
params
NumberY
ObjectN
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 Main Log (sys_log)table).

Parameter(s):

NameTypeMandatoryDefault
Value
value
message
String
AnyYN
messageNumberYNmessageObjectYN

Return:

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 Main Log (sys_log)table).

Parameter(s):

NameTypeMandatoryDefault
Value
value
message
String
AnyYN
messageNumberYNmessageObjectYN

Return:

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 Main Log (sys_log)table).

Parameter(s):

NameTypeMandatoryDefault
ValuemessageNumberYNmessageObject
value
message
StringYN
Any
YN

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 Main Log (sys_log)table) table.

Parameter(s):

NameTypeMandatoryDefault
ValuemessageNumber
value
message
StringYN
Any
YN
messageObjectYN

Return:

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

Example:

Code Block
languagejs
themeEclipse
titless.error()
linenumberstrue
(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 based on the its name and optional parameters. 

The name argument name should be equal to the 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 systhe 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
value
nameStringYN
currentSimpleRecord objectYN
param_1
string
StringN
NULL
null
param_2
string
StringN
NULL
null
param_3
string
StringN
NULL
null
param_4
string
StringN
NULL
null
param_5
string
StringN
NULL
null

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
value
nameStringYN
currentSimpleRecord objectYN
process_started_atSimpleDateTime objectYN
param_1
string
StringN
NULL
null
param_2
string
StringN
NULL
null
param_3
string
StringN
NULL
null
param_4
string
StringN
NULL
null
param_5
string
StringN
NULL
null

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 This method returns a password reset token.

Example:

Code Block
languagejs
themeEclipse
titless.generateResetToken()
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 a user to another page, 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 To deactivate the flash message can be turned off. To do so, set the message = variable as null or '''.

Parameter(s):

NameTypeMandatoryDefault Valuevalue
assigned_touserIdStringYN
scriptStringYN
expire_atStringYN

Return:

TypeDescription
String
The
This method returns the 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 application returns Use this method 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
titless.getApplicationID()
linenumberstrue
const appId = ss.getApplicationId();
ss.info(appId);
//Info: 155931135900000002

ss.getProperty(name)


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

Parameter(s):

NameTypeMandatoryDefault
Value
value
nameStringYN

Return:

TypeDescription
String 
StringThis method returns the property
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
value
nameStringYN
valueStringYN
descriptionStringN
NULL
null

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
SimpleSession
Reference to
objectThis method returns the SimpleSession object of 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
SimpleRecord object
The
This method returns the SimpleRecord object of the current user
SimpleRecord object
.

Example:

Code Block
languagejs
themeEclipse
titless.getUser()
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
String
The sys_id value
This method returns the ID value of the current user.

Example:

Code Block
languagejs
themeEclipse
titless.getUserID()
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.

Parameter(s):

NameTypeMandatoryDefault Valuevalue
tableIDtableIdStringYN
RecordIDrecordIdStringYN

Return:

TypeDescription
String
A record DocumentID
 This method returns a Document ID record (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
value
DocID
docIdStringYN

Return:

TypeDescription
String
A
This method returns а 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
value
DocID
docIdStringYN

Return:

TypeDescription
String
A
This method returns a 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 or the admin role. If the role specified has the Elevated privilege checkbox selected and the admin role is not elevated up to the specified one, the method returns false.

Parameter(s):

NameTypeMandatoryDefault
Value
value
roleStringYN

Return:

TypeDescription
BooleanThis method returns
'
true
'
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:

.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 refreshes 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
value
urlStringN""

Return:

TypeDescription
VoidThis method does not return a value.

Example:

Code Block
languagejs
themeEclipse
titless.setRedirect
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