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