Skripts für Bereichsrechner
Sie können eine Skripteinbindung angeben, die Bereichseinschränkungen berechnet und übergeordnete Aktualisierungen auf einer Zeitleistenseite verarbeitet.
Bereichsrechnerskripts
Im Folgenden finden Sie drei Beispiele für Skripteinbindungen, die beim Festlegen von Bereichseinschränkungen helfen.
BeispielUpdateParentsRangeCalculator
Aktualisiert übergeordnete Datensätze, wenn ein untergeordneter Datensatzbereich in der Zeitleiste verschoben oder seine 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.
BeispielMinRangeCalculator
Definiert das früheste Startdatum und das späteste Enddatum für eine angegebene Zeitspanne.
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'
}BeispielMaxRangeCalculator
Definiert das früheste Startdatum und das späteste Enddatum für eine angegebene Zeitspanne.
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 zwei Funktionen, um die korrekten Start- und Enddaten in den drei Beispiel-Skripteinbindungen 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;
}