Scripts de calculateur de plage

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 2 minutes de lecture
  • Vous pouvez spécifier un include de script qui calcule les restrictions de plage et traite les mises à jour parentes dans une page de chronologie.

    Scripts de calculateur de plage

    Voici trois exemples d’includes de script qui permettent de spécifier des restrictions de plage.

    Exemple : UpdateParentsRangeCalculator

    Met à jour les enregistrements parents lorsqu’un parcours d’enregistrement enfant est déplacé ou redimensionné dans la chronologie.
    var ExampleUpdateParentsRangeCalculator = Class.create();
    ExampleUpdateParentsRangeCalculator.prototype = {
    initialize: function() { },
    updateParents: function(id, table, startDate, endDate){
     if (table == "rm_sprint"){
       var releaseID;
       var sprint = new GlideRecord(table);
       sprint.addQuery('sys_id', id);
       sprint.query();
       if (sprint.next())
         releaseID = sprint.release + "";
       if (releaseID) {
             var now_GR = new GlideRecord("rm_release_scrum");
             gr.addQuery("sys_id", releaseID);
             gr.query();
             if (gr.next()) {
               if (startDate  && startDate < this.getTimeMs(gr.start_date))
                   gr.start_date = this.getTimeObject(startDate); 
               if (endDate && endDate > this.getTimeMs(gr.end_date))
                  gr.end_date = this.getTimeObject(endDate);
                  gr.update();
             }
        }
      }
    },  
    getMinRangeDetails: function(id, table){ return [-1, -1, "", ""]; },
    getMaxRangeDetails: function(id, table){ return [-1, -1, ""]; },
    getTimeMs: function(date){ 
      return new GlideScheduleDateTime(date).getMS(); },
    getTimeObject: function(timeMS) { 
      var gdt = new GlideDateTime(); 
      gdt.setNumericValue(timeMS); 
      return gdt; },
    logMessage: function(message){ gs.log(message); },
    type: 'ExampleUpdateParentsRangeCalculator'
    }

    Dans cet exemple, le parcours est identifié en fonction de l’ID et de la table à partir de function(id, table, startDate, endDate).

    Exemple MinRangeCalculator

    Définit la date de début au plus tôt et la date de fin au plus tard pour une période spécifiée.
    var ExampleMinRangeCalculator = Class.create();
      ExampleMinRangeCalculator.prototype = {
          initialize: function() { },
          updateParents: function(id, table, startDate, endDate){ },
          getMinRangeDetails: function(id, table){
               var min = -1;
               var max = -1;
               var minID = "";
               var maxID = "";
               if (table == "rm_release_scrum"){
                        var now_GR = new GlideRecord("rm_sprint");
                        gr.addQuery("release", id);
                        gr.query();
                        while(gr.next()){
                             var start = this.getTimeMs(gr["start_date"]);
                             var end = this.getTimeMs(gr["end_date"]);
                             var id = gr["sys_id"];
                             if (min == - 1 || start <= min){
                                    if (start != min)
                                         minID = "";
                             min = start;
                             minID += "," + id;
                             }
                             if (max == -1 || end >= max){
                                        if (end != max)
                                                maxID = "";
                                        max = end;
                                        maxID += "," + id;
                                }  
                         }
                }
            return [min, max, minID, maxID];
    },
    getMaxRangeDetails: function(id, table){ return [-1, -1, ""]; },
    getTimeMs: function(date){ return new GlideScheduleDateTime(date).getMS(); },
    getTimeObject: function(timeMS) { 
      var gdt = new GlideDateTime(); 
      gdt.setNumericValue(timeMS); 
      return gdt; },
    logMessage: function(message){ gs.log(message); },
    type: 'ExampleUpdateParentsRangeCalculator'
    }

    Exemple MaxRangeCalculator

    Définit la date de début au plus tôt et la date de fin au plus tard pour une période spécifiée.
    var ExampleMaxRangeCalculator = Class.create();
    ExampleMaxRangeCalculator.prototype = {
       initialize: function() { },
       updateParents: function(id, table, startDate, endDate){ },
       getMinRangeDetails: function(id, table){ return [-1, -1, "", ""]; },
       getMaxRangeDetails: function(id, table){
          if (table == "rm_sprint"){
             var sprint = new GlideRecord(table);
             sprint.addQuery('sys_id', id);
             sprint.query();
             if (sprint.next())
                releaseID = sprint.release + "";
             if (releaseID) {
                var now_GR = new GlideRecord("rm_release_scrum");
                gr.addQuery("sys_id", releaseID);
                gr.query();
                if (gr.next())
                   return [this.getTimeMs(gr.start_date),
                    this.getTimeMs(gr.end_date), gr.sys_id];
             }
          }
          return [-1, -1, ""];
       },
       getTimeMs: function(date){ return new ScheduleDateTime(date).getMS(); },
       getTimeObject: function(timeMS) { 
         var gdt = new GlideDateTime();
         gdt.setNumericValue(timeMS); 
         return gdt; },
       logMessage: function(message){ gs.log(message); },
       type: 'ExampleUpdateParentsRangeCalculator'
    }
    Utilisez les deux fonctions suivantes pour obtenir les dates de début et de fin correctes dans les trois exemples d’includes de script fournis à titre de référence.
    getTimeMs: function(date){
            return new ScheduleDateTime(date).getMS();
        }
    getTimeObject: function(timeMS) {
            var gdt = new GlideDateTime();
            gdt.setNumericValue(timeMS);
            return gdt;
        }