Tickets per Skript umadressieren
Mithilfe von Skripten können Jobs abhängig von verschiedenen Parametern automatisiert anderen Teams zugewiesen werden.
Dies kann insbesondere dann sinnvoll sein, wenn Tickets nach einer bestimmten Bearbeitungszeit nicht abgeschlossen werden und als Eskalationsprozess an eine anderes Team weitergeleitet werden sollen.
Das folgende Beispiel zeigt die prinzipielle Vorgehensweise, die Ausgangssituation ist wie folgt:
Nehmen wir an, wir wollen bei Team Nr. 100 nach Tickets suchen, die länger als vier Wochen geöffnet sind. Diese Tickets sollten zur Eskalation an Team Nr. 101 weitergeleitet werden.
Diese Tickets sollen über Nacht automatisch abgefragt und der Zielgruppe zugeordnet werden.
Wählen Sie im Hauptmenü „Skriptplanung“ und erstellen Sie ein neues geplantes Skript. Nennen Sie es „Re-Route“, z.B.
Um dieses Skript täglich um 6 Uhr auszuführen, legen Sie „0 0 6 * * ?*“ als Cron-Muster fest.
Wählen Sie die Registerkarte „Skript“ und fügen Sie den unten gezeigten Code ein.
Überprüfen Sie den Code und beachten Sie, dass die beiden Team-IDs (#100 und #101) in den ersten Zeilen festgelegt sind.
Der Code bereitet eine Archivabfrage vor, führt sie aus und iteriert über das Ergebnis.
Jedes gefundene Ticket wird dann aus den Datenbanken geladen (aktualisiert), an das neue team #101 adressiert und durch Aufruf der Aktion „ToDoUpdateSimpleTaskAction“ als „aktualisiert“ verarbeitet:
var qm = helper.getInstanceForClass("com.proxemo.todo4.bom.ToDoArchiveQueryMap");
var fromGroup = helper.getWorkgroupById(100);
var toGroup = helper.getWorkgroupById(101);
qm.setAddressedWorkgroup(fromGroup);
// Move tickets in state 0 (=open) only:
qmstate= new java.lang.Integer(0);
// Move tickets older than 4 weeks and newer than 8 weeks (to limit result set):
var d0 = new java.util.Date(java.lang.System.currentTimeMillis()-8*7*24*3600*1000); // 8 weeks
var d1 = new java.util.Date(java.lang.System.currentTimeMillis()-4*7*24*3600*1000); // 4 weeks
qm.setCreationDateRange(d0,d1);
// perform the archive query:
var qaction = helper.getInstanceForClass("com.proxemo.todo4.server.action.ToDoQueryArchiveAction");
var qresult = qaction.execute(-1, qm);
if(qresult!=null && qresult.size()!=null){
println("number of tasks to move: "+qresult.size());
if (qresult.size()>0){
for(var i =0; i<qresult.size(); i++){
println("Re-route task "+qresult.get(i).getId());
var t = qresult.get(i);
t= helper.getComponentStore().find(t.getClass(), t.getId());
t.getAddressee().setAddressedWorkgroup(toGroup);
var aaction = helper.getInstanceForClass("com.proxemo.todo4.server.action.ToDoUpdateSimpleTaskAction");
var ts = new com.proxemo.todo4.bom.ToDoTaskShell(t);
aaction.execute(-1, ts);
}
}
} else {
println("Error anonymizing tickets: No result or empty.");
}