Strukturelles EDI-Segmentelement
Ein Segment enthält ein oder mehrere Datenelemente und ist eine Zwischeneinheit aus Informationen in der jeweiligen Nachricht. Jedes Segment beginnt mit einem Datensegmentbezeichner aus drei Zeichen und endet mit einem Segmentabschlusszeichen (standardmäßig das Apostroph (')). Die Datenelement im Segment werden durch Datenelementtrennzeichen voneinander getrennt. Als Datenelementtrennzeichen wird standardmäßig das Pluszeichen (+) verwendet. Ein Segment ist als Obligatorisch oder Optional klassifiziert. Trennzeichen für ausgehende Austauschvorgänge können in den Vereinbarungen zwischen zwei Handelspartnern oder als Bestandteil der Ausweichvereinbarung der Handelspartner festgelegt werden.
Verschachtelung
Segmente können in einer hierarchischen Beziehung gruppiert werden, die als Schachtelung bezeichnet wird. Es gibt zwei verschiedene Arten von Schachtelung: explizit und implizit. In einem Austausch kann immer nur ein Schachtelungstyp verwendet werden.
Für eine explizite Schachtelung wird ein expliziter Hinweis verwendet, dass die Schleife geschachtelt ist. Wenn explizite Schachtelung verwendet wird, ist das erste Komponentendatenelement im Segmenttag der Segmentcode. Auf das erste Element folgen bedingte Komponentendatenelemente, die sowohl die Ebene als auch die Wiederholungshäufigkeit des Segments kennzeichnen. Die Anzahl von Komponentendatenelementen, die hierfür verwendet werden, hängt von der hierarchischen Ebene ab, auf der sich das Segment in der Nachrichtenstruktur befindet. Befindet sich das Segment auf Ebene eins, wird das Komponentendatenelement verwendet, das unmittelbar auf den Segmentcode folgt. Befindet sich das Segment auf Ebene zwei, werden das Komponentendatenelement, das unmittelbar auf den Segmentcode folgt, und das nächste Komponentendatenelement verwendet. Befindet sich das Segment auf Ebene drei, werden die drei Komponentendatenelemente verwendet, die auf den Segmentcode folgen. Pipelines können keine strukturbezogene Überprüfung ausführen, in der Daten mit der Hierarchie verglichen werden.
Bei einer impliziten Schachtelung wird die Reihenfolge der Segmente, die in der Nachrichtenstruktur angegeben sind, unbedingt eingehalten. Die Schachtelungsbeziehung zwischen den Segmenten ist implizit evident, und für die Verarbeitung ist kein weiterer Hinweis erforderlich.
Schleifen
Ein oder mehrere Segmente können als Schleife innerhalb eines Transaktionssatzes wiederholt werden. Es gibt zwei unterschiedliche Typen von Schleifen: ungebunden und begrenzt.
Ungebundene Schleifen
Eine ungebundene Schleife hat kein eindeutiges kennzeichnendes Segment, das den Anfang und das Ende der Schleife markiert. Eine ungebundene Schleife wird entsprechend einer Anzahl wiederholt. Wenn die Anzahl keinen Wert hat, wird die Schleife zweimal wiederholt. Jedes Segment in der Schleife kann nur einmal in einer bestimmten Reihenfolge vorkommen.
Der Start einer ungebundenen Schleife wird durch ein erstes Datenelement vorgegeben, das eindeutig ist. Das erste Element kann in jedem Vorkommen nur genau einmal enthalten sein. Ungebundene Schleifen können in Schleifen geschachtelt sein. Ist dies der Fall, kann die innere ungebundene Schleife weder an derselben Ordnungsposition noch mit derselben Segment-ID wie eine äußere Schleife gestartet werden. Die geschachtelte Schleife darf kein Segment enthalten, das in derselben Schachtelungsstruktur auch das Anfangssegment einer äußeren Schliefe ist.
Gebundene Schleifen
Eine gebundene Schleife beginnt mit dem vordefinierten Segment LS (Loop Start, Schleifenstart) und endet mit dem vordefinierten Segment LE (Loop End, Schleifenende). Die Optionalität des LS-Segments muss mit der des ersten Segments der Schleife übereinstimmen. Eine gebundene Schleife darf eine andere gebundene Schleife enthalten.
Hinweis
Eine gebundene Schleife in X12 und eine explizite Schleife in EDIFACT sind gleichwertig.
Bindung wird in einer Schleife verwendet, um Mehrdeutigkeit aufzulösen. Der Anforderungskennzeichner für das LS- und das LE-Segment stimmt mit dem Anforderungskennzeichner des ersten Segments der Schleife überein. Bindung lockert die strukturbezogenen Beschränkungen, die für die Verwendung von bestimmten, üblicherweise wiederholten Segmenten gelten. Für begrenzte Segmente gelten keine Einschränkungen in Bezug auf die Anfangssegment-ID. Dadurch kann dasselbe Segment eine begrenzungsgebundene Schleife starten und außerhalb der Schleife verwendet werden, wie im folgenden Beispiel gezeigt:
AA
LS
BB
CC
LE
BB
Untergeordnete Schleifen (Schleifen innerhalb von Schleifen) sind zulässig. Wenn gebundene Schleifen in Schleifen geschachtelt sind, darf die innere Schleife nicht an derselben Ordnungsposition starten wie die äußere Schleife. Die innere gebundene Schleife muss vor der unmittelbaren äußeren Schleife enden.
Jede begrenzungsgebundene Schleife innerhalb eines Transaktionssatzes muss über einen eindeutig definierten <loop_id> Wert von 1 bis vier Großbuchstaben oder numerischen Ziffern verfügen. Es wird empfohlen, dass die entsprechenden LS- und LE-Segmente denselben eindeutigen <loop_id> Wert enthalten. Das <loop_id> Datenelements wird als "reguläres" Datenelement verarbeitet und auf Datentyp, minimale/maximale Länge, Optionalität usw. überprüft. Segmentübergreifende Validierung (LS- und LE-übergreifend) wird nicht durchgeführt. BizTalk Server überprüft die Mehrdeutigkeitsauflösung über das Vorhandensein des LS- und LE-Segments und nichts anderes. Liegt eine Verletzung einer Datenelementregel vor, wird der Transaktionssatz mit Fehlern akzeptiert, und BizTalk Server gibt AK501=E sowie die entsprechende Bewertung in AK2/AK3 in der Bestätigung (ACK) zurück.
Außerdem muss die Paarbildung von LS/LE-Segmenten erzwungen werden. Im Fall fehlender Übereinstimmung wird der Transaktionssatz wegen eines inhärenten Problems mit der Mehrdeutigkeitsauflösung abgelehnt, und AK501 = E und AK502 = 5 werden an die Ereignisanzeige sowie die 997-Bestätigung (ACK) zurückgegeben. Wenn eines oder beide LS/LE-Segmente fehlen, der Transaktionssatz jedoch nicht mehrdeutig ist, wird der Transaktionssatz mit Fehlern akzeptiert, und AK501=E und AK502 = 5 werden zurückgegeben.
Ein LS/LE-Paar kann optional oder obligatorisch sein. Das Paar kann aber niemals wiederholbar sein, es sei denn, es ist in einer übergeordneten Schleife enthalten, die wiederholbar ist. In beiden Fällen können beide MaxOccurs eines LS/LE-Paars gleich 1, aber nicht größer als 1 sein 1. Dies wird in der Schemaüberprüfung erzwungen.
Der EDI-Disassembler und der EDI-Assembler verarbeiten LS- und LE-Segmente. Beim Analysieren erstellt der Disassembler XML-Knoten für die LS- und LE-Segmente und überprüft die Segmente. Beim Serialisieren erstellt der Assembler die LS- und LE-Segmente aus den XML-Knoten und überprüft sie. Wenn ein erwartetes LS- oder LE-Segment fehlt, wird der Transaktionssatz mit einem AK501 = E und AK502 = 5 angehalten/abgelehnt. Wenn LS/LE-Segmente ohne entsprechendes Datenelement vorhanden sind und die EDI-Validierung aktiviert ist, wird der Transaktionssatz mit Fehlern akzeptiert, und AK501 = E und AK502 = 5 werden im Ereignisanzeige und 997 ACK gemeldet.