Name

sn_table_builder.FlowRecords

Description

No description available

Script

var FlowRecords = Class.create();

FlowRecords.prototype = {

  /**
   * @param {string} - tableName on records exists
   */
  initialize: function(options) {
      this.tableName = options && options.tableName || '';
      this.sortQuery = options && options.sortQuery || '';
      this.query = options && options.query || '';
  },

  /**
   */
  getRecordDetails: function() {
      var rows = [];
      var triggerTypes = [
          'record_create_or_update',
          'record_create',
          'record_update',
          //'record_delete',
      ];
      var flowIdTriggerMap = this._getFlowSysIds(triggerTypes, this.tableName);
      var flowSysIds = Object.keys(flowIdTriggerMap);
      var query = TBUtil.applySortQuery(this.query, this.sortQuery);
      var flows = FlowQueries.getFlowDataOfTable(flowSysIds, query);
      var canCreate = flows.canCreate();

      while (flows.next()) {
          var flowDetail = this._getFlowDetail(flows, flowIdTriggerMap);
          rows.push(flowDetail);
      }

      return {
          rows: rows,
          canCreate: canCreate,
      };
  },

  _getFlowDetail: function(obj, flowIdTriggerMap) {
      var sysId = obj.getValue('sys_id');
      return {
          sysId: sysId,
          name: obj.getDisplayValue('name'),
          active: !!JSON.parse(obj.getValue('active')),
          triggerType: flowIdTriggerMap[sysId],
          status: obj.getDisplayValue('status'),
          updated: obj.getDisplayValue('sys_updated_on'),
          updatedBy: this._getUserDisplayName(obj.getDisplayValue('sys_updated_by')),
          canDelete: obj.canDelete(),
          canWrite: obj.canWrite(),
      };
  },

  _getFlowSysIds: function(triggerTypes, tbName) {
      var triggers = FlowQueries.getTriggersOfType(triggerTypes);
      var sysIds = {};
      while (triggers.next()) {
          var tableName = triggers.getDisplayValue('trigger_inputs.table');
          if (tableName === tbName) {
              var triggerType = triggers.getValue('trigger_type');
              var sysId = triggers.getValue('flow');
              sysIds[sysId] = triggerType;
          }
      }
      return sysIds;
  },

  _getUserDisplayName: function(userName) {
      var users = new GlideRecord('sys_user');
      users.addQuery('user_name', userName);
      users.query();
      if (users.next()) {
          return users.getDisplayValue('name');
      }
  },

  type: 'FlowRecords'
};

Sys ID

ab56a948772a811031e3b3c64b5a99bf

Offical Documentation

Official Docs: