Nach einem DLE Durchlauf, erfolgreich oder nicht, werden die Ergebnisse in einer DLEResult Instanz zurückgegeben. Hier sind verschiedene Informationen hinterlegt, die weiter verarbeitet werden können.
Nach einem DLE Durchlauf, erfolgreich oder nicht, werden die Ergebnisse in einer DLEResult Instanz zurückgegeben. Hier sind verschiedene Informationen hinterlegt, die weiter verarbeitet werden können.
Der Ergebniscode kann über die Methode getReturncode() abgefragt werden. Es handelt sich dabei um einen ganzzahligen Wert, der den Erfolg oder Mißerfolg des Aufrufs angibt.
Die möglichen Werte sind dabei in Gruppen organisiert, grundsätzlich gilt, daß ein Code zwischen 1 und 9 einen erfolgreichen Durchlauf widerspiegelt. Alle Werte über 9 deuten auf einen Fehler hin
| Gruppe | Code | Beschreibung |
|---|---|---|
| 1-9 OK | 1 | Durchlauf OK, ohne Fehler |
| 2 | Durchlauf OK, kein Brick wurde gefunden. | |
| 10-19 Abbruch | 10 | Abbruch durch einen Brick |
| 11 | Abbruch durch Benutzer (im Dialog) | |
| 13 | Abbruch aufgrund einer Dialoganforderung im Batchmode. | |
| 30-39 Interne Fehler | 30 | Anzahl der maximalen Schachtelungstiefe überschritten. Siehe Parameter BrickCallStack im Kapitel Konfiguration. |
| 34 | Brick konnte nicht geladen und gestartet werden. | |
| 90-100 Ausnahmefehler | 90 | Ein Ausnahmefehler ist aufgetreten. |
Sollte ein Fehler aufgetreten sein, kann über die Methode getErrorKey() der Fehlerschlüssel, über die Methode getErrorMessage() die Fehlernachricht und über die Methode getErrorDetail() optionale Detailinformationen zum Fehler abgerufen werden.
Alle Variablen, die übergeben oder innerhalb der DLE verändert wurden und die nicht herausgefiltert wurden (siehe Seite 28), werden in der DLEResult Struktur zurückgegeben.
Die Variablen und ihre Werte können über die Methode getResultVariables() abgefragt werden. Zurückgegeben wird eine java.util.Map Instanz, die im Schlüssel die Variablennamen und im Wert das Werteobjekt enthält. Das Werteobjekt kann durch die toString() Methode am einfachsten ausgelesen werden.
dleApi.setVariable(“GLOBAL:Gewicht“, “22.5“);
DLEResult dleResult = dleApi.execute();
Map variables = dleResult.getResultVariables();
String gewicht = variables.get(“GLOBAL:Gewicht“).toString();
Genauso wie Variablen, werden auch alle übergebenen Datenobjekte und alle Datenobjekte, die innerhalb der DLE verändert wurden, in der DLEResult Struktur zurückgegeben, sofern sie nicht herausgefiltert wurden.
Wurde in der Session der Parameter AddInputObjectsToResult auf False gesetzt, werden die übergebenen Datenobjekte nicht automatisch zum DLEResult hinzugefügt, sondern erst wenn sie in der DLE verändert wurden. Standardmäßig steht der Parameter auf True.
Um eine Liste aller Datenobjektnamen zu bekommen, dient die Methode getResultObjectNames():
java.util.Set names = dleResult.getResultObjectNames();
java.util.Iterator iter = names.iterator();
while (iter.hasNext())
{
System.out.println(“Name: “ + iter.next());
}
Alle Ergebnisobjekte für einen Datenobjektnamen erhält man mit der Methode getResultObjects(String dataObjectName). Diese liefert eine java.util.List Instanz mit allen Ergebnisobjekten des angegebenen Typs zurück. Falls keine Objekte dieses Typs im Ergebnis existieren, wird null zurückgegeben. Die Liste enthält für jedes Datenobjekt eine java.util.Map Instanz, die die Datenobjektattribute (mit Namen und Wert) enthält.
List adressen = dleResult.getResultObjects(“DEMO:Adresse“);
if (adressen != null)
{
for (int i = 0; i < adressen.size; i++)
{
System.out.println(“Objekt “ + (i + 1));
Map adresse = (Map) adressen.get(i);
Iterator attributes = adresse.keySet().iterator();
while (attributes.hasNext())
{
String name = (String) attributes.next();
System.out.println(name + “=“ attributes.get(name));
}
}
}
Neben Daten kann die DLE auch Instruktionen an die aufrufende Applikation zurückgeben. Diese können durch spezielle Kommandos innerhalb der DLE gesetzt oder hinzugefügt werden und müssen nach erfolgtem DLE Aufruf durch die aufrufende Applikation verarbeitet werden.
Ein Beispiel für solch eine Instruktion ist das SETZENFOCUS Kommando der DLE. Hier wird von der DLE eine Instruktion an die Anwendung zurückgegeben, den Fokus neu zu setzen. Die Applikation muß diese Instruktion dann entsprechend umsetzen.
Über die Methode getInstructions() erhält man eine java.util.List Instanz aller Instruktionen, in der Reihenfolge in der sie durch die DLE hinzugefügt wurden. Eine Instruktion ist dabei eine java.util.Map Instanz, die den Instruktionsnamen und optionale Instruktionsparameter enthält. Die Parameter sind mit Parametername und Parameterwert in der Map. Der Instruktionsname ist mit dem speziellen Namen INSTRUCTION_NAME als Wert in der Map hinterlegt. Für den Instruktionsnamen ist im DLEResult eine Konstante hinterlegt.
List instructions = dleResult.getInstructions();
for (int i = 0; i < instructions.size; i++)
{
Map instruction = (Map) instructions.get(i);
String name =
(String) instruction.get(DLEResult.INSTRUCTION_NAME);
}
Sind keine Instruktionen vorhanden, wird eine leere Liste zurückgegeben, es muß also nicht auf einen null Wert geprüft werden.