Listeners
Listeners allow you to connect with various events within the app. For instance, you can listen to the creation of records or the reception of an event from an legacy service and take certain actions when these events occur.
Apart from event listening, it’s also possible to schedule listeners to run periodically based on a CRON expression.
Label
This represents the human-readable name of the listener.
Name
This serves as the internal name of the listener.
The name cannot include special characters or spaces, only letters and numbers are allowed.
Type
The listener type indicates the category of events it will be observing. The available types include:
Data
: Data listeners can tap into data-related events such as record creation, record updates, or the execution of actions on records. When selecting this type, additional settings can be configured to filter the specific data events to be handled:Entity
: The listener will focus on events within records under this entity.Events
: Specifies which data events the listener will process. Refer to the Data events for more details.
Legacy service
: Legacy service listeners can intercept events sent from legacy services. For example, an HTTP legacy service can generate an event when a webhook is triggered, which can then be processed by a listener. When choosing this type, further settings can be customized to filter the events to be managed:Legacy services
: The listener will be attuned to events generated by this specific legacy service.Event
: Indicates the specific event to be considered.
UI plugin
: These listeners can capture events and callbacks originating from UI plugins. When opting for this type, you can specify additional settings to filter the events to be handled:Plugin
: The plugin to which the listener will be attuned.Event
: The event/callback emanating from the plugin.
Job
: Job listeners can respond to user events like job start or job completion. When selecting this type, additional settings can be defined to filter the job events to be handled:Job
: The category of job that the listener will be observing.Event
: Specifies the particular event to be considered.
Time
: Time listeners execute based on a CRON expression. When selecting this type, additional settings can be configured:Timezone
: The timezone employed for the CRON expression.Expression
: The expression determining when the listener will execute. For more information on the expression format, please review this documentation.
Execute in the background
For certain event types (such as Data
), you can decide whether the listener should execute synchronously or be sent to the background.
For instance, if this flag isn’t enabled and the listener pertains to a record creation, the operation won’t conclude until the listener’s execution is finished. Therefore, you should enable this flag when the listener’s execution might surpass an acceptable time frame for the ongoing operation.
Avoid Triggering UI events
Enabling this flag ensures that when the listener is triggered in the background, it bypasses sending notifications to the UI. This feature proves valuable in avoiding additional overhead during execution. A typical use case is executing a listener for batch processing, where notifying end users about data changes isn’t necessary.
Action
This refers to the script that will be executed when the event is triggered. Depending on the event type, the script’s context will differ.
Data listeners
Parameters
Name | Type | Description |
---|---|---|
event | object | Contains information about the event. It has the following structure:
- Possible values for dataEvent are: RECORD_CREATED , RECORD_CHANGED , RECORD_DELETED , CONDITION_MET , ACTION_PERFORMED . |
record | sys.data.Record | The record involved in the data operation. There is one case where this variable will be empty, which when the event.dataEvent is ACTION_PERFORMED and the action executed was of type Many records. In this case, as the action is executed over a group of records, it isn’t possible to set a single record. |
oldRecord | sys.data.Record | If the event is of type RECORD_CHANGED , ACTION_PERFORMED , or CONDITION_MET , this variable will hold the version of the record before the event occurred. |
Samples
// logs a message when there is a data event (the listener is configured accordingly)
sys.logs.info('*** EVENT: '+event.dataEvent);
sys.logs.info('*** RECORD: '+record.label());
Legacy services listeners
Parameters
Name | Type | Description |
---|---|---|
event | object | Contains information about the event. It has the following structure:
date is the timestamp when the event was sent.endpoint is the name of the endpoint.endpointEvent is the name of the event.data is data sent by the endpoint which is specific for each event and you should check the documentation for each endpoint. |
Samples
// logs the data sent by the endpoint
sys.logs.info('*** ENDPOINT: '+event.endpoint);
sys.logs.info('*** EVENT: '+event.endpointEvent);
sys.logs.info('*** DATA: '+event.data);
Service listeners
Parameters
Name | Type | Description |
---|---|---|
event | object | Contains information about the event. It has the following structure:
date is the timestamp when the event was sent.service is the name of the service.serviceEvent is the name of the event.data is data sent by the endpoint which is specific for each event and you should check the documentation for each service. |
Samples
// logs the data sent by the package
sys.logs.info('*** SERVICE: '+event.service);
sys.logs.info('*** EVENT: '+event.serviceEvent);
sys.logs.info('*** DATA: '+event.data);
UI service listeners
Parameters
Name | Type | Description |
---|---|---|
event | object | Contains information about the event. It has the following structure:
date is the timestamp when the event was sent.uiService is the name of the uiService.event is the name of the event.callback is the name of the callback.data is data sent by the callback request. |
Samples
// logs the data sent by the ui service
sys.logs.info('*** UI_SERVICE: '+event.uiService);
sys.logs.info('*** DATA: '+event.data);
UI plugin listeners
Parameters
Name | Type | Description |
---|---|---|
event | object | Contains information about the event. It has the following structure:
date is the timestamp when the event was sent.plugin is the name of the plugin.event is the name of the event.callback is the name of the callback.data is data sent by the callback request. |
Samples
// logs the data sent by the plugin
sys.logs.info('*** PLUGIN: '+event.plugin);
sys.logs.info('*** DATA: '+event.data);
Job listeners
Parameters
Name | Type | Description |
---|---|---|
event | object | Contains information about the event. It has the following structure:
jobType is the type of jobjobEvent is the event of the job that triggered the listener.jobId is the ID of the job. You can use it to find the job and get more information about it. |
Samples
// finds job and checks if it had errors
var job = sys.jobs.findById(event.jobId);
sys.logs.info('*** ERRORS: '+job.hasErrors());
Time listeners
Parameters
Name | Type | Description |
---|---|---|
event | object | Contains information about the event. It has the following structure:
|
Samples
// logs something when the timer is triggered
sys.logs.info('*** TIME LISTENER!');
Custom event listeners
Parameters
Name | Type | Description |
---|---|---|
event | object | Contains information about the event. It has the following structure:
customEvent is the name of custom event that triggered the listener.customData is an object sent by user as data opf this custom event. |
Samples
// log note ID create
sys.logs.info('*** NOTE CREATED: '+customData.noteId);
Package event listeners
Parameters
Name | Type | Description |
---|---|---|
event | object | Contains information about the event. It has the following structure:
packageEvent is the name of the package event that triggered the listener.data is an object sent by user as data of this package event.package is the name of the package. |
Samples
// log message content
sys.logs.info('*** NEW MESSAGE CREATED: '+data.messageContent);