Partager via


Élément structurel d'un segment EDI

Le segment contient un ou plusieurs éléments de données. Il s'agit d'une unité d'information intermédiaire dans le message. Chaque segment commence par un identificateur de segment de données de trois caractères et se termine par un terminateur de segment (apostrophe (') par défaut). Les éléments de données au sein du segment sont séparées par un séparateurs d'éléments de données (signe plus (+) par défaut). Les segments peuvent être obligatoires ou facultatifs. Les séparateurs pour les échanges sortants peuvent être définis dans les accords entre deux partenaires commerciaux ou en tant qu'accord de partenariat commercial de secours.

Imbrication

Les segments peuvent être regroupés dans une relation hiérarchique appelée imbrication. Il existe deux types distincts d’imbrication : explicite et implicite. Un seul type d'imbrication peut être utilisé dans un échange.

  • L'imbrication explicite indique de façon explicite que la boucle est imbriquée. Lorsque l'imbrication explicite est utilisée, le segment de code est le premier élément de données composites dans la balise de segment. Il est suivi d'éléments de données composites conditionnels indiquant le niveau et la fréquence de répétition du segment. Le nombre d'éléments de données composites utilisés à cette fin dépend du niveau hiérarchique de la structure de message dans lequel le segment apparaît. Si le segment apparaît au premier niveau, l'élément de données composites juste après le segment de code est utilisé. Si le segment apparaît au deuxième niveau, l'élément de données composites juste après le segment de code et l'élément de données composites suivant sont utilisés. Si le segment apparaît au troisième niveau, les trois éléments de données composites juste après le segment de code sont utilisés. Les pipelines ne peuvent pas effectuer de vérification structurelle par comparaison des données à la hiérarchie.

  • Dans une imbrication implicite, l'ordre des segments spécifiés dans la structure de message est strictement suivi. La relation d'imbrication entre les segments est évidente et aucune indication supplémentaire n'est requise pour le traitement.

Boucles

Un ou plusieurs segments peuvent se répéter en tant que boucle à l’intérieur d’un jeu de transactions. Il existe deux types distincts de boucles : unbounded et bounded.

Boucles non liées

Une boucle non liée ne contient pas de segment d'identification unique marquant le début et la fin de la boucle. La répétition d'une boucle non liée est déterminée par un nombre. Si ce nombre n'est pas défini, la boucle est répétée deux fois. Chaque segment de la boucle ne peut apparaître qu'une fois dans un ordre spécifié.

Un premier élément de données unique établit le début d'une boucle non liée. Il ne peut apparaître qu'une fois dans chaque occurrence. Les boucles non liées peuvent être imbriquées dans d'autres boucles. Dans ce cas, la boucle non liée interne ne peut pas débuter à la même position ordinale ou avec le même ID de segment que les autres boucles externes. La boucle imbriquée ne peut pas contenir de segment débutant une boucle externe au sein de la même structure d'imbrication.

Boucles liées

Une boucle liée commence par le segment de début de boucle (LS, Loop Start) prédéfini et se termine par le segment de fin de boucle (LE, Loop End) prédéfini. Le caractère facultatif du segment LS doit correspondre à celui du premier segment de la boucle. Une boucle liée peut contenir une autre boucle liée.

Notes

Une boucle liée dans un échange X12 et une boucle explicite dans un échange EDIFACT sont équivalentes.

Une liaison permet de résoudre les ambiguïtés dans une boucle. L'indicateur du caractère obligatoire des segments LS/LE correspond à celui du premier segment de la boucle. Une liaison minimise les restrictions structurelles imposées sur l'utilisation de certains segments fréquemment répétés. Les segments délimités n’ont aucune restriction par rapport à l’ID de segment de début. Cela permet au même segment de démarrer une boucle limitée et d’être utilisé en dehors de la boucle, comme dans l’exemple suivant :

AA  
LS  
BB  
CC  
LE  
BB  

Les boucles subordonnées (boucles au sein de boucles) sont autorisées. Si des boucles liées sont imbriquées au sein d'autres boucles, la boucle interne ne peut pas débuter à la même position ordinale que les autres boucles externes. La boucle liée interne doit se terminer avant la boucle externe la plus proche.

Chaque boucle limitée au sein d’un jeu de transactions doit avoir une valeur loop_id> définie <de façon unique de 1 à quatre lettres majuscules ou chiffres numériques. Il est recommandé que les segments LS et LE correspondants contiennent la même valeur de loop_id> unique<. L’élément <de données loop_id> sera traité en tant qu’élément de données « normal » et validé pour le type de données, la longueur minimale/maximale, l’optionnalité, etc. La validation inter-segments (dans LS et LE) n’est pas effectuée. BizTalk Server vérifiera la résolution des ambiguïtés via la présence du segment LS et LE et rien d’autre. En cas de violation d'une règle applicable aux éléments de données, le document informatisé est accepté avec des erreurs et BizTalk Server renvoie la valeur AK501=E et l'évaluation appropriée AK2/AK3 dans l'accusé de réception.

Les segments LS/LE doivent également être associés par paire. En cas de non concordance, le document informatisé est rejeté en raison d'un problème de résolution des ambiguïtés, les valeurs AK501 = E et AK502 = 5 sont renvoyées dans l'Observateur d'événements et l'accusé de réception 997. Lorsque l’un des segments LS/LE ou les deux sont manquants, mais que le jeu de transactions n’est pas ambigu, le jeu de transactions est accepté avec des erreurs et AK501=E et AK502 = 5 retourné.

Une paire de segments LS/LE peut être facultative ou obligatoire. La paire n'est toutefois jamais renouvelée, à moins d'être contenue dans une boucle parent renouvelable. Dans les deux cas, la valeur MaxOccurs d'une paire de segments LS/LE peut être égale à 1, mais pas supérieure à 1. Cette condition est vérifiée dans le cadre de la validation de schéma.

Le Désassembleur EDI et l'Assembleur EDI gèrent les segments LS et LE. Au cours de l'analyse, le Désassembleur crée des nœuds XML pour les segments LS et LE, puis valide les segments. Au cours de la sérialisation, l'Assembleur crée les segments LS et LE à partir des nœuds XML, puis valide ceux-ci. Si un segment LS ou LE attendu est manquant, le jeu de transactions est suspendu/rejeté avec un AK501 = E et AK502 = 5. Si des segments LS/LE sont sans élément de données correspondant et que la validation EDI est activée, le jeu de transactions est accepté avec des erreurs et AK501 = E et AK502 = 5 sont signalés dans le observateur d'événements et l’ACK 997.