Name
global.InterProjectEventManager
Description
Inter project event manager - does two things - it raises events and handle the event
Script
var InterProjectEventManager = Class.create();
InterProjectEventManager.prototype = {
initialize: function() {
},
type: 'InterProjectEventManager'
};
InterProjectEventManager.EVENT = 'inter.project.relation.recalculate';
InterProjectEventManager.FULL_RECALCULATE_EVENT = 'inter.project.relation.full_recalculate';
InterProjectEventManager.raiseEvent = function (topTaskId, dirtyTasks) {
gs.info("InterProjectEventManager: raiseEvent -> " + topTaskId + " | " + dirtyTasks);
if(JSUtil.notNil(topTaskId) && JSUtil.notNil(dirtyTasks)) {
var gr = new GlideRecord("planned_task");
if( gr.get(topTaskId) ) {
gs.eventQueue(InterProjectEventManager.EVENT, gr, topTaskId, dirtyTasks);
}
}
};
InterProjectEventManager.raiseFullRecalculateEvent = function (topTaskId) {
gs.info("InterProjectEventManager: raiseFullRecalculateEvent -> " + topTaskId);
// Currently we raise in diffrent flows or InterProjectTaskDeletionHandler and InterProjectRelationDeletionaHandler
if( !InterProjectEventManager.isFullRecalculateInProgress(topTaskId) ) {
var gr = new GlideRecord("planned_task");
if(gr.get(topTaskId))
gs.eventQueue(InterProjectEventManager.FULL_RECALCULATE_EVENT, gr, topTaskId);
}
};
InterProjectEventManager.handleEvent = function (topTaskId, dirtyTasks) {
gs.info("InterProjectEventManager: handleEvent -> " + topTaskId + " | " + dirtyTasks);
if( JSUtil.notNil(topTaskId) && JSUtil.notNil(dirtyTasks)) {
(new InterProjectEventProcessor()).process(topTaskId, dirtyTasks);
}
};
InterProjectEventManager.handleFullRecalculateEvent = function (topTaskId) {
gs.info("InterProjectEventManager: handleFullRecalculateEvent -> " + topTaskId);
if( JSUtil.notNil(topTaskId) ) {
(new InterProjectEventProcessor()).processForFullRecalculate(topTaskId);
}
};
InterProjectEventManager.isFullRecalculateInProgress = function (topTaskId) {
gs.info("InterProjectEventManager: isFullRecalculateInProgress -> " + topTaskId);
if( JSUtil.notNil(topTaskId) ) {
var gr = new GlideRecord("sysevent");
gr.addQuery("name", InterProjectEventManager.FULL_RECALCULATE_EVENT);
gr.addQuery("state", "ready");
gr.addQuery("parm1", topTaskId);
gr.addQuery("sys_created_on", ">=" , gs.daysAgoStart(1));
gr.query();
if(gr.next()) {
gs.info("InterProjectEventManager: isFullRecalculateInProgress -> TRUE");
return true;
}
gs.info("InterProjectEventManager: isFullRecalculateInProgress -> FALSE");
return false;
}
return true; // If undefined
};
Sys ID
6bd632ed9f622200598a5bb0657fcf61