Konfigurieren der Validierung auf Zeichenebene

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Datenquellen und -ziele >  EDI  > Anpassen der EDI-Validierung >

Konfigurieren der Validierung auf Zeichenebene

In den meisten Fällen bedeutet eine Validierung von EDI-Feldern, dass der Feldwert zur Mapping-Laufzeit mit einer Liste von in einer MapForce-Konfigurationsdatei definierten möglichen Werten verglichen wird. Wenn der Feldwert mit einem der möglichen in der Konfigurationsdatei definierten Werte übereinstimmt, gilt er als gültig.

 

Für einige Felder werden jedoch manchmal komplexere Validierungsregeln benötigt, sodass ihre Validierungslogik nicht in Form einer einfachen Liste möglicher Werte ausgedrückt werden kann. Ein Beispiel für ein Feld, für das komplexe Validierungsregeln erforderlich sind, ist das in der VERMAS (Verification of Mass) Message des UN/EDIFACT D16A-Standards verwendete Datenelement 8155. In diesem Feld sind nicht nur im UN/EDIFACT-Standard definierte Codewerte, sondern auch externe, durch den ISO 6346-Standard definierte Codes zulässig. Im ISO 6346-Standard sind Validierungsregeln auf Zeichenebene definiert, nämlich:

 

Das erste Zeichen kann eines der folgenden sein: 1, 2, 3, 4, A, B, C, D, E, F, G, H, K, L, M, N, P
Das zweite Zeichen kann eines der folgenden sein: 0, 2, 4, 5, 6, 8, 9, C, D, E, F, L, M, N, P
Das dritte und vierte Zeichen kann eines der folgenden sein: G0, G1, G2, G3, usw. (zu viele Werte, um diese hier aufzulisten).

 

Auch eine Validierungslogik wie die oben gezeigte kann für MapForce angepasst werden. In diesem Fall validiert MapForce das Datenelement 8155 nicht nur gemäß den UN/EDIFACT-Codewerten, sondern auch unter Berücksichtigung der obigen Regeln aus dem ISO 6346-Standard.

 

Aus Sicht einer MapForce-Konfiguration können die drei oben aufgezählten Regeln als drei separate Wertelisten betrachtet werden. Die erste Liste ist ein Zeichen lang, die zweite Liste ist ein Zeichen lang und die dritte Liste ist zwei Zeichen lang. Alle drei Listen sind finit und deren Werte sind bekannt. Aufgrund dieser Informationen kann der Wert des Datenelements mit Hilfe der MapForce-Konfiguration validiert werden.

 

Ein Beispiel dafür, wie die Validierung auf Zeichenebene konfiguriert werden muss, finden Sie in der Datei ISO6346.Codelist aus dem Verzeichnis C:\Programme\Altova\MapForce2019\MapForceEDI\EDIFACT. Diese mit MapForce bereitgestellte Datei ist so konfiguriert, dass sie die Validierung des Datenelements 8155 gemäß den oben angeführten ISO 6346-Regeln durchführt.

 

<?xml version="1.0" encoding="UTF-8"?>
<Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="5" xsi:noNamespaceSchemaLocation="../EDIConfig5.xsd">
  <Codelist>
    <Field Name="F8155" Type="Alphanumeric" ListName="ISO6346" Length="1" Offset="1">
        <Title>ISO 6346</Title>
        <Description>Code specifying seagoing container type.</Description>
        <Values>
          <Value Code="1"/>
 

           ..............

 
          <Value Code="N"/>
        </Values>
    </Field>
    <Field Name="F8155" Type="Alphanumeric" ListName="ISO6346" Length="1" Offset="2">
        <Title>ISO 6346</Title>
        <Description>Code specifying seagoing container type.</Description>
        <Values>
          <Value Code="0"/>

 
           ..............

 
          <Value Code="F"/>
        </Values>
    </Field>
    <Field Name="F8155" Type="Alphanumeric" ListName="ISO6346" Length="2" Offset="3">
        <Title>ISO 6346</Title>
        <Description>Code specifying seagoing container type.</Description>
        <Values>
          <Value Code="G0"/>
 

           ..............
 
          <Value Code="A0"/>
        </Values>
    </Field>
  </Codelist>
</Config>

ISO6346.Codelist-Konfigurationsdatei

Anmerkung:Einige der Werte aus dem obigen Beispielcodefragment wurden aus Gründen der Einfachheit entfernt.

 

Beachten Sie, dass das Element <Field> im Codefragment oben drei Mal definiert wurde. Dadurch kann der Feldinhalt auf Zeichenebene validiert werden. Jede Instanz von <Field> wird jeweils anhand einer der in der Aufzählung oben angegebenen Regeln validiert. Zu diesem Zweck hat jedes <Field>-Element mehrere Attribute (im Codefragment oben markiert):

 

Name - Dieses Attribut gibt an, dass die Liste der validierten Werte zum selben Feld gehört, d.h. es bindet alle drei Listen an dasselbe Feld (in diesem Fall "F8155").
ListName - Dieses Attribut gibt einer Liste von Werten einen Namen. Wertelisten mit demselben Namen werden in einer Codeliste gruppiert. Beachten Sie, dass alle drei Listen im Beispiel oben denselben Listennamen ListName="ISO6346" haben. Dies wird speziell für die Validierung auf Zeichenebene benötigt. Die eigentlichen zu validierenden Zeichen werden, wie unten erläutert, durch die Attribute Length und Offset der einzelnen Listen in der Gruppe definiert.
Length - Mit diesem Attribut wird die Anzahl der zu validierenden Zeichen definiert (die Anfangsposition von Zeichen im Feld wird durch das Attribut Offset definiert). Beachten Sie, dass die Zeichenlänge für jedes <Field>-Element unterschiedlich ist: Die erste und die zweite Werteliste ist ein Zeichen lang, während die dritte Liste zwei Zeichen enthält.
Offset - Dieses Attribut definiert die Position, ab der MapForce (oder der externe Ausführungsprozessor) die Zeichen aus dem zu validierenden Datenfeld liest. Das erste Zeichen hat den Abstand (offset) 1, das zweite Zeichen den Abstand 2, usw. Die tatsächlich Anzahl der Zeichen wird durch das Attribut Length definiert.

 

Wenn das Attribut Length definiert ist, so muss auch das Attribut Offset definiert sein. Außerdem muss der Wert von Length und Offset größer als Null sein.

 

Im Codefragment oben sind die folgenden Längen-Abstands- (Length-Offset)-Kombinationen definiert:

 

Length="1", Offset="1" - mit dieser Kombination wird ein einziges Zeichen des Felds beginnend mit dem Abstand 1 validiert.
Length="1", Offset="2" - mit dieser Kombination wird ein einziges Zeichen des Felds beginnend mit dem Abstand 2 validiert.
Length="2", Offset="3" - mit dieser Kombination werden zwei Zeichen des Felds beginnend mit dem Abstand 3 validiert

 

mff_iso6346

 

Jede Length-Offset-Kombination stellt, kombiniert mit den unter <Values> definierten Codewerten eine Validierungsbedingung auf Zeichenebene dar. Bei Ausführung des Mappings müssen alle Bedingungen auf Zeichenebene erfüllt werden (da alle denselben ListName-Attributwert haben), damit die Feldvalidierung erfolgreich ist, d.h. MapForce wendet bei der Validierung einer Message, die das Datenelement 8155 enthält, die folgende Logik an:

 

Die Feldzeichen werden anhand der in der Konfigurationsdatei (in diesem Fall ISO6346.Codelist) definierten Codewertliste anhand einer übereinstimmenden Length-Offset-Kombination validiert. So muss z.B. das erste Zeichen des Felds eines der folgenden sein: 1, 2, 3, 4, B, C, G, H, L, M, N.
Der Feldwert muss alle Bedingungen auf Zeichenebene erfüllen (in diesem Fall müssen drei Bedingungen erfüllt werden), damit die Validierung erfolgreich ist.
Wenn eine der Bedingungen nicht erfüllt wird, ist der Feldwert nicht gültig und MapForce (oder der Ausführungsprozessor, der das Mapping verarbeitet, wie z.B.  MapForce Server oder ein C#, C++ oder Java-Programm) erzeugt einen Validierungsfehler.
Ein Feld kann mehr als eine Liste möglicher Codewerte haben. Um als gültig zu gelten, muss der Feldwert in mindestens einer dieser Listen vorhanden sein.

© 2019 Altova GmbH