Bereichsrechner-Skripts

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 2 Minuten Lesedauer
  • Sie können eine Skripteinbindung angeben, die Bereichsbeschränkungen berechnet und übergeordnete Updates auf einer Zeitleistenseite verarbeitet.

    Bereichsrechner-Skripts

    Im Folgenden finden Sie drei Beispiele für Skripteinbindungen, mit denen Bereichsbeschränkungen angegeben werden können.

    ExampleUpdateParentsRangeCalculator

    Aktualisiert übergeordnete Datensätze, wenn eine untergeordnete Datensatzspanne in der Zeitleiste verschoben oder in der Größe geändert wird.
    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'
    }

    In diesem Beispiel wird die Spanne basierend auf der ID und der Tabelle aus der Funktion (ID, Tabelle, startDate, endDate) identifiziert.

    ExampleMinRangeCalculator

    Definiert das früheste Startdatum und das späteste Enddatum für eine angegebene Spanne.
    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'
    }

    ExampleMaxRangeCalculator

    Definiert das früheste Startdatum und das späteste Enddatum für eine angegebene Spanne.
    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'
    }
    Verwenden Sie die folgenden beiden Funktionen, um die richtigen Start- und Enddaten in den drei Beispielskripteinbindungen zu erhalten, die als Referenz bereitgestellt werden.
    getTimeMs: function(date){
            return new ScheduleDateTime(date).getMS();
        }
    getTimeObject: function(timeMS) {
            var gdt = new GlideDateTime();
            gdt.setNumericValue(timeMS);
            return gdt;
        }