Auf bekannte, mehrfache Instanzen eines Elements zugreifen

Wenn Sie auf Nachrichteninhalt verweisen oder Nachrichteninhalt erstellen, enthalten die Daten höchstwahrscheinlich Wiederholungsfelder. Wenn Sie die Anzahl der Instanzen eines Wiederholungsfeldes kennen, und Sie auf eine bestimmte Instanz zugreifen möchten, können Sie einen Feldgruppenindex als Teil eines Feldverweises verwenden.

Beispiel: Sie wenden einen Filter für die erste Adresszeile an, um die Zustellung eines Auftrags zu beschleunigen. Drei Instanzen des Elements 'Billing.Address' sind stets in der Beispielnachricht enthalten. Schreiben Sie beispielsweise folgenden Ausdruck, um die erste Zeile zu überprüfen:

IF Body.Invoice.Customer.Billing.Address[1] = 'Patent Office' THEN
   DO;
     -- more ESQL --
		END IF;

Der Feldgruppenindex [1] gibt an, dass dies die erste Instanz des Wiederholungsfeldes ist, das für Sie von Bedeutung ist (Feldgruppenindizes beginnen mit 1). Ein solcher Feldgruppenindex kann an einer beliebigen Stelle in einem Feldverweis verwendet werden. Sie könnten als folgenden Filter anwenden:

IF Body.Invoice."Item"[1].Quantity > 2 THEN
   DO;
     -- more ESQL --
		END IF;

Sie können auf die letzte Instanz eines Wiederholungsfeldes unter Verwendung des Feldgruppenindex [<] verweisen. So verweisen Sie auf Instanzen relativ zur letzten Instanz (beispielsweise auf die vorletzte):

Sie können den Feldgruppenindex [>] für die Darstellung des ersten Elements und der Elemente relativ zum ersten Element verwenden.

Im folgenden Beispiel für die Nachricht 'Invoice' werden diese Indizes verwendet:

IF Body.Invoice.Customer.Billing.Address[<] = 'Hampshire' THEN 
      DO;
     -- more ESQL --
		END IF;
IF Body.Invoice.Customer.Billing.Address[<2 ] = 'Southampton' THEN
   DO;
     -- more ESQL --
		END IF;

Sie können diese Sonderindizes auch für Elemente verwenden, von denen es eine unbekannte Anzahl von Instanzen gibt.

Wiederholungsfelder löschen

Wenn Sie eine Nachricht mit mehreren Wiederholungen eines Elements in einem Nachrichtenfluss übergeben und einige der Wiederholungen löschen möchten, beachten Sie, dass die Wiederholungen nach jedem Löschvorgang neu nummeriert werden. Wenn Ihre Nachricht beispielsweise fünf Wiederholungen eines bestimmten Elements enthält, und im Nachrichtenfluss wird folgende ESQL verwendet:

SET OutputRoot.MRM.e_PersonName[1] = NULL;
SET OutputRoot.MRM.e_PersonName[4] = NULL;

erwarten Sie, dass die Elemente eins und vier gelöscht werden. Da jedoch wiederholt vorkommende Elemente in einem Stapelspeicher gespeichert werden, rückt das Element über dem gelöschten Element auf den Platz des gelöschten Elements nach. Dies bedeutet, dass im obigen Beispiel die Elemente eins und fünf gelöscht werden. Um dieses Problem zu vermeiden, löschen Sie die Elemente in umgekehrter Reihenfolge, d. h., löschen Sie zuerst Element vier und anschließend Element eins.

Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2005 Letzte Aktualisierung: Nov 17, 2005
ak04862_