Die Methoden des Helper-Objektes


Um die Erstellung der Skripte zu vereinfachen, gibt es ein Hilfsobjekt, dass sich im Kontext aller Skripte befindet. Dieses Hilfsobjekt hat in allen Skripten den Namen „helper“.

Alle hier aufgeführten Funktionen können Exceptions werfen, d.h. auf Fehlersituationen angemessen reagieren. Der Administrator kann entscheiden, bei welchem Funktionsaufruf er die potenziellen Exceptions fangen möchte.

Bearbeiten von Formularen

Die folgenden Funktionen dienen der Bearbeitung von Formularen in todo4teams.

TodoTaskExtendedMetaData addMetaData(long metaDataId)

Mit dieser Funktion kann können an den aktuellen Job Formulare angehängt werden. Will man z.B. beim Eintreffen von E-Mails in einem Postfach automatisch ein Formular anfügen, so wird diese Funktion benutzt.

Der Rückgabewert ist das an das Ticket angehängte Formular. Beispiel:

var formular=helper.addMetaData(7);
TodoTaskExtendedMetaData addMetaDataByName(String metaDataName)

Dies ist eine „Convenience“-Funktion, die die obige Funktion aufruft. Zuvor ermittelt sie die zu verwendende Id über den Namen des Formulars. Ist der Name nicht eindeutig, so wird die Id des ersten ermittelten Formulars genommen.

Der Rückgabewert ist das an den Job angehängte Formular. Beispiel:

var formular=helper.addMetaDataByName('Kundendaten');
void addValueForField(TodoTaskExtendedMetaData md, String name, Object value)

Mit dieser Funktion können die Werte in einem Formular gesetzt werden. Der erste Parameter md ist das jeweilige Formular. Der zweite Parameter name ist der Name des Feldes und der dritte Parameter value ist der zu setzende Wert. Diese Funktion ist z.B. hilfreich, wenn aus einem PDF-Formular einer E-Mail automatisch Werte in ein Formular übernommen werden sollen.

TodoTaskExtendedMetaData[] getTaskMetaData()

Liefert alle Formulare des aktuellen Tickets zurück, Beispiel:

var alleFormulare=helper.getTaskMetaData();

Verändern des Routings

Mit den in diesem Abschnitt beschriebenen Funktionen kann die Adressierung von Tickets in todo4teams verändert werden. So könnte man z.B. eintreffende E-Mails oder SMS in Abhängigkeit von der Tageszeit entweder an Teams X oder an Team Y adressieren.

void routeToGroup(long groupId)

Diese Funktion kann dazu benutzt werden das aktuelle Ticket an ein beliebiges Team zu adressieren. Der Übergabeparameter ist die eindeutige Id des Teams. Das Ticket wird als 'neu'  an das adressierte Team gesendet. Eine Kopie des Tickets mit dem aktuellen Bearbeiter wird in der Datenbank abgelegt und der Historie des weitergeleiteten Tickets zugeordnet. Beispiel:

helper.routeToGroup(23);

Die Funktion

void routeToGroupByName(String groupName)

ist eine „Convenience“-Funktion, die die obige Funktion aufruft. Zuvor ermittelt sie die zu verwendende Id über den Namen des Teams. Ist der Name nicht eindeutig, so wird die Id des ersten ermittelten Teams verwendet. Beispiel:

helper.routeToGroupByName('Software-Service');

Mit der Funktion

void routeToUser(long userId)

kann das aktuelle Ticket fest an einen Benutzer adressiert werden. Der Übergabeparameter ist die eindeutige Id des Benutzers. Die Funktion sollte sparsam eingesetzt werden, da sie dem Marktplatzprinzip von todo4teams widerspricht. Beispiel:

helper.routeToUser(99);

Auch die Funktion

void routeToUserByUsername(String userName)

ist eine „Convenience“-Funktion, die die obige Funktion aufruft. Zuvor ermittelt sie die zu verwendende Id über den Benutzernamen. Ist der Name nicht eindeutig, so wird die Id der ersten ermittelten Benutzers verwendet. Beachten Sie, dass hier der Benutzername (d.h. die Anmeldekennung) einzutragen ist – nicht der reale Name.

helper.routeToUserByUsername('max.muster');

Mit der Funktion

void setOwner(long userId)

kann der Besitzer eines Tickets gewählt werden. Der Übergabeparameter ist die eindeutige Id des Besitzers. Beispiel:

helper.setOwner(27);

Auch für diese Funktion ist wiederum

void setOwnerByUsername(String userName)

eine „Convenience“-Funktion, die die obige Funktion aufruft. Zuvor ermittelt sie die zu verwendende Id über den Benutzernamen. Ist der Name nicht eindeutig, so wird die Id der ersten ermittelten Benutzers verwendet.

helper.setOwnerByUsername('max.muster');

Verändern der Zielzeit

Die folgenden Funktionen dienen dazu, die Zielzeit des aktuellen Tickets zu verändern.

void addSecondsToScheduledEndDate(int seconds)

Mit dieser Funktion werden „seconds“ Sekunden zur Zielzeit hinzuaddiert. Beispiel:

helper.addSecondsToScheduledEndDate(600);

Mit der Funktion


void setDateForScheduledEndDate(int year, int month, int day, int hour, int minute, int second)

wird das durch die Übergabeparameter bestimmte Datum und die Tageszeit als Zielzeit für das aktuelle Ticket eingestellt. Beispiel:

helper.setDateForSchedukedEndDate(2010,12,31,10,0,0);

Zugriff auf Benutzer und Teams

TodoUser[] getUser()

Diese Funktion gibt alle im System registrierten Benutzer zurück. Beispiel:

var users = helper.getUser();
var i;
for(i=0; i<users.length; i++){
 println(users[i].username);   
}
TodoWorkGroup[] getWorkGroups()

Diese Funktion gibt alle im System registrierten Teams zurück. Beispiel:

var groups = helper.getWorkGroups();

var i
for(i=0; i<groups.length; i++){
 println(groups[i].name);      
}

Bearbeiten von Anhängen

Mit den folgenden Funktionen können die Anhänge von Tickets bearbeitet werden.

TodoAttachment[] getAttachments()

Diese Funktion liefert alle in Anhänge des aktuellen Tickets zurück.

Beispiel für die Suche nach einem Dateianhang mit dem Namen Formular.pdf.:

for(ai=0;ai<helper.attachments.length;ai++){

var attachment = helper.attachments[ai];

println("Name: "+attachment.attachmentName);

if(attachment.attachmentName=="Formular.pdf"){

//...

}

}

Die Funktion

void removeAllAttachments()

entfernt alle Anhänge des aktuellen Tickets.

Beispiel für die Entfernung aller Dateianhänge von einer eingehenden E-Mail:

helper.removeAllAttachments();
void removeAttachment(String attachmentname)

Diese Funktion löscht alle Anhänge mit dem Namen „attachmentname“ des aktuellen Todo-Jobs:

Beispiel für die Entfernung des Dateianhangs mit dem Namen Formular.pdf:

helper.removeAttachments(Formular.pdf);

Bearbeiten von Strings

Diese Funktion liefert die mutmaßliche Sprache als Rückgabewert auf Basis des übergebenen Strings „input“. Im E-Mail-Eingang wird zur vereinfachten Analyse der Sprache noch die Umgebungsvariable coretext bereitgestellt. Sie wird idealerweise verwendet um die Sprache einer E-Mail zu erkennen.

String getLanguage(String input)
Beispiel für Abfrage der Sprache einer eingehenden E-Mail. Die variable coretext ist mit dem Textinhalt der E-Mail belegt.
var lang = helper.getLanguage(coretext)
if(lang==german){
//
} else ...
Object extractByRegExp(String input, String regExp, boolean multiMatch)

Extrahiert aus dem String „input“ über den regulären Ausdruck „rexExp“ die Trefferliste. Der Parameter multiMatch gibt an, ob er alle Treffer tief auswerten soll.

In diesem Beipiel wird ein HTML-Dateianhang als String eingelesen und mit einem regulären Ausdruck zerlegt. Der HTML-Code enthält eine Tabelle, in der in der ersten Spalte Namen und in der zweiten Spalte Werte stehen. Die Variablen label und value nehmen in der Schleife die jeweiligen Werte an.

// ...

var content = new
java.lang.String(attachment.attachmentContent, "UTF-8");

var fields =
helper.extractByRegExp(content,

"<tr><td>(.+?)</td><td><b>(.+?)</b></td></tr>",

true);

for(j=0;j<fields.length;j++){

try{

     var label = fields[j][0];

     var value = fields[j][1];

// ...

}
String bytesToString(byte[] bytes, String charSetName)

Diese Funktion erstellt aus der Bytefolge „bytes“ einen String. Über den Parameter „charSetName“ wird der Zeichensatz des zu erstellenden Strings festgelegt.

Beispiel: Umwandlung eines Byte-Arrays in einen String

Var s = helper.bytesToString(byteArray, UTF-8);

Bearbeiten von PDF-Anhängen

Mit diesen Funktionen können PDF-Anhänge am aktuellen Job bearbeitetet werden. Eine hier benutzte Hilfsklasse ist die Klasse PdfFormField. Beschreibt das Triple aus Feldname, Feldwert und Feldtyp zu einem Feld eines PDF-Formulars.

class PdfFormField {

String name;

String value;

String ftype;

}

PdfFormField[] getPdfFormFields(TodoAttachment pdfAttachment)

Diese Funktion liefert zum übergebenen PDF-Anhang noch die Liste aller Formularfelder .

Beispiel: Auslesen der PDF-Formularfelder aus einer PDF-Datei

for(ai=0;ai<helper.attachments.length;ai++){

var attachment = helper.attachments[ai];

println("Name: "+attachment.attachmentName);

if(attachment.attachmentName=="Formular.pdf"){

var fields = helper.getPdfFormFields(attachment);

}

}
void createFormFromPdfAttachment(TodoAttachment pdfAttachment, String formName)

Funktion zur automatische Formulargenerierung von Todo-Formularen. Hiermit kann automatisch das zu einem PDF-Formular korrespondierende Todo-Formular erzeugt werden.

Beispiel: Automatische Erzeugung eines Todo-Formulars aus einem PDF-Formular

for(ai=0;ai<helper.attachments.length;ai++){

var attachment = helper.attachments[ai];

println("Name: "+attachment.attachmentName);

if(attachment.attachmentName=="Formular.pdf"){

helper.createFormFromPdfAttachment(attachment);

}

}

Erzeugen neuer Todos

verfügbar für
☑ SMS-Skripte
☑ E-Mail-Skripte
☑ Start-Aktion
☑ End-Aktion

Die Funktion

long createTask(
int addressedGroupId,
String title,
String description,
int minutes,
int ownerId,
Map<Long, Map<String, Object>> forms,
List<ToDoAttachment> attachments)

ermöglicht die Erzeugung neuer Jobs innerhalb einer Skriptausführung. Die ID des erzeugten Jobs wird als Ergebnis zurückgegeben.

Im folgenden Beispiel wird ein Job mit angehäntem Formular und Dateianhang an die Gruppe mit der ID 17 gesendet.

var forms = new
 java.util.HashMap();

var values = new
 java.util.HashMap();

values.put(new
 java.lang.String("Name_t"), new
 java.lang.String("Bergener"));

values.put(new
 java.lang.String("Vorname_t"), new
 java.lang.String("Thomas"));

forms.put(new
 java.lang.Long(41), values);

var attachments = new
 java.util.ArrayList();

var att1 = new
 com.proxemo.todo.bom.ToDoAttachment();


att1.setAttachmentName("test1.txt");

att1.setAttachmentContent(new
 java.lang.String("some file content").getBytes());


attachments.add(att1);


var minutes = 20;

var toGroup = 17;

var owner = 0;

var id = helper.createTask(toGroup, "Create!","Just do it!", minutes, owner, forms,attachments);

Anzeige von Nachrichten

verfügbar für
☑ Absenden-Aktion
☑ Übernahme-Aktion
☑ Erledigen-Aktion

Die Funktionen dieses Abschnitts dienen der Anzeige von Nachrichten aus einem Skript heraus. Dies ist insbesondere für die Erledigen-Skripte von Formularen hilfreich. Über diese Skripte können in todo4teams vor dem Abschluss eines Jobs Konsistenzprüfungen ausgeführt werden. Schlagen diese z.B. fehl, so kann dies mit diesen Funktionen signalisiert werden.

void errorMessage(String message)

Beispiel: Anzeige einer Fehlernachricht.

helper.errorMessage(Es ist ein Fehler aufgetreten!);
void warningMessage(String message)

Beispiel: Anzeige einer Warnung

helper.warningMessage(Sie haben keinen Adressaten angegeben!);
void infoMessage(String message)

Anzeige einer Informationsnachricht.

Beispiel: Anzeigen einer Nachricht

helper.infoMessage (Vielen Dank!);

Status der Durchführung

static boolean executionWasSuccessfull(String result)

Dies ist eine „Convenience“-Funktion, die Auskunft darüber gibt, ob ein Skript erfolgreich ausgeführt wurde.