Migration von WebSphere Business Integration Server Foundation BPEL Java-Snippets

Im Falle von BPEL Prozessen, die Java Snippets enthalten, veranschaulicht dieser Abschnitt die Migration von der alten Java Snippet API zur neuen Java Snippet API, wobei der Datenfluss durch die Anwendung als Eclipse Service Data Objects (SDOs) gespeichert wird.

Informationen zur Durchführung von Migrationsschritten, die spezifisch sind für den Übergang von WSIFMessage zu SDO finden Sie im Abschnitt "Migration von WSIFMessage API-Aufrufen zu SDO APIs".

Wenn möglich, werden die Snippets automatisch vom Migrationsassistenten migriert, es gibt jedoch Snippets, die vom Migrationsassistenten nicht vollständig migriert werden können. Hierfür werden zusätzliche manuelle Schritte für den Abschluss des Migrationsvorgangs benötigt. Informationen zu den Java-Snippet-Typen, die manuell migriert werden müssen, finden Sie im Thema 'Einschränkungen'. Wann immer eines dieser Snippets angetroffen wird, gibt der Migrationsassistent eine Erklärung dazu ab, weshalb es nicht automatisch migriert werden kann und gibt eine Warnung oder Fehlermeldung aus.

In der folgenden Tabelle werden die Änderungen des BPEL Java-Snippet-Programmiermodells und der API von Process Choreographer Version 5.1 zu 6.0 aufgelistet:
Tabelle 1. Änderungen und Lösungen für die Migration von WebSphere Business Integration Server Foundation BPEL Java-Snippets
Änderung Lösung
WSIFMessage-basierte Wrapper-Klassen werden nicht länger für WSDL-Nachrichtentypen generiert, und auch die Java-Bean Helper-Klassen werden nicht mehr für komplexe Schementypen generiert. Auf BPEL-Variablen kann direkt über den Namen zugegriffen werden. Beachten Sie, dass BPEL-Variablen, deren WSDL-Nachrichtendefinition über einen einzelnen Abschnitt verfügt, diesen Abschnitt nun direkt darstellen, statt mit den tatsächlichen Daten in einen Wrapper eingeschlossen. Bei Variablen, deren Nachrichtentyp über mehrere Abschnitte verfügt, sind die Abschnitte in einen DataObject-Wrapper eingeschlossen (während es sich beim Wrapper in WebSphere Application Developer Integration Edition um eine WSIFMessage gehandelt hat).

Da BPEL-Variablen direkt in 6.0-Snippets verwendet werden können, besteht weniger Bedarf an lokalen Variablen als in 5.1.

Die getypten (strongly-typed) Getter für die BPEL-Variablen haben den Einschluss der Nachrichtenabschnitte mit dem Wrapper-Objekt implizit initialisiert. Es gibt kein 'Wrapper'-Objekt für BPEL-Variablen, deren WSDL-Nachrichtendefinition nur über einen einzelnen Abschnitt verfügt: in diesem Fall stellen die BPEL-Variablen den Abschnitt direkt dar (In dem Fall, in dem es sich beim einzelnen Abschnitt um einen einfachen XSD-Typ handelt, wird die BPEL-Variable als Java-Objekt-Wrappertyp wie beispielsweise java.lang.String, java.lang.Integer, etc. dargestellt). BPEL-Variablen mit WSDL-Nachrichtendefinitionen mit mehreren Abschnitten werden anders gehandhabt: die Abschnitte sind nach wie vor in einen Wrapper eingeschlossen und dieser DataObject-Wrapper muss explizit im 6.0 Java-Snippetcode initialisiert werden, wenn er noch nicht durch eine vorherige Operation eingerichtet wurde.

Wenn irgendwelche der lokalen Variablen aus den 5.1-Snippets über denselben Namen wie die BPEL-Variable verfügen, kann es zu Konflikten kommen, versuchen Sie daher, diese Situation wenn möglich zu lösen.

WSIFMessage-Objekte werden nicht länger für die Darstellung von BPEL-Variablen verwendet. Wenn irgendwelche der benutzerdefinierten Java-Klassen, die aus den Java-Snippets aufgerufen werden, über einen WSIFMessage-Parameter verfügen, muss dieser migriert werden, so dass er ein DataObject akzeptiert/ablehnt.
Getypte Getter-Methoden für BPEL-Variablen sind nicht länger verfügbar. Auf die Variablen kann direkt über den Namen zugegriffen werden. Beachten Sie, dass BPEL-Variablen, deren WSDL-Nachrichtendefinition über einen einzelnen Abschnitt verfügt, diesen Abschnitt nun direkt darstellen, statt mit den tatsächlichen Daten in einen Wrapper eingeschlossen. Bei Variablen, deren Nachrichtentyp über mehrere Abschnitte verfügt, sind die Abschnitte in einen DataObject-Wrapper eingeschlossen (während es sich beim Wrapper in WebSphere Application Developer Integration Edition um eine WSIFMessage gehandelt hat).
Getypte Setter-Methoden für BPEL-Variablen sind nicht länger verfügbar. Auf die Variablen kann direkt über den Namen zugegriffen werden. Beachten Sie, dass BPEL-Variablen, deren WSDL-Nachrichtendefinition über einen einzelnen Abschnitt verfügt, diesen Abschnitt nun direkt darstellen, statt mit den tatsächlichen Daten in einen Wrapper eingeschlossen. Bei Variablen, deren Nachrichtentyp über mehrere Abschnitte verfügt, sind die Abschnitte in einen DataObject-Wrapper eingeschlossen (während es sich beim Wrapper in WebSphere Application Developer Integration Edition um eine WSIFMessage gehandelt hat).
Ungetypte Getter-Methoden für BPEL-Variablen, die eine WSIFMessage zurückgeben, sind nicht länger verfügbar. Auf die Variablen kann direkt über den Namen zugegriffen werden. Beachten Sie, dass BPEL-Variablen, deren WSDL-Nachrichtendefinition über einen einzelnen Abschnitt verfügt, diesen Abschnitt nun direkt darstellen, statt mit den tatsächlichen Daten in einen Wrapper eingeschlossen. Bei Variablen, deren Nachrichtentyp über mehrere Abschnitte verfügt, sind die Abschnitte in einen DataObject-Wrapper eingeschlossen (während es sich beim Wrapper in WebSphere Application Developer Integration Edition um eine WSIFMessage gehandelt hat).
Beachten Sie, dass es zwei Variationen der getVariableAsWSIFMessage-Methode gab:
getVariableAsWSIFMessage(String variableName)getVariableAsWSIFMessage(String variableName, boolean forUpdate)
Der Standardzugriff auf eine Java-Snippet-Aktivität ist der Schreib-/Lesezugriff. Diese Standardeinstellung können Sie in einen Lesezugriff ändern, indem Sie @bpe.readOnlyVariables mit der Liste der Variablennamen in einem Kommentar im Snippet angeben. Beispiel: Eine Festlegung der Variablen B und D als Lesezugriff könnte folgendermaßen aussehen:
variableB.setString("/x/y/z", variableA.getString("/a/b/c")); // @bpe.readOnlyVariables names="variableA"
variableD.setInt("/x/y/z", variableC.getInt("/a/b/c")); // @bpe.readOnlyVariables names="variableC"

Falls Sie ein Java-Snippet in einer Bedingung verwenden, sind Variablen standardmäßig schreibgeschützt. Sie können dies jedoch in einen Schreib-/Lesezugriff ändern, indem Sie @bpe.readWriteVariables... angeben.

Ungetypte Setter-Methoden für BPEL-Variablen sind nicht länger verfügbar. Auf die Variablen kann direkt über den Namen zugegriffen werden. Beachten Sie, dass BPEL-Variablen, deren WSDL-Nachrichtendefinition über einen einzelnen Abschnitt verfügt, diesen Abschnitt nun direkt darstellen, statt mit den tatsächlichen Daten in einen Wrapper eingeschlossen. Bei Variablen, deren Nachrichtentyp über mehrere Abschnitte verfügt, sind die Abschnitte in einen DataObject-Wrapper eingeschlossen (während es sich beim Wrapper in WebSphere Application Developer Integration Edition um eine WSIFMessage gehandelt hat).
Ungetypte Getter-Methoden für Nachrichtenabschnitte von BPEL-Variablen sind nicht geeignet für Nachrichten mit einem einzelnen Abschnitt und haben sich für Nachrichten mit mehreren Abschnitten geändert. Migrieren Sie zu der ungetypten Getter-Methode für die Eigenschaften von BPEL- Variablen (DataObjects).

Beachten Sie, dass BPEL-Variablen, deren WSDL-Nachrichtendefinition über einen einzelnen Abschnitt verfügt, diesen Abschnitt direkt darstellen, und auf die Variable sollte direkt ohne Verwendung einer Getter-Methode zugegriffen werden.

Es gab zwei Variationen der getVariablePartAsObject-Methode:
getVariablePartAsObject(String variableName, String partName)
getVariablePartAsObject(String variableName, String partName,boolean forUpdate)
Bei Nachrichten mit mehreren Abschnitten wird entsprechende Funktionalität durch diese Methode in 6.0 geboten:
getVariableProperty(String variableName, QName propertyName);

In 6.0 gibt es keinen Vorgang für die Verwendung einer Variablen für schreibgeschützten Zugriff (dies war der Fall für die erste Methode oben sowie die zweite Methode mit forUpdate='false'). Die Variable wird direkt im 6.0 Snippet verwendet und kann jederzeit aktualisiert werden.

Ungetypte Setter-Methoden für Nachrichtenabschnitte von BPEL-Variablen sind nicht geeignet für Nachrichten mit einem einzelnen Abschnitt und haben sich für Nachrichten mit mehreren Abschnitten geändert. Migrieren Sie zu der ungetypten Setter-Methode für die Eigenschaften von BPEL- Variablen (DataObjects).

Beachten Sie, dass BPEL-Variablen, deren WSDL-Nachrichtendefinition über einen einzelnen Abschnitt verfügt, diesen Abschnitt direkt darstellen, und auf die Variable sollte direkt ohne Verwendung einer Setter-Methode zugegriffen werden.

Aufrufe der folgenden Methode müssen migriert werden:
setVariableObjectPart(String variableName, String partName, Object data)
Bei Nachrichten mit mehreren Abschnitten wird entsprechende Funktionalität durch diese Methode in 6.0 geboten:
setVariableProperty(String variableName, QName propertyName,Serializable value);
Getypte Getter-Methoden für BPEL-Partnerverbindungen sind nicht länger verfügbar. Migrieren Sie zu den ungetypten Getter-Methoden für BPEL-Partnerverbindungen.
Getypte Setter-Methoden für BPEL-Partnerverbindungen sind nicht länger verfügbar. Migrieren Sie zu den ungetypten Setter-Methoden für BPEL-Partnerverbindungen.
Getypte Getter-Methoden für BPEL-Korrelationsgruppen sind nicht länger verfügbar.
V5.1-Snippet:
String corrSetPropStr = getCorrelationSetCorrSetAPropertyCustomerName();
int corrSetPropInt = getCorrelationSetCorrSetBPropertyCustomerId();
V6.0-Snippet:
String corrSetPropStr = (String) getCorrelationSetProperty(“CorrSetA”, new  						QName(“CustomerName”));
int corrSetPropInt = ((Integer) getCorrelationSetProperty (“CorrSetB”, new  						QName(“CustomerId”))).intValue();
Zusätzlicher benötigter Parameter für die ungetypten Getter-Methoden für benutzerdefinierte BPEL-Aktivitätseigenschaften.
V5.1-Snippet:
String val = getActivityCustomProperty(“propName”);
V6.0-Snippet:
String val = getActivityCustomProperty(“name-of-current-activity”, “propName”);
Zusätzlicher benötigter Parameter für die ungetypten Setter-Methoden für benutzerdefinierte BPEL-Aktivitätseigenschaften.
V5.1-Snippet:
String newVal = “new value”;
setActivityCustomProperty(“propName”, newVal);
V6.0-Snippet:
String newVal = “new value”;
setActivityCustomProperty(“name-of-current-activity”, “propName”, newVal);
Die Methode raiseFault(QName faultQName, Serializable message) ist nicht mehr verfügbar. Migrieren Sie wenn möglich zu raiseFault(QName faultQName, String variableName); ansonsten migrieren Sie zur Methode raiseFault(QName faultQName) oder erstellen Sie eine neue BPEL-Variable für das serialisierbare Objekt.
Zugehörige Tasks
Migration von WSIFMessage API-Aufrufen zu SDO APIs
Zugehörige Verweise
Einschränkungen des Migrationsprozesses (für Quellenartefaktmigration)

Feedback
(C) Copyright IBM Corporation 2005, 2006. Alle Rechte vorbehalten.