Name

global.sc_ic_TaskAssignDefn

Description

Wrapper class for task assignment definitions

Script

var sc_ic_TaskAssignDefn = Class.create();
sc_ic_TaskAssignDefn.prototype = Object.extendsObject(sc_ic_Base, {
  initialize: function(_gr,_gs) {
  	sc_ic_Base.prototype.initialize.call(this,_gr,_gs);
  },
  
  setExpired: function() {
  	this._gr.active = false;
  	return this;
  },
  
  expire: function() {
  	this.setExpired();
  	this._gr.update();
  },
  
  /**
   * Returns the assignment for this assignment type definition
   */
  getAssignment: function () {
  	var assignment = {"user":'', "group":''};
  	
  	if (this._gr.assignment_type+"" == sc_ic.DIRECT_ASSIGNMENT) {
  		assignment.user = this._gr.assignment_user+"";
  		assignment.group = this._gr.assignment_group+"";
  		
  		if (this._log.atLevel(GSLog.DEBUG))
  			this._log.debug("[getAssignment] Direct Assignment user: " + assignment.user + ", group: " + assignment.group);
  	}
  	else
  		assignment = this._processAssignmentScript();
  	
  	return assignment;
  },
  
  _copyFields: function(source) {
  	this._gr.short_description = source.short_description;
  	this._gr.description = source.description;
  	this._gr.assignment_type = source.assignment_type;
  	this._gr.assignment_group = source.assignment_group;
  	this._gr.assignment_user = source.assignment_user;
  	this._gr.assignment_script = source.assignment_script;
  	this._gr.assignment_details = source.assignment_details;
  	this._gr[sc_ic.TASK_ASSIGN_DEFN_STAGING] = source.getUniqueValue();
  },
  
  /**
   * Process the assignment script held as part of this record.
   * expects a return from the script to be an object with the structure defined in assignment below.
   */
  _processAssignmentScript: function() {
  	var assignment = {"user":'',"group":''};
  	
  	if (GlideStringUtil.nil(this._gr.assignment_script))
  		return assignment;

  	var scriptResult = GlideEvaluator.evaluateString(this._gr.assignment_script);
  	
  	if (GlideStringUtil.nil(scriptResult))
  		return assignment;
  	
  	assignment.user = scriptResult.user + "";
  	assignment.group = scriptResult.group + "";
  	
  	if (this._log.atLevel(GSLog.DEBUG))
  		this._log.debug("[_processAssignmentScript] Found assignment user: " + assignment.user + ", group: " + assignment.group);
  	
  	return assignment;
  },
  	
  	
  
  type: 'sc_ic_TaskAssignDefn'
});

sc_ic_TaskAssignDefn.create = function(source) {
  var ttd = new GlideRecord(sc_ic.TASK_ASSIGN_DEFN);
  var typeDef = sc_ic_Factory.wrap(ttd);
  typeDef._copyFields(source);
  ttd.insert();
  return ttd;
};

Sys ID

d055e93cc33211003d2ae219cdba8f60

Offical Documentation

Official Docs: