Name

global.CMDBItem

Description

Class for Configuration Item helper functions

Script

gs.include("PrototypeServer");

var CMDBItem = Class.create();

CMDBItem.prototype = {
  initialize : function(item) {
     this.item = item;	
     this.category = null;
     this.subcategory = null;
  },

  setCategory : function() {
     if (!this.item.category.isNil())
        return null;
     
     this._getCategory();
     if (this.category == null)
        return null;

     this.item.category = this.category;
     this.item.subcategory = this.subcategory;
     return this.category;
  },

  _getCategory : function() {
     var categories = GlideCacheManager.get('CMDB_CATEGORIES_CACHE', 'CMDB_CATEGORIES_CACHE');
     if (categories == null) {
  	   categories = this._getAllCategoriesFromDb();
  	   GlideCacheManager.put('CMDB_CATEGORIES_CACHE', 'CMDB_CATEGORIES_CACHE', categories);
     }

     var sysClass = this.item.sys_class_name.toString();
     if (this.item.sys_class_name.isNil())
        sysClass = this.item.getTableName();

     if (typeof categories[sysClass] === 'undefined' || categories[sysClass] == null)
        return;

     this.category = categories[sysClass].category;
     this.subcategory = categories[sysClass].subcategory;
  },

  _getAllCategoriesFromDb : function() {
  	var result = {};
  	var cat = new GlideRecord('cmdb_categories');
  	cat.query();
  	while(cat.next()) {
  		var obj = {};
  		obj['category'] = cat.getValue('category');
  		obj['subcategory'] = cat.getValue('subcategory');
  		result[cat.getValue('name')] = obj;
  	}
  	return result;
  },

  changeCategory : function(previous, cat) {
     var dbu = new GlideDBUpdate('cmdb_ci');
     var dbq = new GlideDBQuery('cmdb_ci');
     dbq.addQuery('category', previous.category.toString());
     dbq.addQuery('sys_class_name', cat.name.toString());
     dbu.setQuery(dbq);
     dbu.setMultiple(true);
     dbu.setValue('category', cat.category.toString());
     dbu.setValue('subcategory', cat.subcategory.toString());
     dbu.execute();
     dbu.close();
     dbq.close();
  },
};

Sys ID

eb67ba270a0a0b8c000708704ecd33b8

Offical Documentation

Official Docs: