Name
global.AISearchGlideSignalsUtils
Description
Script include for utility functions related to Signals
Script
var AISearchGlideSignalsUtils = Class.create();
AISearchGlideSignalsUtils.prototype = {
initialize: function() {
this.recordLimit = parseInt(gs.getProperty('glide.signals.queued_signal_processing_limit', 2000));
},
/**
* Reads from the queued signals staging table, sys_signal_event_queue, and sends the events in to the Signals API
*/
processQueuedSignals: function() {
var signalsService = new GlideSignalsService();
var queuedEventsGr = new GlideRecord("sys_signal_event_queue");
queuedEventsGr.setLimit(this.recordLimit);
queuedEventsGr.orderBy("sys_created_on");
queuedEventsGr.query();
var errorMessageTemplate = "Failed to process signal event of type: 'EVENT_TYPE', priority: 'EVENT_PRIORITY', body: 'EVENT_BODY', created: 'EVENT_CREATION'";
var processedEvents = [];
while (queuedEventsGr.next()) {
var eventAction = queuedEventsGr.getValue("event_action");
var eventPriority = queuedEventsGr.getValue("event_priority");
var eventBody = queuedEventsGr.getValue("event_body");
try {
signalsService.trackEvent(eventAction, eventPriority, JSON.parse(eventBody));
} catch (e) {
var errorMessage = errorMessageTemplate.replace('EVENT_TYPE', eventAction)
.replace('EVENT_PRIORITY', eventPriority)
.replace('EVENT_BODY', eventBody)
.replace('EVENT_CREATION', queuedEventsGr.getValue("sys_created_on"));
gs.error(errorMessage, e);
}
processedEvents.push(queuedEventsGr.getUniqueValue());
}
if (processedEvents.length > 0) {
queuedEventsGr.initialize();
queuedEventsGr.addQuery("sys_id", processedEvents);
queuedEventsGr.query();
queuedEventsGr.deleteMultiple();
}
},
type: 'AISearchGlideSignalsUtils'
};
Sys ID
a8f615eb5bf15110d9a5ce1a8581c7da