Name

global.MetricInstance

Description

Metrics insert and update metric_instance rows var mi = new MetricInstance(definition, current); mi.process();

Script

gs.include("PrototypeServer");

var MetricInstance = Class.create();

MetricInstance.prototype = {
  initialize: function(definitionGR, currentGR) {
      this.definition = definitionGR;
      this.current = currentGR;
  },

  // process is the driver for field value duration type definitions 
  process: function() {
      answer = true; 
      mi = this; // global variable
      eval(this.definition.script);
      if (!answer) 
         return; 

      this.endDuration();  // end any previous duration for this metric
      this.startDuration(); // start a new one    
  },

  startDuration: function() {
      var gr = this.getNewRecord();
      gr.field_value = this.current[this.definition.field];
      gr.start = current.sys_updated_on;
      gr.insert();
  },

  endDuration: function() {
      var gr = new GlideRecord('metric_instance');
      gr.addQuery('definition', this.definition.sys_id);
      gr.addQuery('id', this.current.sys_id);
      gr.addQuery('calculation_complete', false);
      gr.query();
      if (!gr.next())
        return;
        
      gr.end = this.current.sys_updated_on;
      gr.duration = gs.dateDiff(gr.start.getDisplayValue(), gr.end.getDisplayValue());
      gr.calculation_complete = true;
      gr.update();
  },

  getNewRecord: function() {
      var gr = new GlideRecord('metric_instance');
      gr.table = this.current.getRecordClassName();
      gr.id = this.current.sys_id;
      gr.definition = this.definition.sys_id;
      gr.field = this.definition.field;
      return gr;
  },

  // return true if a metric exists for this definition and current
  metricExists: function() {
      var gr = new GlideRecord('metric_instance');
      gr.addQuery("id", this.current.sys_id);
      gr.addQuery("definition", this.definition.sys_id);
      gr.query();
      return gr.hasNext();
  },

  _z : function() {
  }    
}

Sys ID

44c7c3a40a25810200e0dbdf70ea7f0c

Offical Documentation

Official Docs: