Hinweise und Tipps zu Zuordnungen und Einschränkungen

Bei diesen Hinweisen und Tipps wird davon ausgegangen, dass Sie bereits einen Zuordnungsknoten innerhalb des Nachrichtenflusses erstellt, das Zuordnungseditor für Nachrichten geöffnet und sowohl eine Quellen- als auch eine Zielnachricht ausgewählt haben:

Ein sich nicht wiederholendes Zielfeld definieren, das gleich einem sich nicht wiederholenden Quellenfeld ist.

  1. Ziehen Sie das Quellenfeld aus dem Teilfenster für die Zuordnungseditor für Nachrichten-Quelle, und übergeben es auf dem Zielfeld.

Ein sich wiederholendes Zielfeld definieren, das gleich einem sich wiederholenden Quellenfeld ist (For).

  1. Ziehen Sie das sich wiederholende Quellenfeld aus dem Teilfenster für die Zuordnungseditor für Nachrichten-Quelle, und übergeben es auf dem sich wiederholenden Zielfeld.
  2. Klicken Sie vom Spreadsheet aus mit der rechten Maustaste auf das sich wiederholende Zielfeld, und wählen Sie For im Dialogfenstermenü aus. Ein Eintrag For erscheint im Spreadsheet.
  3. Klicken Sie auf den Eintrag For, ziehen Sie das sich wiederholende Quellenfeld, und übergeben Sie es auf dem Teilfenster zum Bearbeiten unmittelbar oberhalb des Spreadsheets.

Eine Bedingung zum Verschieben eines Feldes definieren (If)

  1. Ziehen Sie die Quelle aus dem Teilfenster für die Zuordnungseditor für Nachrichten-Quelle, und übergeben Sie sie auf dem Ziel.
  2. Klicken Sie vom Spreadsheet aus mit der rechten Maustaste auf das Zielfeld, und wählen Sie im Dialogfenstermenü If aus. Ein Eintrag If erscheint im Spreadsheet.
  3. Erweitern Sie den Eintrag If. Darunter erscheint eine Bedingung mit fn:true() als ihrem Standardwert.
  4. Klicken Sie auf die Bedingung fn:true(). Die Bedingung erscheint im Teilfenster zum Bearbeiten unmittelbar oberhalb des Spreadsheets.
  5. Löschen Sie den Wert fn:true().
  6. Ziehen Sie die Quellenfelder in das Teilfenster zum Bearbeiten unmittelbar oberhalb des Spreadsheets.
  7. Bearbeiten Sie die Quellenfelder, indem Sie die erforderlichen Bedingungen hinzufügen. Beispiel: $source/Parent/SaleList/Invoice/Initial = 'K' ist das Äquivalent der ESQL-Operation IF InputRoot.Parent.SaleList.Invoice.Initial = 'K' THEN.

Eine Ungleichheitsbedingung definieren

Wenn Sie wollen, dass die Bedingung ein anderes Verhältnis als Gleichheit (=) beschreibt:
Ungleich: !=
Größer als >
Größer oder gleich >=
Kleiner als <
Kleiner oder gleich <=

Beispiel: $source/Parent/SaleList/Invoice/Surname != 'Shop'

Eine alternative Bedingung zum Verschieben eines Feldes definieren (Else)

  1. Führen Sie aus dem Zuordnungseditor für Nachrichten heraus die Schritte aus, die in Abschnitt Eine Bedingung zum Verschieben eines Feldes definieren (If) aufgelistet sind.
  2. Klicken Sie mit der rechten Maustaste auf den Eintrag für die Bedingung, und wählen Sie 'Else' im Dialogfenstermenü aus. Ein 'Else'-Eintrag erscheint unterhalb der 'Else'-Zeile. Dabei sollte es sich um dasselbe Zielfeld handeln, das auch in der ursprünglichen Bedingung If > Condition enthalten ist.
  3. Definieren Sie die erforderlichen Werte für die Zielfelder.

Für ein Zielfeld einen festen Wert definieren

Wenn das Zielfeld im Spreadsheet sichtbar ist, gehen Sie wie folgt vor:
  1. Klicken Sie im Zuordnungseditor für Nachrichten-Spreadsheet auf die Zeile, die das Zielfeld enthält, und geben Sie den Wert entweder in der zweiten Spalte des Spreadsheets oder im Teilfenster zum Bearbeiten unmittelbar oberhalb des Spreadsheets ein. (Das Teilfenster zum Bearbeiten unmittelbar oberhalb des Spreadsheets erhält in diesem Fall den Fokus, weil Sie zuvor auf das Zielfeld im Spreadsheet geklickt haben.)
  2. Wenn Sie den Zielwert eingegeben haben, drücken Sie die Eingabetaste (Zeichenfolgefelder müssen in einfache Anführungszeichen verschachtelt werden).
Wenn das Zielfeld im Spreadsheet nicht sichtbar ist, gehen Sie wie folgt vor:
  1. Klicken Sie im Zuordnungseditor für Nachrichten-Spreadsheet auf den nächstliegenden Vorgänger des Ziels, und wählen Sie 'Erweitern' aus. Der letzte (entfernteste) Vorgänger ist $target. Dieses Element sollte IMMER vorhanden sein. Durch diese Aktion müssten in das Spreadsheet eine Anzahl von untergeordneten Elementen dieses Vorgängers eingefügt werden.
  2. Wiederholen Sie die Aktion 'Erweitern', bis im Spreadsheet das Zielfeld erscheint, das Sie definieren wollen. Führen Sie die oben genannten Schritte mit einem Zielfeld aus, das im Spreadsheet sichtbar ist.

Eine ESQL-Funktion auf ein Zielfeld anwenden

  1. Ziehen Sie die Quelle aus dem Teilfenster für die Zuordnungseditor für Nachrichten-Quelle, und übergeben Sie sie auf dem Ziel.
  2. Klicken Sie im Spreadsheet auf das Zielfeld. Der Wert des Zielfeldes erscheint im Teilfenster zum Bearbeiten unmittelbar oberhalb des Spreadsheet.
  3. Bearbeiten Sie das Zielfeld, indem Sie die erforderliche ESQL-Funktion hinzufügen (allen ESQL-Anweisungen muss das Attribut 'esql' als Präfix vorangehen).

Beispiel: esql:upper($source/Parent/SaleList/Invoice/Surname)

Verwenden Sie einen arithmetischen Operator

Plus +
Minus _
Multipliziert mit *
Dividiert durch div

Beispiel: $source/Parent/SaleList/Invoice/Item/Price div 1.6

Quelle ist eine Liste und Ziel ist eine Liste aus der Quelle, jedoch mit einem neuen Eintrag oben in der Liste.

  1. Erweitern Sie das Ziel, um das Element, das eine neue erste Instanz erstellen soll, angezeigt wird. Hierbei kann es sich um eine Struktur oder ein einfaches Element handeln.
  2. Klicken Sie mit der rechten Maustaste auf dieses Element, und wählen Sie If aus. Daraufhin wird darunter eine Bedingungszeile angezeigt.
  3. Klicken Sie mit der rechten Maustaste auf dieses Element, und wählen Sie Kopieren aus. Wählen Sie in der Bedingungszeile Einfügen aus. Im Spreadsheet sollten nun zwei Einträge für Ihr Element vorhanden sein.
  4. Definieren Sie für den ersten Eintrag einen beliebigen Wert.Dies ist die erste Instanz. Klicken Sie mit der rechten Maustaste auf den zweiten Eintrag und wählen Sie For aus. Im Spreadsheet wird eine FOR-Zeile angezeigt.
  5. Setzen Sie den zweiten Eintrag auf den bzw. die Werte, die von der Quelle zugeordnet wurden.
  6. Setzen Sie den FOR-Eintrag auf die Schleifenbedingung.
  7. Klicken Sie auf 'For', ziehen Sie anschließend das Quellenfeld, das die Schleifenbedingung repräsentiert, in den Ausdruckseditor, der sich unmittelbar über dem Spreadsheet befindet.

Ändern Sie den Ziel-Laufzeitparser

Sie benennen eine Nachrichtengruppe für die Zielnachricht, wenn Sie die Zuordnung zum ersten Mal erstellen. Der Parser für die Ausgabenachricht entspricht dem Laufzeitparser, der der Nachrichtengruppe zugeordnet ist. Wenn z. B. eine Nachrichtengruppe zum ersten Mal erstellt wird, wird standardmäßig der MRM-Parser als Laufzeitparser verwendet. Dies bedeutet, dass der Zuordnungsknoten ESQL mit folgendem Format erstellt:
SET OutputRoot.MRM.Fielda...
Wenn Sie z. B. den Laufzeitparser in XLM oder XMLNSC ändern, generiert der Zuordnungsknoten ESQL mit folgendem Format:
SET OutputRoot.XMLNSC...
Der Parser der Quellen-(Eingabe-)Nachricht wird über den MQRFH2-Header oder den Empfangsknoten definiert. Der Zuordnungsknoten kann bei der Eingabe alle Parser ausführen.Der Zuordnungsknoten generiert eine Ziel-(Ausgabe-)Nachricht mit einem Parser, der mit dem Laufzeitparser der Nachrichtengruppe übereinstimmt.
  1. Öffnen Sie die Nachrichtengruppendatei 'messageset.mset'
  2. Legen Sie für den Laufzeitparser einen Wert Ihrer Wahl fest, und speichern Sie das Nachrichtenflussprojekt bzw. -projekte, und geben Sie einen Verweis auf diese Nachrichtengruppe für Zuordnungen an.
  3. Setzen Sie die Nachrichtengruppe ein, wenn Sie den Parser in MRM geändert haben.
  4. Setzen Sie den Nachrichtenfluss, in denen sich die Zuordnungen befinden, ein.Wenn Sie diesen Vorgang ausführen, sollten Sie Ihre ESQL im Rechenknoten und in anderen Knoten testen, um sicherzustellen, dass sie erwartungsgemäß funktionieren.

Stellen Sie sicher, dass ein Auswahlelement ohne Bedingungen verarbeitet wird

Wenn Sie eine Drag-Aktion für ein Auswahlelement ausführen, wird eine IF-Zeile im Zuordnungsspreadsheet und eine Bedingungszeile für die jeweiligen Auswahlmöglichkeiten erstellt. Jeder Bedingung ist standardmäßig fn:false() zugeordnet (dies bedeutet, dass diese Auswahl nicht verarbeitet wird). Wenn das Auswahlelement ohne Bedingungen ausgeführt werden soll, stellen Sie sicher, dass die Bedingung auf fn:true() gesetzt ist.

Den Datenbankschemanamen überschreiben

Sie können den in ESQL generierten Datenbankschemanamen ändern. Führen Sie diesen Vorgang im Dialog Laufzeitschema angeben des Assistenten RDB-Schema überschreiben aus. Der Standardname ist der Schemaname der in das Toolkit importierten Datenbankdefinitionen. Verwenden Sie diesen Dialog, um den Wert zu ändern.

Einschränkungen bei der Zuordnung

Falls nicht explizit hier angegeben, können Sie die erforderliche Funktionalität durch Aufruf einer ESQL-Funktion oder -Prozedur erzielen.
  • Felder mit gemischtem Inhalt können nicht zugeordnet werden.
  • Ausnahmebedingungen können nicht direkt in Zuordnungsknoten ausgegeben werden.
  • Selbstdefinierende Elemente können in Zuordnungsknoten nicht bearbeitet werden (Platzhalter werden nur begrenzt unterstützt, wenn die Platzhalter für eingebettete Nachrichten stehen).
  • Der Umgebungsstrukturbaum kann im Zuordnungsknoten nicht bearbeitet werden.
  • Benutzervariablen können nicht definiert und gesetzt werden.
  • CASE-Ausdrücke können nicht emuliert werden. Sie müssen if/else verwenden.
  • Baumstrukturen können nicht von der Eingabe in die Ausgabe kopiert werden, um Elemente innerhalb der kopierten Baumstruktur zu modifizieren. Beispiel: Folgende ESQL kann nicht in einem Zuordnungsknoten modelliert werden: SET OutputRoot.MQMD = InputRoot.MQMD; SET OutputRoot.MQMD.ReplyToQ = 'NEW.QUEUE'; Sie müssen alle Felder in der Struktur einzeln setzen, wenn Sie eines oder mehrere gleichgeordnete Felder modifizieren möchten.
Zugehörige Konzepte
Nachrichtenzuordnung - Übersicht
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2005 Letzte Aktualisierung: Nov 17, 2005
ar25245_