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

Offical Documentation

Official Docs: