Die Anforderung, ein Extranet für Kunden bereitzustellen wird immer häufiger gestellt. Jetzt steht man vor der Aufgabe, die bestehenden Daten aus dem internen Portal an das externe Portal zu übergeben. Die Datenhaltung soll möglichst automatisiert direkt aus dem internen Portal erfolgen, ohne die Daten mehrfach eingeben zu müssen. Hierfür lassen sich Web Services einsetzen.

Ausgangspunkt ist eine Produktliste im internen Portal. Die Artikel sollen, sobald diese freigegeben sind, an das externe Portal übertragen werden. Die Schwierigkeit besteht darin, per Webservice zu entscheiden, ob der Artikel im Extranet hinzugefügt oder aktualisiert werden muss, wenn dieser bereits im Extranet vorhanden ist.

Voraussetzungen
1. Im Extranet muss es einen Webservice mit folgenden Methoden geben: Auflisten, Einfügen, Ändern und Löschen.
getProductList Auflisten der Produkte
- insertProduct Einfügen eines Produktes
- updateProduct Ändern eines Produktes
- deleteProduct Löschen des Produktes


2. Zusätzlich muss ein Prozess bestehen, der auf die Aktionen Einfügen, Ändern und Löschen reagiert.

Webservice im Extranet


Integrationscenter
Produktliste im internen Portal


Intranet
Produktliste im Extranet


Extranet
Prozess


Prozess


Wird ein Datensatz bei Eingabe im internen Portal sofort für das Web freigegeben, wird dieser über den Webservice übertragen. Wird ein freigegebener Datensatz gelöscht, wird dieser auch im Extranet sofort gelöscht.

Wird ein Produkt allerdings erst später für das Web freigegeben, muss der Webservice erkennen, ob der Datensatz im Extranet bereits vorhanden ist. Ist dieser vorhanden, dann muss der bestehende Datensatz aktualisiert werden, ansonsten muss dieser hinzugefügt werden.

Die gleiche Prüfung muss auch stattfinden, wenn einem Produkt zu einem späteren Zeitpunkt die Webfreigabe entzogen wird. Dann muss dieser Datensatz gelöscht werden.

Der Prozess für das Ändern mit der Bedingung Freigabe = wahr beinhaltet die Webservice Methoden in der folgenden Reihenfolge: IntrexxLogin, getProductList, updateProduct, insertProduct und Logout.

Webservice Methode getProductList
Im Reiter "Output" muss eine benutzerdefinierte Variable hinterlegt werden. Folgende Felder müssen gefüllt werden:

Namespace http://schemas.unitedplanet.de/intrexx/variable/bpee-dynamic/ Über die Adressierung des Namensraumes im Bpee-Kontext bpee-dynamic kann auf Variablen lesend und schreibend zugegriffen werden.
Local part ResponseProductId Es kann ein beliebiger Variablennamen gewählt werden.


Nach Definition der benutzerdefinierten Variablen muss über die Pfeiltasten die ID zwingend zugewiesen werden.

Aktion1


Groovy Script
Nachdem die oberen Einstellungen durchgeführt wurden, ruft man per Doppelklick die Eigenschaften der Webservice Methode auf. Hier wechselt man in den Reiter Script. Sobald Groovy Scripte einer Webservice-Methode hinterlegt wurden, muss zwingend die Zeile g_ws.invoke() eingetragen werden, da ansonsten der Webservice nicht ausgeführt wird.

Mit dem folgenden Script wird geprüft, ob ein Datensatz bereits vorhanden ist.

g_ws.invoke()

if(g_ctx.bpeeDynamicVars.getAt("ResponseProductId.getProductListResponse_0.
item_0.ID_0") == null)
     g_ctx.sessionVars.putAt("bProductIdWasNull", true)
else
     g_ctx.sessionVars.putAt("bProductIdWasNull", false)

g_log.info("CALLED getProductId")

Ist kein Datensatz vorhanden, wird der Variablen bProductIdWasNull der Wert true übergeben. Ist ein Datensatz vorhanden, wird false übergeben. Entscheidend ist der Wert der benutzerdefinierten Variablen, die wir oben mit ResponseProductId bezeichnet haben.

Aufbau des Parameters
ResponseProductId.getProductListResponse_0.item_0.ID_0

Name der benutzerdefinierten Variablen ResponseProductId
Name der Webservice Methode getProductList
Ergänzung durch IX Response_
Die Ergebnismenge wird gezählt, beginnend bei 0 0
Ergänzung durch IX item_
Die Ergebnismenge wird gezählt, beginnend bei 0 0
Name des Datenfeldes, welches zurückgegeben wird. Sollten andere Felder zurückgegeben werden, so muss der entsprechende Name verwendet werden. ID
Die Ergebnismenge wird gezählt, beginnend bei 0 0

Nachdem die Webservice Methode durchgeführt wurde, gibt es die Variable bProductIdWasNull, die in den folgenden Methoden updateProduct und insertProduct überprüft wird.

Script Methode
if(g_ctx.sessionVars.bProductIdWasNull == false)
{
     g_ws.invoke()
}
updateProduct
if(g_ctx.sessionVars.bProductIdWasNull == true)
{
     g_ws.invoke()
}
insertProduct

Die if-Schleife prüft den Wert der Variablen und führt mit g_ws.invoke() die Webservice-Methode aus. Trifft die Bedingung nicht zu, wird die Webservice-Methode nicht ausgeführt.

Für den Prozess für das Ändern und Freigabe = Falsch muss das gleiche Groovy Script auf der Methode getProductList hinterlegt werden. Das Löschen eines Datensatzes darf nur erfolgen, wenn die Methode getProductList einen Datensatz zurückgibt. D.h., auf der deleteProduct Methode wird das Script wie bei updateProduct hinterlegt.

Das Ziel ist erreicht. Werden Datensätze im internen Portal eingefügt, geändert oder gelöscht werden diese Aktionen sich im Extranet auswirken.
United Planet
Intrexx Application Store Presse Downloads
Deutsch