Bevor die DLE aufgerufen wird, können Ausführungsparameter gesetzt werden, die die Ausführung steuern.
Bevor die DLE aufgerufen wird, können Ausführungsparameter gesetzt werden, die die Ausführung steuern.
Soll die DLE im Stapelverarbeitungsmodus ausgeführt werden, muß dies vor der Ausführung spezifiziert werden. In diesem Modus sind Dialoge in der Logik nicht zugelassen und die DLE wird im Falle einer Dialoganforderung mit dem Ergebniscode 13 die Logikausführung beenden.
Standardmäßig wird die DLE Logik im Dialogmodus ausgeführt, in dem Dialoganforderungen möglich sind.
// setzen des Stapelverarbeitungsmodus
dleApi.setBatchMode(true);
// setzen des Dialogmodus
dleApi.setBatchMode(false);
Nach der Ausführung der DLE Logik wird dieser Parameter wieder auf Dialogmodus gesetzt. Für eine Stapelverarbeitung muß der Parameter also jedes Mal explizit vor der Ausführung gesetzt werden.
Soll die DLE bei dem Start der Logikausführung eine eigene Transaktion explizit starten und nach erfolgreicher Ausführung diese Transaktion selbstständig bestätigen (commit), muß dies explizit angegeben werden. Im Standard wird keine eigene Transaktion gestartet und bestätigt.
// setzen eigener Transaktionsrahmen
dleApi.setCommitBeforeReturn(true);
// setzen kein eigener Transaktionsrahmen
dleApi.setCommitBeforeReturn(false);
Im Standard arbeitet die DLE mit den Spracheinstellungen der aktuellen JAVA VM. Soll die DLE bei der Ausführung mit einer anderen Spracheinstellung arbeiten, kann dies angegeben werden.
// setzen einer separaten Spracheinstellung für die DLE
dleApi.setDefaultLocale(java.util.Locale.FRANCE);
Als Parameter wird eine java.util.Locale Instanz erwartet.
Die Brickversionen sind mit einem gültig von und gültig bis Datum versehen. Zur Findung der aktuell gültigen Version wird im Standard das aktuelle Tagesdatum verwendet. Soll mit einem anderen Datum gesucht werden, kann dies durch zwei Methoden angegeben werden:
// setzen des Suchdatums mit java.util.Date
dleApi.setSearchDate(new java.util.Date());
// setzen des Suchdatums mit java.lang.String
dleApi.setSearchDate(“2005-01-25 12:00:00“);
Die DLE ist mandantenfähig, das heißt daß alle Definitionen mandantenabhängig gespeichert werden können. Erreicht wird dies indem alle DLE Daten mit einer Mandantenkennung versehen sind. Dies ist ein Integer Wert, der einen Mandanten eindeutig definiert.
Wird keine explizite Kennung gesetzt, wird die Kennung 1 verwendet.
// setzen des Mandanten
dleApi.setClientId(4);
Vor dem Aufruf der DLE kann ein Ergebnisfilter gesetzt werden, der die Ergebnisdatenmenge filtern kann. Grundsätzlich gibt die DLE alle Variablen und Datenobjekte zurück, die übergeben wurden, sowie alle Variablen und Datenobjekte, die während der Ausführung verändert wurden.
Als Filter kann eine beliebige Klasse spezifiziert werden, die das DLEObjectFilterIfc implementiert. Dieses Interface definiert zwei Methoden:
public interface DLEObjectFilterIfc
{
public Object filter(Object inObject);
public void reset();
}
Die Methode filter() wird von der DLE mit dem Variablenausdruck als Parameter (ein java.lang.String) aufgerufen. Sie sollte diesen wieder zurückgeben, wenn die zugehörige Variable oder das zugehörige Datenobjekt zur Ergebnismenge hinzugefügt werden soll. Gibt die Methode null zurück, wird die entsprechende Variable, das entsprechende Datenobjekt, nicht zur Ergebnismenge hinzugefügt. Die Methode reset() wird vor jedem DLE Aufruf aufgerufen, sie kann verwendet werden, um den Filter in einen Anfangszustand zu setzen, falls notwendig.
Mit der DLE wird schon ein vordefinierter Filter mitgeliefert, der anhand von Zeichenkettenmustern Variablen und Datenobjekte filtert. Die Klasse DLEVariableExpressionFilter bekommt im Konstruktor eine Liste von Textmustern, die angeben welche Variablenausdrücke in die Ergebnismenge aufgenommen werden sollen. Am Ende eines Textmusters kann dabei das Zeichen * gesetzt werden, um eine beliebige Zeichenkette zu spezifizieren.
String[] patterns =
{
“GLOBAL:*“,
“DEMO:Adresse.*“,
“DEMO:Auftrag.*“,
};
DLEVariableExpressionFilter filter =
new DLEVariableExpressionFilter(patterns);
dleApi.setDefaultFilter(filter);
In diesem Beispiel werden in der Ergebnismenge nur die Datenobjekte und Variablen aus dem Paket GLOBAL übernommen, sowie alle Datenobjekte und Variablen, die die Adresse und den Auftrag betreffen.
Um die Bedienung der API zu vereinfachen, kann die Liste der Textmuster auch direkt der API übergeben werden, diese erstellt dann einen eigenen internen DLEVariableExpressionFilter:
String[] patterns =
{
“GLOBAL:*“,
“DEMO:Adresse.*“,
“DEMO:Auftrag.*“,
};
dleApi.setDefaultFilter(patterns);
Soll die Ausführung der DLE in einem separaten Protokollfenster protokolliert werden, kann dies, neben der Konfiguration, auch über die API gesteuert werden.
// setzen des Protokollfensters
dleApi.setLogToWindow(true, false, true);
Die Parameter steuern das Verhalten des Protokollfensters.
Der erste Parameter gibt an, ob eine Protokollausgabe in ein separates Protokollfenster erfolgen soll oder nicht.
Der zweite Parameter gibt an, ob das Fenster bei jeder Ausgabe geöffnet werden soll, falls es zwischenzeitlich geschlossen wurde.
Der dritte Parameter gibt an, ob das Fenster minimiert (true), oder als normales Fenster (false) geöffnet werden soll.
Die DLE benutzt im Standard den Systemspezifischen Benutzernamen des derzeit angemeldeten Benutzers. Soll ein anderer verwendet werden, kann dies über die API gesetzt werden. Dieser Benutzername wird für Protokollausgaben und für die interne Variable $BASE:UserId verwendet.
// setzen des Benutzernamens
dleApi.setUserName(“demo“);
Um die DLE Dialoge modal zu einem bestehenden Fenster zu setzen, muß der DLE ein Referenzfenster übergeben werden, zu dem die durch die DLE initiierten Dialoge modal sein sollen.
Da die DLE Dialoge grundsätzlich unabhängig von der verwendeten Oberfläche sind, hängt der erwartete Parameter von dem verwendeten Dialogservice ab. Bei einer JAVA SWING/AWT basierten GUI wird als Parameter eine Instanz eines java.awt.Window erwartet. Um dieses für eine beliebige Swing Komponente zu ermitteln, kann eine einfache Schleife verwendet werden:
// Suchen der java.awt.Window Instanz
Component parent = anyComponent;
while ((parent != null) && !(parent instanceof Window))
{
parent = parent.getParent();
}
// Setzen des Referenzfensters
dleApi.setParentGUIComponent(parent);
Nach erfolgtem DLE Aufruf wird dieser Parameter wieder zurückgesetzt, es ist also explizit vor jedem Aufruf neu zu setzen.
Über die API können auch die DLE Dienste konfiguriert werden.
Welche Parameter für welche Dienste möglich sind, hängt von dem entsprechenden Dienst ab. Angesprochen werden die Dienstparameter über den Dienstnamen und den Parameternamen. Der Parameterwert wird als java.lang.Object übergeben und muß dem erwarteten Typ entsprechen.
// Setzen eines Dienstparameters
dleApi.setServiceProperty(
“WAS4JNDIService“,
“java.naming.provider.url“,
“iiop://jndihost:900“);