Mit Intrexx 5.0 ist es möglich, eine Bedingung in Groovy zu formulieren, so dass eine noch größere Bandbreite an Möglichkeiten zur Verfügung steht. In diesem Beitrag soll gezeigt werden, wie man mit diesem neuen Feature auf Requestwerte reagieren kann.

Im klassischen Antragszenario soll die Freigabe via Button-Klick ausgelöst werden. In der Applikation befinden sich zwei Speichern-Buttons, einer zur Freigabe und ein weiterer Button, um den aktuellen Stand zu speichern. Der Freigabe-Button wird mit dem zusätzlichen Request-Parameter
rq_customMyParam=release
versehen.
Im Prozess soll nun in einer Groovy-Bedingung auf diesen Parameter reagiert werden.
Um Groovy-Bedingungen zu ermöglichen, müssen zuerst die Entwicklungswerkzeuge eingeblendet werden.
Einstiegspunkt im Prozess ist der Datengruppen-Ereignisbehandler beim Einfügen oder Ändern des Datensatzes. Die darauffolgende Bedingung ist nun keine gewöhnliche Bedingung, bei der auf Datensatzwerte geprüft und verglichen werden kann, sondern eine Groovy-Bedingung.
Der Groovy-Code in der Bedingung greift auf den oben im Button definierten Request-Parameter zu und verzweigt dort in beliebig viele Äste, in diesem Beispiel in zwei. Zum einen in den Zweig, bei dem die Freigabe erteilt wurde, und zum andern in den klassischen ELSE-Zweig. Die möglichen Zweige werden durch eine return-Anweisung erzeugt, auf welche die Verbindungs-ID folgt.
Das Code-Beispiel sieht wie folgt aus:
def strReleased = g_request.get('rq_customMyParam')
if("release" == strReleased)
return releasePressed
return releaseNotPressed
In diesem Beispiel werden zwei Verbindungs-IDs definiert. Hier ist zu beachten, dass nur Namen mit Kleinbuchstaben und keine Groovy-Schlüsselwörter (wie z.B. true oder false) verwendet werden dürfen.

Im Folgenden wird nun via Datengruppenaktion der Freigabe-Status gesetzt. Damit dies auch nur im Falle der Freigabe erfolgt, wird beim Erstellen der Verbindung mit der Groovy-Bedingung die Verbindungs-ID abgefragt.
Folgendes gilt es noch zu beachten: Alle in der Groovy-Bedingung definierten Verbindungs-IDs müssen auch im Prozess als Ausgänge der Bedingung aufgenommen sein, sonst kann es zu einem Fehler in der Prozessausführung kommen.
Im vorliegenden Fall wird der Prozess beendet, wenn keine Freigabe erteilt wurde.
Somit besteht mit der Groovy-Bedingung die Möglichkeit auf Request-Werte zu reagieren, was neue Möglichkeiten in der Ablaufsteuerung schafft. Hier könnte man sich auch Verzweigungen anhand von Berechnungen vorstellen.
Hinweis:
In der Groovy-Bedingung können beliebig viele Rückgabewerte definiert werden, die anschließend als Verbindungs-IDs für verschiedenste Prozessabschnitte genutzt werden können. Hierzu eine Erweiterung des vorhandenen Beispiels:
def strReleased = g_request.get('rq_customMyParam')
if(strReleased == "release")
return releasePressed
else if(strReleased == "editing")
return editingPressed
else if(strReleased == "postponement")
return postponementPressed
return releaseNotPressed
oder auch
def strReleased = g_request.get('rq_customMyParam')
if(strReleased == "release")
return releasePressed
else if(strReleased == "editing")
return [editingPressed, sendMailPressed]
return releaseNotPressed
Die Ausgänge werden vom Prozess in derselben Reihenfolge abgearbeitet wie sie in der Liste
[editingPressed, sendMailPressed] stehen.