Mit Intrexx 5.0 kann ein Prozess auch ohne eine Transaktion ausgelöst werden. Dies kann beispielsweise zum Einsatz kommen, wenn Aktualisierungen über gesamte Datensätze erfolgen sollen. Benötigt werden hierfür ein JavaScript sowie ein Groovy-Prozess.
In diesem Beispiel werden Umsätze zu den einzelnen Kunden gelistet. Da die Werte sich ständig ändern, soll der Status in der Tabelle per Klick auf den Button
Aktualisieren aktualisiert werden. Der Status ist in der Applikation als Referenzfeld hinterlegt.
Prozesserstellung

Wird der Prozess ausgelöst, wird über die Groovy-Aktion ein SQL-Statement für die Aktualisierung der Daten gestartet.
Generischer Ereignisbehandler
1.1 Klicken Sie im Portalmanager auf
Prozesse und erstellen Sie einen neuen Prozess. Anschließend klicken Sie mit der rechten Maustaste auf den Reiter
Neuer Prozess und vergeben den Namen
Prozess per Button.
1.2 Aktivieren Sie jetzt unterhalb der Werkzeuge die Option
Entwicklungswerkzeuge anzeigen.
1.3 Ziehen Sie den Ereignisbehandler
Generischer Ereignisbehandler auf Ihre Arbeitsfläche, nennen Sie diesen
Button aktualisieren und klicken Sie auf
weiter. Im zweiten Dialog wählen Sie die Klasse „de.uplanet.lucy.server.workflow.eventhandler.UserWorkflowEventHandler“ aus und bestätigen Sie mit
OK.
1.4 Markieren Sie nun das Prozesselement und drücken Sie die F4 Taste. Kopieren Sie bitte die GUID. Beachten Sie, dass der Expert Modus aktiviert sein muss.
1.5 Öffnen Sie wieder das Prozesselement und klicken Sie auf
weiter. Klicken Sie jetzt auf das grüne + Symbol und wählen Sie bei Name
eventGuid aus. In das Feld
Wert fügen Sie die kopierte GUID ein.
Groovy Aktion erstellen
2.1 Ziehen Sie eine Groovy-Aktion aus der Aktionenleiste über den erstellten generischen Ereignisbehandler. Die Groovy-Aktion wird sofort mit dem Ereignisbehandler verbunden.
2.2 Benennen Sie die Groovy-Aktion
Status aktualisieren und hinterlegen Sie bitte folgendes Groovy-Script:
l_conn = g_dbConnections.systemConnection
def l_stmt = g_dbQuery.prepare(l_conn, "SELECT LID, FLT_UMSATZ_444061FB FROM XDATAGROUP8AEFA89D")
def l_rs = l_stmt.executeQuery()
l_rs.each
{
def l_recId = it.value(1)
def l_umsatz = it.value(2)
if(l_umsatz >= 15000)
{
l_typ = 1
}
else if(l_umsatz >= 5000 && l_umsatz < 15000)
{
l_typ = 2
}
else
l_typ = 3
def l_Update = g_dbQuery.prepare(l_conn,"UPDATE XDATAGROUP8AEFA89D SET REF_329B933E = ? WHERE LID = ?")
l_Update.setInt(1, l_typ)
l_Update.setInt(2, l_recId)
l_Update.executeUpdate()
l_Update.close()
}
l_rs.close()
l_stmt.close()
2.3 Bestätigen Sie danach alle Dialoge mit
OK und speichern Sie Ihren Prozess.
JavaScript erstellen
Auf der Ansichtsseite
Alle Einträge wird die Schalfläche
Aktualisieren erstellt. Diese Schaltfläche wird über ein JavaScript den soeben erstellten Prozess starten.
Öffnen Sie auf der Ansichtsseite
Alle Einträge den JavaScript-Editor und hinterlegen Sie dieses JavaScript. Beide Funktionen kommen aus der JavaScript Bibliothek.
function prozess_start(){
triggerUserWorkflowEvent("C90C388F3129EDA61114955258B660EB76543604");
makeAppRequest("6F1B4237844E1AB893200B103A42FADDCFF94384",
"AC61FF48657D8448D425D933F4BE1A1FFFA417D4", false, false, false);
}
Die Funktion triggerUserWorkflowEvent("") startet den Prozess. Dieser Funktion muss die GUID des generischen Ereignisbehandler übergeben werden. Die Guid kann per F4 Taste auf dem generischen Ereignisbehandler ermittelt werden, siehe oben.
Die Funktion makeAppRequest(strApplicationGuid, strPageGuid, false, false, true)aktualisiert nach der Prozessauslösung die Seite. Folgende Parameter müssen übergeben werden:
1. Guid: GUID der Applikation
2. Guid: Guid der Ansichtsseite
3. Der letzte Boolsche Wert muss von
true auf
false gesetzt werden. Damit wird das zu aktualisierende Fenster in der Stage (Applikationsbereich) geöffnet. Belässt man den Parameter auf
true, wird die Seite in einem neuen Fenster geöffnet.
Nachdem das Script gespeichert ist, muss es dem Onclick-Event der Schaltfläche
Aktualisieren zugewiesen werden.
Das Ziel ist erreicht. Der Prozess kann per JavaScript gestartet werden.