Einschränkungen bei der Migration von Nachrichtenzuordnungen

Es gibt bestimmte Szenarios, in denen die Migration von .mfmap-Dateien nicht unterstützt wird. In diesem Abschnitt wird erläutert, weshalb die Migration in diesen Situationen nicht automatisch durchgeführt wird. Außerdem enthält dieser Abschnitt Anweisungen zur Durchführung einer erfolgreichen Migration.

Das Programmiermodell für Nachrichtenzuordnungen in Version 5.0 (mit dem Dateiformat 'mfmap') unterscheidet sich in wesentlichen Punkten von dem Programmiermodell in Version 6.0 (mit dem Dateiformat 'msgmap'). Das Programmiermodell für Nachrichtenzuordnungen in Version 5.0 ist ein prozedurales Programmiermodell, das im Grunde genommen eine Alternative zu ESQL darstellt. In diesem Modell werden alle erforderlichen Schritte für die Durchführung einer Umsetzung beschrieben. In Version 6.0 wird ein deklaratives Programmiermodell verwendet. In diesem Modell wird das Ergebnis der Umsetzung beschrieben; über die Tools wird festgelegt, wie das Ergebnis erzielt wird.

Die meisten Migrationsfehler sind darauf zurückzuführen, dass die Nachrichtenzuordnungen zu viele Informationen zu den Schritten für die Umsetzung und zu wenig Informationen zu dem gewünschten Ergebnis enthalten. Für diese Nachrichtenzuordnungen wird die Migration aktiviert, indem die MFMAP-Datei geändert wird, so dass bestimmte Abschnitte zur Vorgehensweise gesondert in eine ESQL-Funktion oder -Prozedur geschrieben werden, die von der Nachrichtenzuordnung aufgerufen werden kann. ESQL wird von der .mfmap-Datei aufgerufen und ist nicht in der Datei als Ausdruck enthalten. Mit dem Befehl mqsimigratemfmaps wird dann die MFMAP-Datei migriert. Es wird jedoch kein Migrationsfehler protokolliert, sondern ESQL wird aufgerufen.

Eine Einschränkung besteht darin, dass ESQL (die Laufzeit für MFMAP- und MSGMAP-Dateien) keine Funktionen definieren kann, die komplexe Elementwerte (Werte des Typs REFERENCE) zurückgeben. In der folgenden Prozedur wird erläutert, wie diese Einschränkung für komplexe Elemente umgangen werden kann; in vielen Fällen muss die Zuordnung als ESQL neu geschrieben werden. Weitere Beispiele und Informationen zum Aufrufen von ESQL aus Zuordnungen finden Sie im WebSphere Message Brokers-Beispiel unter Hilfe > Beispielgalerie > Technologiebeispiele > Nachrichtenbroker > Nachrichtenzuordnung.

  1. Stellen Sie fest, ob Sie eine ESQL-Funktion für die .mfmap-Datei definieren können.
    1. Wenn es sich beim Zielwert um ein komplexes Element oder um den ESQL-Typ REFERENCE handelt, muss die einzelne Zuordnung in der MSGMAP-Datei neu geschrieben werden. Löschen Sie die Zuordnung aus der MFMAP-Datei, und fahren Sie mit Schritt 4 fort.
    2. Verwenden Sie in allen anderen Fällen eine Funktion: Zeichenfolge, Zahlen, Datum und Uhrzeit. Fahren Sie mit Schritt 2 fort.
  2. Bestimmen Sie die Quellenparameter und den Rückgabetyp für Ihre Funktion.
    1. Für alle Quellenpfade in der Zuordnung muss es jeweils einen Parameter in der Funktion bzw. Prozedur geben. Bei einer Funktion können die Parameter nicht geändert werden. Der Parametertyp muss dem Quellendatentyp entsprechen.
    2. Der Funktionsrückgabetyp entspricht dem zuvor identifizierten ESQL-Datentyp.
  3. Aktualisieren Sie die MFMAP-Datei, um die Migration zu aktivieren. Ändern Sie die MFMAP-Datei, um die Funktion in der Zuordnung aufzurufen, und übergeben Sie der Funktion die Quellenparameter in der Reihenfolge, in der sie in Schritt 2a aufgelistet sind.
  4. Führen Sie den Befehl mqsimigratemfmaps erneut aus, um die modifizierte MFMAP-Datei zu migrieren.
  5. Wiederholen Sie die Schritte 1 bis 4, bis keine Fehler mehr im Migrationsprotokoll enthalten sind.
  6. Starten Sie das Message Brokers Toolkit der Version 6.0, und öffnen sie die migrierte MSGMAP-Datei.
    1. Für ESQL-Ausdrücke, die als Funktionen migriert wurden, sollten keine Fehler auftreten.
    2. Für komplexe Elementziele sollten Sie die Zuordnung unter Verwendung der Version 6.0-Funktionen neu schreiben.
Die folgenden Beispiele veranschaulichen die Migration von MFMAP-Dateien in MSGMAP-Dateien.
  • Gehen Sie wie folgt vor, um einen Mehrfachverweis auf einen sich wiederholenden Quellenausdruck zu migrieren:
    src_msg.e[1] + src_msg.e[2]  
    Berechnen Sie das Ergebnis in einer ESQL-Funktion:
    CREATE FUNCTION addOneAndTwo(IN src_msg)
                 BEGIN
    	RETURN src_msg.e[1] + src_msg.e[2]; 	
                 END;
    Rufen Sie in der MSGMAP-Datei die ESQL-Funktion 'addOneAndTwo' unter Verwendung des übergeordneten Elements 'src_msg' als Parameter auf.

  • Ein Ausdruck, der keine Elementnamen verwendet
    src_msg.* 
    oder
    src_msg.*[]  	
    kann unter Verwendung einer Funktion verarbeitet werden, die das übergeordnete Element des Wiederholungsfeld verarbeitet:
    CREATE FUNCTION processAny(IN src_msg)  	
    BEGIN 		
    	DECLARE nodeRef REFERENCE TO src_msg.e.*; 		
    DECLARE result <dataType> <initialValue>;
    	WHILE LASTMOVE nodeRef DO 			
    		--expression goes here 			
    		SET result = result; 		
    END WHILE;	RETURN RESULT; 	
                 END;
    Rufen Sie in der MSGMAP-Datei die ESQL-Funktion unter Verwendung des übergeordneten Elements 'src_msg' als Parameter auf.

  • Ausdrücke, die Elementnamen dynamisch berechnen
    src_msg.{'a' || 'b'}  
    , können von Funktionen verarbeitet werden, die das übergeordnete Element des Wiederholungsfeld verarbeiten:
    CREATE FUNCTION processDynamicName(IN src_msg)  	
    BEGIN 		
    	RETURN src_msg.{'a' || 'b'}; 	
                 END;
    Rufen Sie in der MSGMAP-Datei die ESQL-Funktion unter Verwendung des übergeordneten Elements 'src_msg' als Parameter auf.

  • Ausdrücke, die die Funktionen MIN, MAX und COUNT verwenden:
    SELECT MAX("#T".FIRSTNAME)  		
    	FROM Database.CUSTOMER AS "#T"  		
    	WHERE "#T".CUSTOMERID = custId  
    , können von Funktionen verarbeitet werden, die das übergeordnete Element des Wiederholungsfeld verarbeiten:
    CREATE FUNCTION processMAX(IN custId)  	
    BEGIN 		
    	RETURN  			
    	SELECT MAX("#T".FIRSTNAME) 				
    		FROM Database.CUSTOMER AS "#T" 				
    		WHERE "#T".CUSTOMERID = custId 	
                 END;
    Rufen Sie in der MSGMAP-Datei die ESQL-Funktion unter Verwendung des Elements 'custId' als Parameter auf.

  • MFMAPs, die MFMAP-Indexvariablen in Ausdrücken verwenden:
    e || "#I"  
    müssen in ESQL vollständig neu geschrieben werden. Laut Definition muss ein komplexes übergeordnetes Wiederholelement vorhanden sein. Dies wird von ESQL-Funktionen nicht unterstützt.

  • Ausdrücke, die Quellenausdrücke für die Berechnung von Werten verwenden:
    src_msg.e[src_msg.a]  
    müssen unter Verwendung von 'if'-Zeilen, 'msgmap:occurrence()'-Funktionen und ESQL-Funktionen neu geschrieben werden:
    for src_msg.e 		
    	if 			
    		condition msgmap:occurrence(src_msg/e) = src_msg/a 

  • Für Ausdrücke, die Indexausdrücke für die Berechnung von Werten verwenden:
    src_msg.e["#I" +5] 	
    src_msg.e[< 3]  
    muss die gesamte MFMAP-Datei in ESQL neu geschrieben werden, da der indexierte Zugriff auf Wiederholfelder von MGSMAP-Dateien noch nicht unterstützt wird.

  • MFMAP-Dateien, die ROW-Ausdrücke für die Berechnung von Werten verwenden:
    src_msg.e IN (1, 2, 3)  
    müssen in ESQL neu geschrieben werden, da ESQL-ROW-Ausdrücke von MSGMAP-Dateien nicht unterstützt werden.
Zugehörige Tasks
ESQL erstellen
Zugehörige Verweise
Befehl 'mqsimigratemfmaps'
Nachrichtenzuordnungen von Version 5.0 migrieren
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ar25255_