Name
global.ShadowTaskQueryHelper
Description
No description available
Script
var ShadowTaskQueryHelper = Class.create();
ShadowTaskQueryHelper.prototype = {
initialize: function() {
},
type: 'ShadowTaskQueryHelper'
};
ShadowTaskQueryHelper.findIncomingRelationTo = function (sysId) { // sysId of shadowTask
if(JSUtil.notNil(sysId)) {
var gr = new GlideRecord("planned_task_rel_planned_task");
gr.addQuery("child", sysId);
gr.addNotNullQuery("orig_sys_id");
gr.query();
if(gr.next()) {
PPMDebug.log("ShadowTaskQueryHelper.findIncomingRelationTo -> " + gr.getValue("sys_id"));
return gr;
}
}
};
ShadowTaskQueryHelper.filterForNonShadowTask = function() {
var func = function(task) {
return JSUtil.nil(task.orig_sys_id);
};
return func;
};
ShadowTaskQueryHelper.filterForTaskHavingShadows = function() {
var func = function(task) {
var taskId = task.id || task.sys_id;
var shadowCount = 0;
var count = new GlideAggregate('planned_task');
count.addAggregate('COUNT');
count.addQuery('orig_sys_id', taskId);
count.query();
if (count.next())
shadowCount = count.getAggregate('COUNT');
return shadowCount > 0;
};
return func;
};
ShadowTaskQueryHelper.findShadowTasks = function(taskId) {
var gr = new GlideRecord('planned_task');
gr.addQuery('orig_sys_id', taskId);
gr.query();
return gr;
};
ShadowTaskQueryHelper.findUpstreamTaskOfShadowRelation = function (sysId) { // sysId of shadowRelation
if(JSUtil.notNil(sysId)) {
var gr = new GlideRecord("planned_task_rel_planned_task");
if(gr.get(sysId)) {
return gr.orig_sys_id.parent.getRefRecord();
}
}
};
ShadowTaskQueryHelper.findDownStreamTaskOfShadowRelation = function (sysId) { // sysId of shadowRelation
if(JSUtil.notNil(sysId)) {
var gr = new GlideRecord("planned_task_rel_planned_task");
if(gr.get(sysId)) {
var rel = new GlideRecord("planned_task_rel_planned_task");
rel.addQuery("orig_sys_id", gr.getValue("orig_sys_id"));
rel.addQuery("sys_id", "!=", sysId);
rel.query();
if(rel.next())
return rel.parent.getRefRecord();
}
}
};
ShadowTaskQueryHelper.shouldProcessRelationImmediately = function(shadowRelationId) {
var gr = ShadowTaskQueryHelper.findExternalRelation(shadowRelationId);
if ( gr.getValue('inter_task_dependency_type') == 'hard' )
return true;
else
return false;
};
ShadowTaskQueryHelper.findExternalRelation = function (sysId) { // sysId of shadowRelation
if(JSUtil.notNil(sysId)) {
var gr = new GlideRecord("planned_task_rel_planned_task");
if(gr.get(sysId)) {
return gr.orig_sys_id.getRefRecord();
}
}
};
ShadowTaskQueryHelper.plannedTaskRecord = function (sysId) {
if(JSUtil.notNil(sysId)) {
var gr = new GlideRecord("planned_task");
gr.get(sysId);
PPMDebug.log("ShadowTaskQueryHelper.plannedTaskRecord -> " + gr.getValue("number"));
return gr;
}
};
ShadowTaskQueryHelper.projectTaskRecord = function (sysId) {
if(JSUtil.notNil(sysId)) {
var gr = new GlideRecord("pm_project_task");
gr.get(sysId);
PPMDebug.log("ShadowTaskQueryHelper.projectTaskRecord -> " + gr.getValue("number"));
return gr;
}
};
ShadowTaskQueryHelper.relationRecord = function (sysId) {
if(JSUtil.notNil(sysId)) {
var gr = new GlideRecord("planned_task_rel_planned_task");
gr.get(sysId);
PPMDebug.log("ShadowTaskQueryHelper.relationRecord -> " + gr.getValue("sys_id"));
return gr;
}
};
ShadowTaskQueryHelper.findUpstreamShadowRelation = function (relationSysId) {
PPMDebug.log("ShadowTaskQueryHelper.findUpstreamShadowRelation -> " + relationSysId);
if(JSUtil.notNil(relationSysId)) {
var gr = new GlideRecord("planned_task_rel_planned_task");
gr.get(relationSysId);
var parentId = gr.getValue("parent");
gr = new GlideRecord("planned_task_rel_planned_task");
gr.addQuery("parent", parentId);
gr.addQuery("orig_sys_id", relationSysId);
gr.addQuery("external", "false").addOrCondition("external", "0");
gr.query();
if(gr.next()) {
PPMDebug.log("ShadowTaskQueryHelper.findUpstreamShadowRelation upstreamShadowRelationId-> " + gr.getValue("sys_id"));
return gr;
}
}
};
ShadowTaskQueryHelper.findDownstreamShadowRelation = function (relationSysId) {
PPMDebug.log("ShadowTaskQueryHelper.findDownstreamShadowRelation -> " + relationSysId);
if(JSUtil.notNil(relationSysId)) {
var gr = new GlideRecord("planned_task_rel_planned_task");
gr.get(relationSysId);
var childId = gr.getValue("child");
gr = new GlideRecord("planned_task_rel_planned_task");
gr.addQuery("child", childId);
gr.addQuery("orig_sys_id", relationSysId);
gr.query();
if(gr.next()) {
PPMDebug.log("ShadowTaskQueryHelper.findUpstreamShadowRelation upstreamShadowRelationId-> " + gr.getValue("sys_id"));
return gr;
}
}
};
ShadowTaskQueryHelper.findDownstreamTasksAndRelations = function(externalRelationSysIds, ignoreRelationSysIds) {
PPMDebug.log("ShadowTaskQueryHelper.findDownstreamTasksAndRelations -> " + externalRelationSysIds.join(","));
var downstreamTasks = [], downstreamRelations = [];
var gr = new GlideRecord("planned_task_rel_planned_task");
gr.addQuery("orig_sys_id", "IN", externalRelationSysIds);
if(JSUtil.notNil(ignoreRelationSysIds) && ignoreRelationSysIds.length > 0)
gr.addQuery("sys_id", "NOT IN", ignoreRelationSysIds);
gr.query();
PPMDebug.log("findDownstreamTasksAndRelations -> " + gr.getRowCount() + " | " + gr.getEncodedQuery());
while(gr.next()) {
downstreamRelations.push(gr.getValue("sys_id"));
var childRecord = gr.child.getRefRecord();
if(JSUtil.notNil(childRecord.getValue("orig_sys_id"))) {
downstreamTasks.push(gr.getValue("child"));
} else {
downstreamTasks.push(gr.getValue("parent"));
}
}
return {tasks: downstreamTasks, relations: downstreamRelations};
};
ShadowTaskQueryHelper.topTaskIds = function(taskSysIds) {
PPMDebug.log("ShadowTaskQueryHelper.topTaskIds -> " + taskSysIds.join(","));
var topTaskIds = [];
if(JSUtil.notNil(taskSysIds) && taskSysIds.length > 0) {
var ga = new GlideAggregate("planned_task");
ga.addAggregate("COUNT", "top_task");
ga.addQuery("sys_id", "IN", taskSysIds);
ga.query();
while(ga.next()) {
topTaskIds.push(ga.getValue("top_task"));
}
}
return topTaskIds;
};
ShadowTaskQueryHelper.findIncomingRelationsTo = function (sysId) { // sysId of shadowTask
if(JSUtil.notNil(sysId)) {
var gr = new GlideRecord("planned_task_rel_planned_task");
gr.addQuery("child", sysId);
gr.addNotNullQuery("orig_sys_id");
gr.query();
PPMDebug.log("Into ShadowTaskQueryHelper.findIncomingRelationsTo -> " + gr.getRowCount() + " | " + gr.getEncodedQuery());
return gr;
}
};
ShadowTaskQueryHelper.isShadowTaskSuccessor = function(sysId) { //sysId of ShadowTask
var gr = ShadowTaskQueryHelper.findIncomingRelationsTo(sysId);
if ( JSUtil.nil(gr) )
return false;
if ( gr.getRowCount() > 0 )
return true;
else
return false;
};
ShadowTaskQueryHelper.isSuccessorTaskInARelation = function (sysId) { // sysId of shadowTask
if(JSUtil.notNil(sysId)) {
var gr = ShadowTaskQueryHelper.findIncomingRelationsTo(sysId);
if(gr.getRowCount() > 0)
return true;
}
return false;
};
ShadowTaskQueryHelper.findShadowSuccessorTasks = function (relationSysIds) { // sysId of shadowTask
var taskIds = [];
if(JSUtil.notNil(relationSysIds) && relationSysIds.length > 0) {
var gr = new GlideRecord("planned_task_rel_planned_task");
gr.addQuery("sys_id", "IN", relationSysIds.join(","));
gr.addNotNullQuery("orig_sys_id");
gr.query();
PPMDebug.log("Into ShadowTaskQueryHelper.findShadowSuccessorTasks -> " + gr.getRowCount() + " | " + gr.getEncodedQuery());
while(gr.next()) {
var child = gr.child.getRefRecord();
if(JSUtil.notNil(child.getValue("orig_sys_id"))) {
taskIds.push(gr.getValue("child"));
} else {
taskIds.push(gr.getValue("parent"));
}
}
}
return false;
};
ShadowTaskQueryHelper.findAllIncomingRelationsTo = function (sysId, excludeRelationIds) { // sysId of shadowTask
if(JSUtil.notNil(sysId)) {
var gr = new GlideRecord("planned_task_rel_planned_task");
gr.addQuery("child", sysId);
gr.addQuery("external", 0).addOrCondition("external", "false");
if(JSUtil.notNil(excludeRelationIds))
gr.addQuery("sys_id", "NOT IN", excludeRelationIds);
gr.query();
PPMDebug.log("Into ShadowTaskQueryHelper.findAllIncomingRelationsTo -> " + gr.getRowCount() + " | " + gr.getEncodedQuery());
return gr;
}
};
Sys ID
8e00fead9f622200598a5bb0657fcff2