Name

global.ExternalDependencyGenerator

Description

No description available

Script

gs.include("PrototypeServer");

var ExternalDependencyGenerator = Class.create();

ExternalDependencyGenerator.prototype = {

 initialize : function(/* GlideRecord */ request) {
   this.request = request;
   this._lazy = false;
 },

 setRequest : function(/* GlideRecord */ request) {
   this.request = request;
 },

 setLazy : function(/* boolean */ lazy) {
   this._lazy = lazy;
 },

 generate : function() {
   var gr = new GlideRecord('sc_req_item');
   gr.addQuery('request', this.request.sys_id);
   gr.query();
   while (gr.next()) {

      // using workflow for this item?
      if (gr.cat_item.workflow != null && !gr.cat_item.workflow.nil())
         continue;
          
      var planID = GlideappDeliveryPlan.resolvePlanID(gr);
      var plan = GlideappDeliveryPlan.get(planID);
      if (!plan)
         continue;

      var it = plan.getTokenMap().values().iterator();
      while (it.hasNext()) {
         var tt = it.next();
         this._createDependencies(tt, gr);
      }
   }
 },

 _createDependencies: function(/* TaskToken **/ tt, /* GlideRecord */ request_item) {
   if (tt.getExternalPredecessors().isEmpty())
     return;


   var actualTask = new GlideRecord('sc_task');
   actualTask.addQuery('delivery_task', tt.getId());
   actualTask.addQuery('request_item', request_item.sys_id);
   actualTask.query();
   if (!actualTask.next())
      return;

   var it = tt.getExternalPredecessors().iterator();
   while (it.hasNext()) {
     var task_id = it.next();
     var gr = new GlideRecord('sc_task');
     gr.addQuery('delivery_task', task_id);
     gr.addQuery('request_item.request', this.request.sys_id);
     gr.query();
     while (gr.next()) {
       var dep = new GlideRecord('execution_plan_local');
       dep.initialize();
       dep.predecessor = gr.sys_id;
       dep.successor = actualTask.sys_id;
       if (this._lazy)
          dep.insertLazy();
       else
          dep.insert();
     }
   }
 }
}

Sys ID

211976f70a0a0b9900497fe257b72cac

Offical Documentation

Official Docs: