X12 EDI コネクタ

Premium

X12 EDI コネクタを使用すれば、X12 メッセージをリストおよびマップを使用する DataWeave 互換の表現との間で相互に変換できます。X12 バージョン 003010、003020、003030、003040、003050、003060、003070、004010、004020、004030、004040、004050、004060、005010、005020、005030、005040、005050、006020 はすべての標準トランザクションセットの指定されたスキーマ定義でサポートされています。 コネクタ HIPAA リファレンスページで個別にリストしているように、多くの HIPAA ドキュメントバージョンもサポートされています。

前提条件

このドキュメントは、読者が X12、Mule、Anypoint コネクタ、Anypoint Studio、Mule フロー、Mule のグローバル要素に精通していることを前提としています。

互換性の詳細は、リリースノートを参照してください。リリースノートへのリンクは、このドキュメントの「関連情報」セクションに含まれます。

X12 EDI コネクタを本番環境で使用するには、Anypoint B2B 用の MuleSoft ライセンスを購入しておく必要があります。

このコネクタの新機能

X12 EDI コネクタ 2.x では X12 EDI コネクタ 1.x で実装された設定および処理にいくつかの変更が行われています。

  • X12 EDI コネクタ 1.x では、標準の単一バージョンのトランザクションセットの操作のみをサポートしています。Mule 4 X12 EDI コネクタ 2.x では、標準の複数のバージョンのトランザクションセットの操作をサポートしています。グループ (GS セグメント) データに含まれるバージョン情報は標準バージョンを識別するために使用され、トランザクションセット識別子によって特定のスキーマが決まります。

  • 標準 X12 vs HIPAA の使用のためにより明確な設定オプションが用意されました。formValidation パラメータは、標準 X12、SNIP 種別 1 検証を含む HIPAA、SNIP 種別 2 検証を含む HIPAA のいずれを使用するかを選択します (他の SNIP 検証種別はコネクタレベルでは実装されませんが、アプリケーションコードで実装することはできます)。X12 を選択した場合は標準 X12 スキーマのみを使用でき、HIPAA オプションのいずれかを選択した場合は HIPAA スキーマのみを使用できます。

  • デフォルトの文字エンコーディングは Mule プラットフォームから取得されますが、設定で標準 X12 文字エンコードのいずれかに変更できます。

  • 読み取りおよび書き込み操作で ID パラメータが使用されなくなりました。書き込み操作に渡す実際のメッセージデータ内ですべてのパラメータ値を設定できます。

  • X12 EDI コネクタ 1.x では validateBeforeWrite 設定オプションが用意されており、 出力ストリームに書き込む前にデータのエラーを確認できます。X12 EDI コネクタ 2.x では、この動作が唯一の操作のモードであり、設定パラメータはサポートされなくなりました。

Anypoint Studio 7 でこのコネクタをインストールする方法

  1. Anypoint Studio で、Studio タスクバーの Exchange アイコンをクリックします。

  2. Anypoint Exchange で [Login (ログイン)] をクリックします。

  3. コネクタを検索して [Install (インストール)] をクリックします。

  4. 画面の指示に従ってコネクタをインストールします。

Studio の更新がある場合、右下隅にメッセージが表示されます。メッセージをクリックすると、更新をインストールできます。

X12 EDI コネクタ 2.0.0 を使用するにはデフォルトの Anypoint 設定を変更する必要があります。

Anypoint Studio 7.1.0 以降では、X12 EDI コネクタ 4.0.0 を使用するために標準メモリ設定以上の設定が必要になる場合があります。Studio のメモリ設定を変更するには、Anypoint Studio インストールディレクトリで Anypoint.ini ファイルを編集し、-Xms および -Xmx で始まる 2 つの行を次のように変更します。

-Xms4096m
-Xmx4096m

これにより、Anypoint Studio メモリが 4 GB に設定されます。これは、このコネクタのほとんどの用途に対応する十分な容量です。

スキーマの作成方法

スキーマを作成し、実装に従ってメッセージを記述します。

EDI スキーマ言語について

X12 EDI モジュールでは ESL (EDI スキーマ言語) と呼ばれる YAML 形式を使用して EDI スキーマを表現します。基本 ESL は、構造 (X12 の用語ではトランザクションセット)、グループ (X12 のループ)、セグメント、複合、および要素の観点で EDI メッセージの構造を定義します。X12 バージョン 003010、003020、003030、003040、003050、003060、003070、004010、004020、004030、004040、004050、004060、005010、005020、005030、005040、005050、006020 用の ESL が含まれています。ベース X12 トランザクションセットの HIPAA 検証のセットも含まれています。

オーバーレイスキーマを定義することで、データに合わせて X12 スキーマ定義をカスタマイズできます。オーバーレイスキーマは各自の状況に合わせて X12 4010 850 スキーマなど、ベーススキーマを変更できる ESL の特別な形式です。標準で定義されている構造を使用する場合、オーバーレイスキーマは不要ですが、ほとんどの EDI 交換の実装規定でベース定義が変更されています。

独自のスキーマをゼロから定義することも、データに合わせてベース X12 スキーマ定義をコピーして編集することもできます。詳細は、「EDI スキーマ言語リファレンス」を参照してください。

YAML では、リストとキー-値ペアのセットの組み合わせが使用されます。必須項目が存在する場合、値の順序は重要ではありません。数字で構成される可能性があっても文字列として解釈するように意図される値は、引用符 (単一引用符または二重引用符) で囲みます (そうしないと、YAML パーサーは値を数値として処理するため)。インデントを使用して、リストのネストを示します。

読みやすくすることを目的として、ここで示している ESL 構造では、同じ定義の一部であるリストの前に、すべての簡単なキー-値ペアを定義しています。

オーバーレイスキーマを使用して実装規定を定義する方法

実装規定に従ってスキーマを指定するには、次の手順に従います。

  1. たとえば X12 005010 850 など、カスタマイズするベーススキーマをインポートするオーバーレイスキーマを作成します。

  2. セグメントの使用方法、位置、グループ、および数に関する全体的な構造をカスタマイズします。

  3. 使用方法や数など、セグメントをカスタマイズします。

オーバーレイスキーマの構造はEDI Schema Language Referenceとよく似ていますが、オーバーレイスキーマでは、スキーマ構造のすべての詳細が提供される代わりに、変更のみがリストされます。オーバーレイスキーマは、特定の取引パートナーとの実装規定を使用し、標準を拡張してカスタマイズする方法を指定します。

次の例は、基本 X12 005010 850 トランザクション設定定義を変更するオーバーレイスキーマを作成するための開始点となるサンプルです。この例では、CUR セグメントをカスタマイズして未使用に指定するため、Anypoint Studio のマッピング構造から確実に非表示になります。

form: X12
version: '005010'
imports: [ '/x12/005010/850.esl' ]
structures:
- idRef: '850'
  name: Purchase Order
  class: PO
  heading:
  - { idRef: 'CUR', position: '0400', usage: U }

構造オーバーレイ

構造オーバーレイは、X12 トランザクションセットのベーススキーマ定義への変更を詳細に記述します。ほとんどの場合、この変更では、ベース定義内のセグメントまたはグループを未使用としてマークするという形式が使用されますが、使用方法または反復数の変更が許可されます。

構造オーバーレイで使用される形式を次に示します。

- idRef: '850'
  heading:
  - { idRef: 'CUR', position: '0400', usage: U }
  - { idRef: 'PER', position: '0600', usage: U }
  - groupIdRef: 'N9_Loop'
    position: '2950'
    items:
    - { idRef: 'DTM', position: '2970', usage: U }
    - { idRef: 'PWK', position: '3050', usage: U }
    - { idRef: 'EFI', position: '3080', usage: U }

この例の変更では、N9 ループのセグメントとともに、標準 850 見出しの CUR および PER セグメントが使用されないことを指定します。

構造レベルのキー-値ペアを次に示します。

Key (キー) 説明

idRef

変更するトランザクションセットの ID。

name (名前)

トランザクションセット名 (省略可能)。

heading (見出し)、detail (詳細)、summary (概要)

構造の各セクション内のセグメントおよびグループの変更のリスト。これらは省略可能であり、該当のセクションに変更がある場合にのみそれぞれが使用されます。

構造の各セクション (heading、detail、summary) のセグメント変更のリストはすべて同じ構造を使用します。リスト内の各項目はセグメント参照またはグループ定義です。セグメント参照はコンパクト YAML 構文を使用して示されます。この構文では、各参照の値は、中括弧で囲まれたカンマ区切りのキー-値ペアとして提供されます。値は次のとおりです。

Key (キー) 説明

idRef

参照されるセグメント ID。これは省略可能で、指定された場合は検証されますが、それ以外の場合は無視されます。position (位置) の値を使用して、セクション内のセグメントを一意に識別します。

position (位置)

トランザクションセットセクション内のセグメントの位置。

usage (使用方法)

使用方法コード。必須 (Mandatory) を表す M、省略可能 (Optional) を表す O、条件付き (Conditional) を表す C、未使用 (Unused) を表す U を使用できます。

count (数)

最大反復数の値。数値、または任意の反復数を意味する特別な値 (「>1」) を使用できます。count (数) の値は省略可能で、値を指定しない場合、ベース定義の値が使用されます。

グループオーバーレイは、キー-値ペアが個別の行に含まれる拡張形式で示されます。グループ定義内の値を次に示します。

Key (キー) 説明

groupIdRef

参照されるグループ ID。このキーは省略可能で、指定された場合は検証されますが、それ以外の場合は無視されます。position (位置) の値を使用して、セクション内のグループを一意に識別します。

position (位置)

トランザクションセットセクション内のセグメントの位置。

usage (使用方法)

使用方法コード。必須 (Mandatory) を表す M、省略可能 (Optional) を表す O、条件付き (Conditional) を表す C、未使用 (Unused) を表す U を使用できます。

count (数)

最大反復数の値。数値、または任意の反復数を意味する特別な値 (「>1」) を使用できます。count (数) の値は省略可能で、値を指定しない場合、ベース定義の値が使用されます。

items (項目)

ループを構成するセグメント (およびネストされる可能性のあるループ) のリスト。

セグメントオーバーレイ

セグメントオーバーレイも、ベーススキーマ定義への変更を詳細に定義します。ほとんどの場合、この変更では、ベース定義内の要素または複合を未使用としてマークするという形式が使用されますが、使用方法または反復数の変更が許可されます。セグメントオーバーレイの例を示します。

segments:
- { idRef: AMT, trim: 3 }
- idRef: BEG
  items:
  - { position: 4, usage: U }
- { idRef: DTM, trim: 3 }
- idRef: ITD
  items:
  - { position: 4, usage: U }
  - { position: 6, usage: U }

上記の例では、切り捨てのみが行われるコンパクトな形式のセグメント変更を使用していますが、各値を変更する変更は拡張形式で表現されます。他のすべての YAML の例と同様に、この 2 つの形式は実際には同等であり、区別なく使用できます。

セグメントオーバーレイ内のキー-値ペアを次に示します。

Key (キー) 説明

idRef

セグメント識別子。

trim (切り取り)

セグメント内の切り取り位置。つまり、この位置以降のすべての値は未使用としてマークされます (省略可能)。

items (項目)

個々の値の変更のリスト

この項目リストは、セグメント内の値を位置によって参照します。この参照の値を次に示します。

Key (キー) 説明

position (位置)

セグメント内の値の位置。

name (名前)

セグメント内の値の名前 (省略可能。指定しない場合はベース定義の値を使用)。

usage (使用方法)

使用方法コード。必須 (Mandatory) を表す M、省略可能 (Optional) を表す O、条件付き (Conditional) を表す C、未使用 (Unused) を表す U を使用できます。

count (数)

最大反復数の値。任意の数値、または任意の反復数を意味する特別な値 (「>1」) を使用できます。count (数) の値は省略可能で、値を指定しない場合、ベース定義の値が使用されます。

Anypoint Studio 7 で Mule プロジェクトを作成する方法

コネクタをインストールし、(必要に応じて) スキーマをカスタマイズしたら、コネクタの使用を開始できます。実装規定ごとに個別の設定を作成します。

  1. キャンバスの下部にある [Global Elements (グローバル要素)] タブをクリックし、[Create (作成)] をクリックします。

  2. [Choose Global Type (グローバル種別の選択)] ウィザードで、[X12 EDI: Configuration (X12 EDI: 設定)] を選択し、[OK] をクリックします。

  3. [OK] をクリックして、グローバルコネクタ設定を保存します。

  4. Studio の [Message Flow (メッセージフロー)] タブに戻ります。

以降のセクションで説明するように、[Global Element Properties (グローバル要素のプロパティ)] の各タブを設定します。

[General (一般)] タブについて

[General (一般)] タブのプロパティ

[General (一般)] タブでは、X12 メッセージを読み書きするための設定を行うことができます。

  • X12 形式および検証 (標準 X12、HIPAA SNIP 種別 1、または HIPAA SNIP 種別 2)。

  • メッセージ構造を使用するスキーマ定義のリストを手動で作成または編集 (X12 または HIPAA の同じ形式を使用する必要があります)。

  • メッセージの送受信に使用される X12 文字エンコード。

  • 文字列データで使用できる X12 文字セット (BASIC、EXTENDED、または UNRESTRICTED)。

  • 文字列置き換え文字。文字列データ内の無効な文字を置き換えるために使用します。

  • [GS08 Version (GS08 バージョン)] / [Release (リリース)] / [Industry Identifier Code (業界識別子コード)] 項目のベーススキーマバージョンに付加される値を指定するバージョン識別子コードサフィックス。

[Identity (ID)] タブについて

[Identity (ID)] タブのプロパティ

[Identity (識別子)] タブでは、X12 EDI コネクタ設定の自分および取引パートナーのインターチェンジ制御ヘッダー (ISA) および機能グループヘッダー (GS) 識別子値を設定できます。このすべての値は省略可能です。いずれかが設定されている場合、その値は、入力メッセージの読み取り時に検証されます。また、出力メッセージの書き込み時に出力データに値が指定されていない場合、デフォルトとして使用されます。

設定できる値は Mule アプリケーションおよびパートナーのインターチェンジ ID 修飾子およびインターチェンジ ID、および Mule およびパートナーのアプリケーションコードです。Mule 値は受信メッセージの [Receiver (受信者)] 項目 (ISA07/ISA08、GS03) を指定し、送信メッセージの [Sender (送信者)] 項目 (ISA05/ISA06、GS02) に入力します。

[Parser (パーサー)] タブについて

[Parser (パーサー)] タブのプロパティ

必要に応じて受信メッセージのパーサー検証を制御する以下のオプションを設定できます。

  • 受信値の最小長と最大長を適用します。

  • 使用可能な文字セットを適用する。

  • 受信値の反復数制限を適用します。

  • トランザクションセットで不明なセグメントを許可する。

  • トランザクションセットでセグメント順を適用する。

  • トランザクションセットで [Unused (未使用)] とマークされたセグメントを許可する。

  • トランザクションセットでセグメントの反復数の制限を適用する。

これらのオプションをデフォルト設定である true から変更すると、メッセージの HIPAA SNIP 種別 1 および種別 2 の検証の妨げとなります。これらのオプションは HIPAA では使用せず、標準 X12 データでのみ使用してください。

その他のパーサーオプションでは以下のことができます。

  • 一意の ISA インターチェンジ制御番号 (ISA13) を必要とする。

  • 受信した機能グループのグローバルに一意であるグループ制御番号 (GS06) を適用する。

  • 受信したトランザクションセットのグローバルに一意であるトランザクションセット制御番号 (ST02) を適用する。

  • 一意性を確認するためにインターチェンジ、グループ、トランザクションセットの番号を保存する最小日数を設定する。

  • (エラーのないトランザクションセットの暗黙的な肯定応答を使用するのではなく) 受信したすべてのトランザクションセットの個別の AK2/AK5 (997) または AK2/IK5 (999) 肯定応答を含める。

  • デフォルトで生成される 997 機能肯定応答ではなく、999 実装肯定応答を生成する。999 実装肯定応答のサポートに CTX セグメントの生成は含まれません。

  • 生成された 997/999 肯定応答で送信者にセグメントエラーの詳細をレポートする。

  • 受信されたメッセージの設定で生成された肯定応答を照合する標準 997 または 999 スキーマを自動的に含める。

[Writer (ライター)] タブについて

[Writer (ライター)] タブのプロパティ

[Writer (ライター)] オプションを使用すれば、以下とともに、メッセージを記述するときに使用する区切り文字を指定できます。

  • 出力を読みやすくするために使用されるセグメント間に記述される行末。

  • インターチェンジ間で一意な GS グループ制御番号を生成するかどうか。

  • グループおよびインターチェンジ間で一意の ST トランザクションセット制御番号を生成するかどうか。

  • 実装規定参照 (ST03) 値。

  • 先頭のインターチェンジ制御番号 (オブジェクトストアで現在の値が見つからない場合のみ使用)。

  • 先頭のグループ制御番号 (オブジェクトストアで現在の値が見つからない場合のみ使用)。

  • 先頭のトランザクションセット制御番号 (オブジェクトストアで現在の値が見つからない場合のみ使用)。

  • インターチェンジ肯定応答を要求するかどうか (ISA14)。

  • デフォルトのインターチェンジ使用インジケータ (ISA15)。メッセージデータに値が存在しない場合に使用されます。

例: X12 Studio

次のフローをプロジェクトの XML に読み込むことができます。

マッピングフローの図
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:x12="http://www.mulesoft.org/schema/mule/x12"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/x12
http://www.mulesoft.org/schema/mule/x12/current/mule-x12.xsd
http://www.mulesoft.org/schema/mule/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config">
		<http:listener-connection host="localhost" port="8081" />
	</http:listener-config>
	<x12:config name="X12_EDI_Config" doc:name="X12 EDI Config">
	    <x12:schemas>
	        <x12:schema value="/x12/005010/850.esl"/>
	    </x12:schemas>
	</x12:config>
	<flow name="x12mappingFlow">
		<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/x12"/>
		<x12:read doc:name="Read" config-ref="X12_EDI_Config"/>
		<ee:transform doc:name="Transform Message">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
    TransactionSets: {
        v005010: {
            "850": payload.TransactionSets.v005010."850"
        }
    }
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<x12:write doc:name="Write" config-ref="X12_EDI_Config"/>
	</flow>
</mule>

XML での設定オプション

Studio 設定に含まれるすべての値を XML で直接設定できます。

一般パラメータでは、送信と受信の両方のドキュメント処理を制御します (すべてが省略可能であり、デフォルト値は次に示すとおりです)。

XML 値 Visual Studio オプション

formValidation="X12"/"HIPAA_SNIP1"/"HIPAA_SNIP2"

スキーマ形式および検証レベル。デフォルトは "X12"。設定で使用されるスキーマは選択したフォーム (X12 または HIPAA) に一致する必要があります。

schemas=値のリスト

コネクタで使用するスキーマのパスのリスト。ファイルシステムまたはクラスパスのどちらかのパスを使用できます。

characterEncoding="PLATFORM"/"ASCII"/"ISO8859_1"/"IBM1047"/"UTF8"

メッセージの文字エンコード。デフォルトは "PLATFORM"。つまり、Mule プラットフォームのデフォルトのエンコード。この文字エンコードは、必ずメッセージの送受信両方に使用されます。

stringCharacterSet="BASIC"/"EXTENDED"/"UNRESTRICTED"

文字列データで使用できる文字。デフォルトは "EXTENDED"。無効な文字は、置換文字が使用されている場合は置換文字で置換され、置換文字が設定されていないかパーサーオプションの受信メッセージで有効になっていない場合はエラーとして拒否されます。

stringSubstitutionChar="?"

文字列値の無効な文字を置換するために使用される置換文字。デフォルトはなし。

versionIdentifierSuffix="XYZ"

グループのバージョン識別子コードサフィックス (GS)。この値が設定されている場合、送信メッセージの処理と受信メッセージの処理の両方に影響します。受信側では、GS08 バージョンコードは X12 スキーマバージョン (004010、005010 など) にこのサフィックスが続く必要があります。この値を設定しない場合、受信で GS バージョン識別子コードの先頭が設定されたスキーマバージョンであることのみ検証されます。送信側では、X12 スキーマバージョンとこのサフィックスの組み合わせは GS08 値として使用されます。

セルフ ID パラメータでは、取引パートナーリレーションの自分側を必要に応じて識別できます。

XML 値 Visual Studio オプション

interchangeIdQualifierSelf="ZZ"

Exchange での Mule の ID 修飾子 (ISA セグメント)。この値はインターチェンジ ID 値との組み合わせで使用し、一方を設定した場合はもう一方も設定する必要があります。

interchangeIdSelf="mule"

Exchange での Mule の ID (ISA セグメント)。この値はインターチェンジ ID 修飾子の値との組み合わせで使用し、一方を設定した場合はもう一方も設定する必要があります。

groupIdSelf="muleapp"

グループでの Mule のアプリケーションコード (GS セグメント)。

パートナー ID パラメータでは、パートナーを必要に応じて識別できます。

XML 値 Visual Studio オプション

interchangeIdQualifierSelf="ZZ"

Exchange でのパートナーの ID 修飾子 (ISA セグメント)。この値はインターチェンジ ID 値との組み合わせで使用し、一方を設定した場合はもう一方も設定する必要があります。

interchangeIdSelf="partner"

Exchange でのパートナーの ID (ISA セグメント)。この値はインターチェンジ ID 修飾子の値との組み合わせで使用し、一方を設定した場合はもう一方も設定する必要があります。

groupIdSelf="partnerapp"

グループでのパートナーのアプリケーションコード (GS セグメント)。

パーサーパラメータは、parser 操作と受信トランザクションセットが拒否される原因となるエラー条件の種別を制御します (すべて省略可能で、デフォルト値を示しています)。

XML 値 Visual Studio オプション

enforceLengthLimits="true"

受信値の最小長と最大長を適用します。

enforceCharacterSet="true"

使用可能な文字セットを適用する。

enforceValueRepeats="true"

受信値の反復数制限を適用します。

allowUnknownSegments="false"

トランザクションセットで不明なセグメントを許可する。

enforceSegmentOrder="true"

トランザクションセットでセグメント順を適用する。

allowUnusedSegments="false"

トランザクションセットで [Unused (未使用)] とマークされたセグメントを許可する。

enforceSegmentRepeats="true"

トランザクションセットでセグメントの反復数の制限を適用する。

requireUniqueInterchanges="true"

一意の ISA インターチェンジ制御番号 (ISA13) を必要とする。デフォルトの動作では、以前に処理されたインターチェンジ番号が記録され、同じパートナー (インターチェンジの送信者および受信者 ID により判別) からの重複するインターチェンジ番号が拒否されます。false の場合、代わりに、受信したインターチェンジの処理の続行が許可され、インターチェンジはアプリケーションフローに従い、番号が追跡され、適切に処理されます。

requireUniqueGroups="false"

受信した機能グループのグローバルに一意であるグループ制御番号 (GS06) を適用する。デフォルトでは、グループ番号はインターチェンジでのみ一意である必要があります。true の場合、代わりに同じパートナーおよびアプリケーションから受信するすべてのインターチェンジでグループ番号が一意であることが必須です (インターチェンジの送信者および受信者の ID によって判断され、機能グループの送信者および受信者のアプリケーションコードと組み合わされます)。

requireUniqueTransactionSets="false"

受信したトランザクションセットのグローバルに一意であるトランザクションセット制御番号 (ST02) を適用する。デフォルトでは、トランザクションセット制御番号は特定の機能グループでのみ一意である必要があります。true の場合、代わりに同じパートナーおよびアプリケーションから受信するすべての機能グループでトランザクションセット番号が一意であることが必須です (インターチェンジの送信者および受信者の ID によって判断され、機能グループの送信者および受信者のアプリケーションコードと組み合わされます)。

daysToStore="30"

一意性を確認するためにインターチェンジ、グループ、トランザクションセットの番号を保存する最小日数。

ackAllSets="false"

受信したすべてのトランザクションセットの個別の AK2/AK5 (997) または AK2/IK5 (999) 肯定応答を含める。デフォルトでは、エラーが含まれるトランザクションセットのみが肯定応答に含まれ、含まれないトランザクションセットは暗黙的に肯定応答されます。このフラグを変更すると、受信する各トランザクションセットが明示的に肯定応答されます。

generate999Acks="false"

997 機能肯定応答ではなく、999 実装肯定応答を生成する。デフォルトでは、997 機能肯定応答トランザクションセットはインターチェンジを受信するたびに生成されます。このフラグを変更すると、代わりに 999 実装肯定応答が生成されます。999 実装肯定応答のサポートに CTX セグメントの生成は含まれません。

reportSegmentErrors="true"

997/999 フラグで送信者にセグメントエラーの詳細をレポートする。true の場合、生成される 997/999 にセグメントエラーの詳細が含まれます。false の場合、詳細は含まれません。

includeFASchema="true"

997 または 999 機能肯定応答を予期し、997/999 スキーマを含める。デフォルトでは、997/999 肯定応答トランザクションセットのスキーマは X12 EDI モジュールによって使用されるスキーマのセットに自動的に含まれます。false の場合、997 または 999 スキーマを入力として処理する場合は直接指定する必要があります。997 または 999 機能肯定応答を生成するために使用されるスキーマはハードコード化されており、変更できません。

書き換えパラメータでは、書き換え操作を制御します (すべてが省略可能であり、デフォルト値は次に示すとおりです)。

XML 値 Visual Studio オプション

dataSeparator="*"

データ要素の区切り文字。設定された値は、デフォルトですべての出力メッセージに使用されますが、メッセージレベルで上書きできます。

componentSeparator=">"

コンポーネントの区切り文字。設定された値は、デフォルトですべての出力メッセージに使用されますが、メッセージレベルで上書きできます。

repetitionSeparator="U"

反復の区切り文字。設定された値は、デフォルトですべての出力メッセージに使用されますが、メッセージレベルで上書きできます。U の値は反復が使用されないことを意味します。

segmentTerminator="~"

セグメントの終端文字。設定された値は、デフォルトですべての出力メッセージに使用されますが、メッセージレベルで上書きできます。

lineEnding="NONE"/"LF"/"CRLF"/"CR"

セグメント間に追加する行末。デフォルトは NONE。これにより、セグメント間に行末を追加して、出力メッセージテキストを読みやすくすることができます。

sendUniqueGroupNumbers="false"

一意のグループ制御番号を送信する。デフォルトでは、機能グループ制御番号は各インターチェンジ内で連続的に割り当てられ、異なるインターチェンジで再利用されます。true の場合、代わりに同じパートナーおよびアプリケーションに送信するすべてのインターチェンジに一意のグループ番号を割り当てます (インターチェンジの送信者および受信者の ID によって判断され、機能グループの送信者および受信者のアプリケーションコードと組み合わされます)。

sendUniqueTransactionNumbers="false"

一意のトランザクションセット制御番号を送信する。デフォルトでは、トランザクションセット制御番号は各機能グループ内で連続的に割り当てられ、異なるグループで再利用されます。true の場合、代わりに同じパートナーおよびアプリケーションに送信するすべてのインターチェンジに一意のトランザクションセット番号を割り当てます (インターチェンジの送信者および受信者の ID によって判断され、機能グループの送信者および受信者のアプリケーションコードと組み合わされます)。

implementationConventionReference=""

トランザクションの実装規定参照 (ST セグメント)。この値が設定されている場合、メッセージパラメータで上書きされない限り、ST 実装規定参照として使用されます。

initialInterchangeNumber="1"

送信メッセージに使用される初期インターチェンジ制御番号。

initialGroupNumber="1"

送信メッセージに使用される初期グループ制御番号。

initialSetNumber="1"

送信メッセージに使用される初期トランザクションセット制御番号。

ackRequested="false"

送信されたトランザクションフラグの応答確認の要求。true の場合、送信されるすべてのトランザクションに 997/999 肯定応答が要求されます。

defaultUsageIndicator="P"

デフォルトの ISA15 インターチェンジ使用インジケータ ("I" は情報、"P" は本番環境データ、"T" はテストデータ)。

スキーマの場所を設定する方法

コネクタを使用するには、プロジェクト内のスキーマの場所を認識しておく必要があります。特に設定せずに X12 スキーマを使用し、何もカスタマイズしていない場合、スキーマの場所は /x12/{version}/{transaction set}.esl パターンに従います。たとえば、 005010 バージョンおよび 850 トランザクションセットを使用している場合、スキーマの場所は /x12/005010/850.esl になります。

1 つ以上のカスタムスキーマを使用している場合、これらを src/main/app のディレクトリに配置し、このディレクトリに対して相対的な位置を参照する必要があります。 たとえば、850 スキーマ (オーバーレイまたはフル) を src/main/app/mypartner/850.esl に配置した場合、スキーマの場所は `/mypartner/850.esl になります。

Anypoint Studio XML ビューでスキーマの場所を設定できます。スキーマファイルはコネクタが初期化されるときに読み込まれるため、フロー変数などのランタイム表現はサポートされません。

Anypoint Studio でスキーマを設定するには、[Configuration XML (設定 XML)] をクリックして XML ビューに切り替えて、各ドキュメント種別の <x12:schema> 要素を追加することで、使用するすべてのスキーマのリストが含まれるように X12 EDI 設定を変更します。

<x12-edi:config name="X12_EDI__Configuration" identKeys="true" doc:name="X12 EDI: Configuration">
  <x12-edi:schemas>
    <x12:schema value="/x12/005010/850.esl"/>
  </x12-edi:schemas>
</x12-edi:config>

設定にスキーマを含めていない場合、X12 EDI はコネクタに用意されている標準 X12 スキーマ定義を使用して、各トランザクションセットについてランタイムに適切なスキーマを読み込もうとします。ただし、この場合、コネクタの内外に渡されるデータの構造を定義するためのメタデータが表示されません。

X12 メッセージ構造について

コネクタでは、正規 EDI メッセージ構造との間で X12 ドキュメントの読み書きができます。この構造は、DataWeave またはコードを使用して操作できる Java マップおよびリストの階層として表されます。各トランザクションには、上述のように、スキーマで定義された独自の構造があります。

メッセージ自体には以下のキーが含まれます (一部のキーは、以下に示すように、読み取り操作または書き込み操作のどちらかにのみ適用されます)。

キー名 説明

Delimiters (省略可能)

メッセージで使用する区切り文字 (読み取り操作で処理された最後のインターチェンジに基づいて設定されます)。write 操作について設定された場合、これはモジュール設定の値を上書きします。文字列の文字は位置に基づいて次の順で解釈されます: (データ区切り文字)、(サブ要素区切り文字)、(反復区切り文字、またはない場合は 'U')、(セグメントの終端文字)。

Errors (参照のみ)

入力全体、または有効なトランザクションセットのないインターチェンジに関連付けられているエラーのリスト。後述の「X12 EDI メッセージを読み取って検証する方法」セクションの X12Error 構造の説明を参照してください。

FunctionalAcksGenerated (参照のみ)

read 操作中にモジュールによって生成された 997 または 999 肯定応答のリスト (設定済み)。肯定応答を送信するには、肯定応答の送信に関する以下のセクションを参照してください。

Group (書き込みのみ)

グループを書き込むときにデフォルトとして使用される GS グループヘッダーセグメント値のマップ。

Interchange (書き込みのみ)

インターチェンジを書き込むときにデフォルトとして使用される ISA インターチェンジヘッダーセグメント値のマップ。

InterchangeAcksGenerated (読み取りのみ)

read 操作中にモジュールによって生成された TA1 肯定応答のリスト。

InterchangeAcksReceived (読み取り専用)

read 操作中にモジュールによって受信された TA1 肯定応答のリスト。

InterchangeAcksToSend (書き込みのみ)

write 操作中にモジュールによって送信される TA1 肯定応答のリスト。

Transactions

read 操作中にモジュールによって読み取られた、または write 操作中にモジュールによって送信されるトランザクションセットの階層。このトップレベルキーの値はキーとして標準バージョンを備えたマップであり、形式は「v005010」などのようになります。たとえば、バージョン 005010 850 および 855 のトランザクションセットを使用している場合、Transactions には 1 つのキー「v005010」を備えたマップが含まれます。このキーの値は、この値と 2 つのキー「850」と「855」を備えた別のマップとなります。これらのそれぞれには個別の 850 および 855 トランザクションセットのリストが含まれ、後で処理することもできます。997 機能肯定応答を使用している場合、「997」は 997 トランザクションセットのリストのキーです。

各トランザクションセットには独自のマップがあり、次のキーを備えています。

Key (キー) 説明

Detail

トランザクションセットの詳細セクションからのセグメントまたはループのマップ。値は、最大で 1 回のみ実行されるセグメントまたはループのマップ、反復される可能性のある値のマップのリストです。

Errors (参照のみ)

トランザクションセットに関連付けられたエラーのリスト。(後述の「X12 EDI メッセージを読み取って検証する方法」セクションの X12Error クラスの説明を参照)。

Group

GS グループヘッダーセグメント値のマップ。メッセージを読み取る場合、このマップは囲むグループの実際のデータです (グループ内のすべてのトランザクションセットからリンクされた単一マップ)。メッセージを書き込む場合、これらの値は囲むグループを作成するために使用されます。このマップに入力されない場合のデフォルトの値は、メッセージレベルでの Group マップからの値となります。

Heading

トランザクションセットの見出しセクションからのセグメントまたはループのマップ。値は、最大で 1 回のみ実行されるセグメントまたはループのマップ、反復される可能性のある値のマップのリストです。

Id

トランザクション ID。含んでいるトランザクションリストのキーに一致する必要があります。

Interchange

ISA インターチェンジヘッダーセグメント値のマップ。メッセージを読み取る場合、このマップは囲むインターチェンジの実際のデータです (インターチェンジ内のすべてのトランザクションセットからリンクされた単一マップ)。メッセージを書き込む場合、これらの値は囲むインターチェンジを作成するために使用されます (実際のマップが同じであるかどうかに関係なく、同じインターチェンジ値のトランザクションを単一のインターチェンジに収集します)。このマップで入力されていない値は、デフォルトでメッセージレベルのインターチェンジマップからの値になります。

Name (名前)

トランザクションセット名。

SetHeader

ST トランザクションセットヘッダーセグメント値のマップ。これにより、読み取り操作の実際のヘッダーデータが提供され、書き込み操作の設定の上書きを提供できます。

Summary

トランザクションセットの概要セクションからのセグメントまたはループのマップ。値は、最大で 1 回のみ実行されるセグメントまたはループのマップ、反復される可能性のある値のマップのリストです。

生成される 997/999 機能肯定応答トランザクションは、インターチェンジ情報の処理の受信されたメッセージとは異なります。

キー名 説明

Interchange

ISA インターチェンジヘッダーセグメント値のマップ。受信処理によって生成される機能肯定応答では、このマップは送信者と受信者の識別コンポーネント (ISA05/ISA06 と ISA07/ISA08) が交換されたインターチェンジを含むデータのコピーです。メッセージを書き込む場合、これらの値は囲むインターチェンジを作成するために使用されます (実際のマップが同じであるかどうかに関係なく、同じインターチェンジ値のトランザクションを単一のインターチェンジに収集します)。このマップで入力されていない値は、デフォルトでメッセージレベルのインターチェンジマップからの値になります。

TA1 インターチェンジ肯定応答は、TA1 セグメントデータを表すマップの形式であり、対応するインターチェンジのデータにリンクされています。

キー名 説明

Interchange

ISA インターチェンジヘッダーセグメント値のマップ。受信処理によって生成される TA1 肯定応答では、このマップは送信者と受信者の識別コンポーネント (ISA05/ISA06 と ISA07/ISA08) が交換された TA1 に一致するインターチェンジのデータのコピーです。メッセージを書き込む場合、これらの値は囲むインターチェンジを作成するために使用されます (実際のマップが同じであるかどうかに関係なく、同じインターチェンジ値のトランザクションを単一のインターチェンジに収集します)。このマップで入力されていない値は、デフォルトでメッセージレベルのインターチェンジマップからの値になります。

時間項目について

すべての X12 時間項目は、ミリ秒数の整数値として表現されます。 たとえば、メッセージに値 024020 がある場合、その DataWeave マッピングは 9620000 ミリ秒として表示されます。

024020 は「HHMMSS」の形式になるため、ミリ秒に変換する場合、次の公式を使用します。

(02*3600000) + (40*60000) + (20*1000) = 9620000

X12 EDI メッセージを読み取って検証する方法

  1. X12 メッセージを読み取るには、X12 EDI のパレットを検索して、X12 Read 操作をフローまでドラッグします。

  2. プロパティビューに移動し、上で作成したコネクタ設定を選択して、Read 操作を選択します。この操作では、任意のバイトストリームを、X12 スキーマで記述された構造に読み取ります。

X12 モジュールはメッセージの読み取り時にメッセージを検証します。メッセージ検証では、メッセージの実際のトランザクションセットだけでなく、エンベロープセグメントの ISA、GS、GE、IEA の構文とコンテンツを確認します。通常、エラーは記録および蓄積され、TA1 技術的肯定応答セグメントまたは 997 肯定応答トランザクションセットのいずれかでレポートされます。受け入れられたすべてのトランザクションセットは (エラーがなくても、または致命的でないエラーであっても) 渡されて、出力メッセージのマップの一部として処理されます。入力データの読み取りでエラーになると、例外がスローされます。

受信データマップに入力されたエラーデータは X12Error クラスを使用します。これは、次のプロパティを備えた読み取り専用の JavaBean です。

プロパティ 説明

segment

エラーの原因となったセグメントの入力内の開始値 0 のインデックス。

segTag

エラーの原因となったセグメントのタグ。

fatal

致命的なエラーのフラグ。関連付けられたトランザクションセット、グループ、またはインターチェンジがエラーの結果として拒否されたことを意味します。

errorType

X12 標準によって定義されたさまざまなエラーの種別の列挙: INTERCHANGE_NOTE、GROUP_SYNTAX、TRANSACTION_SYNTAX、SEGMENT_SYNTAX、または ELEMENT_SYNTAX。

errorCode

示されたエラーの種別の X12 標準によって定義されたエラーコード。

errorText

エラーの説明

errorLevel

さまざまなエラーのレベルの列挙: ROOT_LEVEL、INTERCHANGE_LEVEL、GROUP_LEVEL、または TRANSACTION_LEVEL。

interchangeId

インターチェンジ識別子、errorLevel が INTERCHANGE_LEVEL かそれ以上の場合。

groupId

グループ識別子、errorLevel が GROUP_LEVEL または TRANSACTION_LEVEL の場合。

transactionId

インターチェンジ識別子、errorLevel が TRANSACTION_LEVEL の場合。

エラーデータは read 操作によってデータ構造のすべてのレベルの「Errors」キーを含む省略可能なリストとして返されます。トランザクションセットレベルでは、このリストにはそのトランザクションセットのパース中に発生した致命的でないエラーが含まれます。インターチェンジレベルでは、このリストには致命的なエラーがあるトランザクションセットのエラー (致命的なエラーと致命的でないエラーの両方) が含まれます。read のルートレベルでは、このリストにはインターチェンジエラーと任意のネストレベルでレポートされたその他のすべてのエラーの両方が含まれます。

X12 EDI メッセージを書き込む方法

送信メッセージを書き込むには、X12 EDI のパレットを検索して、X12 Write 操作をフローまでドラッグします。write 操作に対する入力用に上で定義した構造に従って送信 X12 EDI メッセージを作成します。write 操作でエラーが見つからない場合、通常のフローが続行されます。見つかった場合、X12Error インスタンスの配列が含まれる例外がスローされます。このインスタンスは、上述のように Read 操作によって返されるものと同じです。

機能肯定応答の送信方法

送信で生成される機能肯定応答 (997 または 999 トランザクションセット) は他の EDI メッセージの書き込みと同じですが、read 操作中に生成された肯定応答にトランザクションを設定する点のみが異なります。

次に例を示します。

肯定応答フローの図
<x12-edi:read config-ref="X12_EDI__Configuration" doc:name="Read EDI Doc"/>
  ...
<dw:transform-message doc:name="Create Outgoing Acks Message">
    <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
	TransactionSets: {
		v005010: {
			'997' : payload.FunctionalAcksGenerated
		}
	}
}]]></dw:set-payload>
</dw:transform-message>
<x12-edi:write config-ref="X12_EDI__Configuration" doc:name="Send Acks"/>

生成された機能肯定応答には、元のメッセージの送信者に返信するためのインターチェンジデータがセットアップされているため、送信を行うためにトランザクション内の何かを変更する必要はありません。

999 肯定応答を使用する場合、必要な CTX セグメントを自分で X12 モジュールによって生成される基本構造に追加します。X12 コネクタはベーストランザクションセット構造への実装規定の変更を追跡しません。

インターチェンジ肯定応答の送信

インターチェンジ肯定応答 (TA1 セグメント) を送信するには、メッセージマップの InterchangeAcksToSend キーの値を送信される TA1 セグメントマップのリストに設定します。生成された TA1 セグメントには元のメッセージの送信者に送信し返すためにセットアップされたインターチェンジデータがあるため、送信を実行するためにセグメントデータを変更する必要はありません。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub