Name

global.SvcTraversalRulesProvider

Description

Provider of traversal rules from svc_traversal_rules

Script

var SvcTraversalRulesProvider = Class.create();
SvcTraversalRulesProvider.prototype = {
  initialize: function() {},

  /*
   * Returns list of traversal rules, ordered by "order" field values.
   * Example: [{"parent_type":"cmdb_ci_hardware","rel_type":"d93304fb0a0a0b78006081a72ef08444","child_type":"cmdb_ci_vm_instance","reverse":true,"order":100,"used_by":"ServiceByTags","max_depth":1,"active":true},
   *			 {"parent_type":"cmdb_ci_appl","rel_type":"60bc4e22c0a8010e01f074cbe6bd73c3","child_type":"cmdb_ci_hardware","reverse":true,"order":200,"used_by":"ServiceByTags","max_depth":1,"active":true},
   *			 {"parent_type":"cmdb_ci_kubernetes_pod","rel_type":"55c95bf6c0a8010e0118ec7056ebc54d","child_type":"cmdb_ci_oslv_container","reverse":false,"order":300,"used_by":"ServiceByTags","max_depth":1,"active":true}]
   */
  getTraversalRules: function(usedBy) {
      var result = [];
      var gr = new GlideRecord('svc_traversal_rules');
      gr.addActiveQuery();
      gr.addQuery('used_by', usedBy);
      gr.addQuery('definition', 'ISNOTEMPTY', '');
      gr.addQuery('definition.rel_type', 'ISNOTEMPTY', '');
      gr.orderBy('order');
      gr.query();
      while (gr.next()) {
          result.push(this._toRuleObj(gr));
      }
  	
  	return result;
  },

  _toRuleObj: function(gr) {
      var rule = {};
      rule.parent_type = gr.definition.parent_type + '';
      rule.rel_type = gr.definition.rel_type + '';
      rule.child_type = gr.definition.child_type + '';
  	rule.reverse = gr.reverse == true;
  	rule.order = parseInt(gr.order);
      rule.used_by = gr.used_by + '';
      rule.max_depth = parseInt(gr.max_depth);
      rule.active = gr.active == true;
  	
  	return rule;
  },

  type: 'SvcTraversalRulesProvider'
};

Sys ID

14e9b3275b1210100023fbbeb681c79a

Offical Documentation

Official Docs: