Name

global.ExternalDependencyChange

Description

No description available

Script

var ExternalDependencyChange = Class.create();
ExternalDependencyChange.prototype = {
  initialize: function() {
  },
  
   updateDependencyTypeInRelations: function (_current) {
  	gs.info("Into ExternalDependencyChange.changeDependency -> " + _current.getValue("sys_id"));
  	var shadowTasksInProject = this.findShadowTasksInProject(_current.getValue('sys_id'));
  	var shadowTasksInOtherProjects = this.findShadowTasksInOtherProjects(_current.getValue('sys_id'));
  	 var relations;
  	 
  	if ( shadowTasksInProject.length > 0 ) {
  		relations = new GlideRecord('planned_task_rel_planned_task');
  		relations.addQuery('parent', 'IN', shadowTasksInProject.join(','));
  		relations.setValue('inter_task_dependency_type', _current.getValue('external_dependency'));
  		relations.updateMultiple();
  		
  		relations = new GlideRecord('planned_task_rel_planned_task');
  		relations.addQuery('parent', 'IN', shadowTasksInProject.join(','));
  		relations.query();
  		while ( relations.next() ) {
  			var externalRelation = ShadowTaskQueryHelper.findExternalRelation(relations.getValue('sys_id'));
  			externalRelation.setValue('inter_task_dependency_type', _current.getValue('external_dependency'));
  			externalRelation.setWorkflow(false);
  			externalRelation.update();
  		}
  	}
  	 
  	if ( shadowTasksInOtherProjects.length > 0 ) {
  		relations = new GlideRecord('planned_task_rel_planned_task');
  		relations.addQuery('child', 'IN', shadowTasksInOtherProjects.join(','));
  		relations.setValue('inter_task_dependency_type', _current.getValue('external_dependency'));
  		relations.updateMultiple();
  	}
   },

  findShadowTasksInProject: function(projectSysId) {
      gs.info("Into ExternalDependencyChange.shadowTasks -> " + projectSysId);
      var gr = new GlideRecord("planned_task");
      gr.addQuery("top_task", projectSysId);
      gr.addNotNullQuery("orig_sys_id").addOrCondition("shadow", "true");
      gr.query();
  	var tasks = [];
  	while ( gr.next() )
  		tasks.push(gr.getValue('sys_id'));
      return tasks;
  },

  findShadowTasksInOtherProjects: function(projectSysId) {
      var tasks = [];
  	var gr = new GlideRecord('planned_task');
  	gr.addQuery('orig_sys_id.top_task', projectSysId);
  	gr.query();
  	while ( gr.next() ) {
  		tasks.push(gr.getValue('sys_id'));
  	}
  	return tasks;
  },

  type: 'ExternalDependencyChange'
};

Sys ID

08d30ab19fb22200598a5bb0657fcf26

Offical Documentation

Official Docs: