文字の構成-レベルの検証

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  データソースとターゲット > MapForce と EDI > 構成ファイルを使用して EDI 検証をカスタマイズする >

文字の構成-レベルの検証

多くの場合、フィールドの検証は、マッピングランタイムでのフィールドの値を MapForce 構成ファイルにより定義された値のリストと比較することを意味します。例えば、フィールドの値が構成ファイル内で定義されている使用できる値の 1 つに一致する場合、有効とみなされます。

 

しかしながら、 特定のフィールドは、更に高度な検証ルールを必要とする場合があります。これは、検証のロジックが使用できる値の簡単なリストとして表示することができないことを意味します。複雑な検証を必要とするフィールドのサンプルは、 UN/EDIFACT D16A の VERMAS (Verification of Mass) メッセージ内で使用されている、データ要素です。このフィールドは、 UN/EDIFACT 標準内で定義されているコードの値だけではなく、 ISO 6346 標準により指定されている外部コードも受け入れます。 ISO 6346 標準は、文字レベルで検証ルールを定義しています。具体的には以下が挙げられます:

 

最初の文字は次の 1 つであることができます: 1、 2、 3、 4、 A、 B、 C、 D、 E、 F、 G、 H、 K、 L、 M、 N、 P
2 番目の文字は次の 1 つであることができます: 0、 2、 4、 5、 6、 8、 9、 C、 D、 E、 F、 L、 M、 N、 P
3 番目、 4 番目の文字は次の組み合わせの 1 つであることができます: G0、 G1、 G2、 G3、など。 (全ての値を表示することはできません)。

 

MapForce より高度な検証 ロジックを適用することもできます。この場合、 MapForce は、データ要素 8155 を、 UN/EDIFACT コードの値だけではなく、ISO 6346 標準に適用することができるルールにも従い、検証します。

 

MapForce 構成パースペクティブからは、 上記の 3 つのルールは、 3 つの個別の値のリストとして示されています。 最初のリストおよび 2 番目のリストは、 1 文字で、 3 番目のリストは、 2 文字です。 3 つ全てのリストは、有限で値は既知です。この情報は、MapForce 構成を使用してデータ要素の値を検証することを可能にします。

 

文字レベル 検証の構成を確認するには、 ISO6346.Codelist ファイルを C:\Program Files\Altova\MapForce2019\MapForceEDI\EDIFACT ディレクトリから開きます。このファイルはデフォルトで与えられており、 MapForce は、上記の ISO 6346 ルールに従い、データ要素の検証を行うように構成されています。

 

<?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 構成 file

メモ:上記のサンプルのコードリスティングの値の一部は、簡素化のために削除されました。

 

上のコード リスティング内で、 <Field> 要素は、 3 回定義されています。これにより、フィールドのコンテンツは文字レベルで検証することが可能になります。 具体的には、<Field> が発生する都度、上記のルールのうち 1 つを検証します。これを達成するには、 各 <Field> には(上のコードリスティングでハイライトされているように)複数の属性が存在します:

 

Name - この属性は、検証される値のリストは同じフィールドに属することを示します。すなわち、これは 3 つのリストを(この場合、 「F8155」)同じフィールドにバインドします。
ListName - この属性は、値のリストに名前を与えます。同じ名前を持つ値のリストは、 1 つのコードリストとしてグループ化されます。上のサンプルでは、 3 つ全てのリストは、同じ ListName="ISO6346" を持ちます。これは、文字レベルの検証に必要です。グループ内の各リストの LengthOffset 属性により指定されている実際の文字の検証に関しては、下で説明されています。
Length - この属性 は、検証される文字の長さを指定します  (文字の開始のポジションは、 Offset 属性により定義されているフィールド内に存在します)。文字の長さは、それぞれの <Field> により異なります: 最初と 2 番目の値のリストは、 1 文字で、 3 番目のリストは 2 文字です。
Offset - この属性は、MapForce (または、 外部の実行エンジン) が検証されるデータフィールドから文字を読み込む開始の位置を指定します。最初の文字は、オフセット 1 を持ち、 2 番目の文字はオフセット 2 を持つなどです。 実際の文字数は、 Length 属性により定義されます。

 

Length 属性が定義されている場合、 Offset 属性も定義される必要があります。また、 LengthOffset の値は 0 より大きくなければなりません。

 

上のコード リスティングでは、以下の 長さ-オフセット 組み合わせが定義されています:

 

Length="1", Offset="1" - この組み合わせは、オフセット1から開始するフィールドの1文字を検証します。
Length="1", Offset="2" - この組み合わせは、オフセット2から開始するフィールドの1文字を検証します。
Length="2", Offset="3" - この組み合わせは、オフセット3から開始するフィールドの2文字を検証します。

 

mff_iso6346

 

<Values>の下で定義されているコードの値と組み合わされている各長さ-オフセット 組み合わせは、検証の条件を文字レベルで示しています。 フィールド検証が成功するためには、マッピングの作動時、 すべての文字レベル 条件が満たされている必要があります (これは全てが同じ ListName 属性値持つためです)  すなわち、データ要素 8155 を含むメッセージを検証する場合、MapForce は次のロジックを適用します:

 

フィールド文字は、長さ-オフセット 組み合わせの一致のために、構成ファイル(この場合、 ISO6346.Codelist)内で定義されているコードの値のリストに対して検証されます。 例えば、 フィールドの最初の文字は、以下のリスト内の 1 つであることができます: 1, 2, 3, 4, B, C, G, H, L, M, N.
検証を成功させるには、フィールドの値は、文字列での全ての条件を満たす必要があります (この場合、 3 つの条件が満たされていなければなりません) 。
条件の一つが満たされない場合、 フィールドの値は有効ではなく、 MapForce  (または、 MapForce Server、 や C#、C++、または Java プログラムなどの) EDI マッピングを実行する実行エンジン内で検証エラーが生成されます。
フィールドは、使用できるコードの値の 1 つ以上のリストを持つことができます。有効とみなされるためには、フィールドの値は、リストの 1 つに存在する必要があります。

(C) 2019 Altova GmbH