---
schema_version: "1"
id: c180702f33f22099efc76ed8fef57bf4bc41c1d926c48850d5a9dd774ec99093
title: X12 EDI Connector - Mule 4
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/x12-edi-connector/2.1/index.md
canonical_url: https://docs.mulesoft.com/jp/x12-edi-connector/2.1/
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 36208e60222d783d489ce2469f2e2fe46dab8f73d26e3f596091822a9c27514e
description: MuleSoft Documentation Site
release: "2.1"
latest: false
---
# X12 EDI Connector - Mule 4

サポートカテゴリ: [Premium](https://www.mulesoft.com/legal/versioning-back-support-policy#anypoint-connectors)  
X12 EDI Connector バージョン 2.1.1

X12 EDI Connector を使用すれば、X12 メッセージをリストおよびマップを使用する DataWeave 互換の表現との間で相互に変換できます。 すべての​[サポート対象 X12 標準トランザクションセット](https://docs.mulesoft.com/connectors/x12-edi/x12-edi-versions-x12)​のスキーマ定義が提供されています。 [コネクタ HIPAA リファレンスページ](https://docs.mulesoft.com/connectors/x12-edi/x12-edi-versions-hipaa)​で個別にリストしているように、多くの HIPAA ドキュメントバージョンもサポートされています。

## [](#前提条件)前提条件

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

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

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

注意: X12 EDI Connector は最大 15 MB のファイルをサポートしており、メモリ要件は約 40 倍です。たとえば、1 MB のファイルは処理するために最大 40 MB のメモリが必要であるため、このメモリ要件を大きな X12 ファイルの TPS のニーズと組み合わせて考慮することが重要です。これは正確な数値ではありません。この値は、マッピング命令の複雑さによって異なる可能性があります。

## [](#このコネクタの新機能)このコネクタの新機能

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

- X12 EDI Connector 1.x では、標準の単一バージョンのトランザクションセットの操作のみをサポートしています。Mule 4 X12 EDI Connector 2.x では、標準の複数のバージョンのトランザクションセットの操作をサポートしています。グループ (GS セグメント) データに含まれるバージョン情報は標準バージョンを識別するために使用され、トランザクションセット識別子によって特定のスキーマが決まります。
- 標準 X12 vs HIPAA の使用のためにより明確な設定オプションが用意されました。formValidation パラメーターは、標準 X12、SNIP 種別 1 検証を含む HIPAA、SNIP 種別 2 検証を含む HIPAA のいずれを使用するかを選択します (他の SNIP 検証種別はコネクタレベルでは実装されませんが、アプリケーションコードで実装することはできます)。X12 を選択した場合は標準 X12 スキーマのみを使用でき、HIPAA オプションのいずれかを選択した場合は HIPAA スキーマのみを使用できます。
- デフォルトの文字エンコーディングは Mule プラットフォームから取得されますが、設定で標準 X12 文字エンコードのいずれかに変更できます。
- 読み取りおよび書き込み操作で ID パラメーターが使用されなくなりました。書き込み操作に渡す実際のメッセージデータ内ですべてのパラメーター値を設定できます。
- X12 EDI Connector 1.x では validateBeforeWrite 設定オプションが用意されており、出力ストリームに書き込む前にデータのエラーを確認できます。X12 EDI Connector 2.x では、この動作が唯一の操作のモードであり、設定パラメーターはサポートされなくなりました。

## [](#anypoint-studio-7-でこのコネクタをインストールする方法)Anypoint Studio 7 でこのコネクタをインストールする方法

1. Anypoint Studio で、Studio タスクバーの Exchange アイコンをクリックします。
2. Anypoint Exchange で \[Login (ログイン)\] をクリックします。
3. コネクタを検索して \[Install (インストール)\] をクリックします。
4. 画面の指示に従ってコネクタをインストールします。

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

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

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

```text
-Xms4096m
-Xmx4096m
```

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

## [](#スキーマの作成方法)スキーマの作成方法

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

### [](#edi-スキーマ言語について)EDI スキーマ言語について

X12 EDI Module では ESL (EDI スキーマ言語) と呼ばれる YAML 形式を使用して EDI スキーマを表現します。基本 ESL は、構造 (X12 の用語ではトランザクションセット)、グループ (X12 のループ)、セグメント、複合、および要素の観点で EDI メッセージの構造を定義します。すべての​[サポート対象 X12 バージョン](https://docs.mulesoft.com/connectors/x12-edi/x12-edi-versions-x12)​の ESL が含まれています。ベース X12 トランザクションセットの [HIPAA バリエーション](https://docs.mulesoft.com/connectors/x12-edi/x12-edi-versions-hipaa)​のセットも含まれています。

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

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

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>YAML では、リストとキー-値ペアのセットの組み合わせが使用されます。必須項目が存在する場合、値の順序は重要ではありません。数字で構成される可能性があっても文字列として解釈するように意図される値は、引用符 (単一引用符または二重引用符) で囲みます (そうしないと、YAML パーサーは値を数値として処理するため)。インデントを使用して、リストのネストを示します。</p>
</div>
<div class="paragraph">
<p>読みやすくすることを目的として、ここで示している ESL 構造では、同じ定義の一部であるリストの前に、すべての簡単なキー-値ペアを定義しています。</p>
</div>
</td>
</tr>
</tbody></table>

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

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

1. たとえば X12 005010 850 など、カスタマイズするベーススキーマをインポートするオーバーレイスキーマを作成します。
2. セグメントの使用方法、位置、グループ、および数に関する全体的な構造をカスタマイズします。
3. 使用方法や数など、セグメントをカスタマイズします。

オーバーレイスキーマの構造は[完全なスキーマ定義](#1.0@partner-manager::edi-schema-language-reference.adoc)​とよく似ていますが、オーバーレイスキーマでは、スキーマ構造のすべての詳細が提供される代わりに、変更のみがリストされます。オーバーレイスキーマは、特定の取引パートナーとの実装規定を使用し、標準を拡張してカスタマイズする方法を指定します。

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

```yaml
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 トランザクションセットのベーススキーマ定義への変更を詳細に記述します。ほとんどの場合、この変更では、ベース定義内のセグメントまたはグループを未使用としてマークするという形式が使用されますが、使用方法または反復数の変更が許可されます。

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

```yaml
- 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 セグメントが使用されないことを指定します。

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

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 30%;">
<col style="width: 70%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">キー</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>idRef</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>変更するトランザクションセットの ID。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>name (名前)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>トランザクションセット名 (省略可能)。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>heading (見出し)、detail (詳細)、summary (概要)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>構造の各セクション内のセグメントおよびグループの変更のリスト。これらは省略可能であり、該当のセクションに変更がある場合にのみそれぞれが使用されます。</p>
</div></div></td>
</tr>
</tbody>
</table>

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

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 30%;">
<col style="width: 70%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">キー</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>idRef</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>参照されるセグメント ID。これは省略可能で、指定された場合は検証されますが、それ以外の場合は無視されます。position (位置) の値を使用して、セクション内のセグメントを一意に識別します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>position (位置)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>トランザクションセットセクション内のセグメントの位置。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>usage (使用方法)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>使用方法コード。必須 (Mandatory) を表す M、省略可能 (Optional) を表す O、条件付き (Conditional) を表す C、未使用 (Unused) を表す U を使用できます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>count (数)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>最大反復数の値。数値、または任意の反復数を意味する特別な値「<code>&gt;1</code>​」を使用できます。count (数) の値は省略可能で、値を指定しない場合、ベース定義の値が使用されます。</p>
</div></div></td>
</tr>
</tbody>
</table>

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

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 30%;">
<col style="width: 70%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">キー</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>groupIdRef</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>参照されるグループ ID。このキーは省略可能で、指定された場合は検証されますが、それ以外の場合は無視されます。position (位置) の値を使用して、セクション内のグループを一意に識別します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>position (位置)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>トランザクションセットセクション内のセグメントの位置。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>usage (使用方法)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>使用方法コード。必須 (Mandatory) を表す M、省略可能 (Optional) を表す O、条件付き (Conditional) を表す C、未使用 (Unused) を表す U を使用できます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>count (数)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>最大反復数の値。数値、または任意の反復数を意味する特別な値「<code>&gt;1</code>​」を使用できます。count (数) の値は省略可能で、値を指定しない場合、ベース定義の値が使用されます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>items (項目)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ループを構成するセグメント (およびネストされる可能性のあるループ) のリスト。</p>
</div></div></td>
</tr>
</tbody>
</table>

### [](#セグメントオーバーレイ)セグメントオーバーレイ

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

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

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

注意: セグメントオーバーレイはセグメントのすべての使用に自動的に適用されるものではありません。セグメントオーバーレイは、構造オーバーレイ内で参照されるセグメントに対してのみ有効です。構造オーバーレイでは、セグメントの使用方法を変更する必要はありませんが、適切な位置でセグメントを参照し、ベース定義の変更にセグメントオーバーレイが使用されるようにする必要があります。

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

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 30%;">
<col style="width: 70%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">キー</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>idRef</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>セグメント識別子。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>trim</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>セグメント内の切り取り位置。つまり、この位置以降のすべての値は未使用としてマークされます (省略可能)。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>values</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>個々の値の変更のリスト。</p>
</div></div></td>
</tr>
</tbody>
</table>

values リストは、位置によってセグメント内の値を参照します。この参照のキー-値ペアを次に示します。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 30%;">
<col style="width: 70%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">キー</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>position (位置)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>セグメント内の値の位置。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>name (名前)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>セグメント内の値の名前 (省略可能。指定しない場合はベース定義の値を使用)。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>usage (使用方法)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>使用方法コード。必須 (Mandatory) を表す M、省略可能 (Optional) を表す O、条件付き (Conditional) を表す C、未使用 (Unused) を表す U を使用できます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>count (数)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>最大反復数の値。任意の数値、または任意の反復数を意味する特別な値 (「<code>&gt;1</code>​」) を使用できます。count (数) の値は省略可能で、値を指定しない場合、ベース定義の値が使用されます。</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#anypoint-studio-7-で-mule-プロジェクトを作成する方法)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 (一般)\] タブのプロパティ](_images/x12-edi-general.jpg)

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

- X12 形式および検証 (標準 X12、HIPAA SNIP 種別 1、または HIPAA SNIP 種別 2)。
- 使用するメッセージ構造のスキーマ定義のリストを手動で作成するか、編集します。すべてが同じフォーム (X12 または HIPAA) を使用する必要があります。

**注意:**​ 機能肯定応答スキーマ種別 (997 または 999) を使用するには、\[Parser (パーサー)\] タブの **\[Generate 999 Functional Acknowledgments (999 機能肯定応答を生成)\]**​ 設定 (997 の場合は `false`​、999 の場合は `true`​) に一致する必要があります。

- メッセージの送受信に使用される X12 文字エンコード。
- 文字列データで使用できる X12 文字セット (BASIC、EXTENDED、または UNRESTRICTED)。
- 文字列置き換え文字。文字列データ内の無効な文字を置き換えるために使用します。
- \[GS08 Version (GS08 バージョン)\] / \[Release (リリース)\] / \[Industry Identifier Code (業界識別子コード)\] 項目のベーススキーマバージョンに付加される値を指定するバージョン識別子コードサフィックス。

### [](#identity-id-タブについて)\[Identity (ID)\] タブについて

![\[Identity (ID)\] タブのプロパティ](_images/x12-edi-identity.jpg)

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

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

### [](#parser-パーサー-タブについて)\[Parser (パーサー)\] タブについて

![\[Parser (パーサー)\] タブのプロパティ](_images/x12-edi-parser.jpg)

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

- 受信値の最小長と最大長を適用します。
- 使用可能な文字セットを適用する。
- 受信値の反復数制限を適用します。
- トランザクションセットで不明なセグメントを許可する。
- トランザクションセットでセグメント順を適用する。
- トランザクションセットで \[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 スキーマを自動的に含める。
- 生成される肯定応答 (例: ​`/hipaa/005010X231A1/999.esl`​) で使用する機能肯定応答スキーマへのパスを設定し、標準 HIPAA 005010X231A1 肯定応答を使用する。  
    パスに含まれるスキーマ種別 (997 または 999) は、\[Generate 999 Functional Acknowledgments (999 応答を生成)\] 設定 (997 の場合は `false`​、999 の場合は `true`​) と一致する必要があります。 パスを設定しないと、パーサーは X12 997 または 999 スキーマの適切な方を使用します。

### [](#writer-ライター-タブについて)\[Writer (ライター)\] タブについて

![\[Writer (ライター)\] タブのプロパティ](_images/x12-edi-writer.jpg)

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

- 出力を読みやすくするために使用されるセグメント間に記述される行末。
- インターチェンジ間で一意な GS グループ制御番号を生成するかどうか。
- グループおよびインターチェンジ間で一意の ST トランザクションセット制御番号を生成するかどうか。
- 実装規定参照 (ST03) 値。
- 先頭のインターチェンジ制御番号 (オブジェクトストアで現在の値が見つからない場合のみ使用)。
- 先頭のグループ制御番号 (オブジェクトストアで現在の値が見つからない場合のみ使用)。
- 先頭のトランザクションセット制御番号 (オブジェクトストアで現在の値が見つからない場合のみ使用)。
- デフォルトのインターチェンジ使用インジケーター (ISA15)。メッセージデータに値が存在しない場合に使用されます。
- インターチェンジ肯定応答を要求するかどうか (ISA14)。
- 制御セグメント情報 (特に制御番号) について指定された値を使用するかどうか。デフォルトの動作では、書き込むときに必ず制御番号を生成するため、代わりに選択した値を使用することができます。
- 出力の MIME タイプのデフォルト `application/plain`​ を使用するか、X12 固有の代替方法 `application/edi-x12`​ を使用するか。
- 入力データに名が制限を適用するかどうか。デフォルトでは長さを検証します。

## [](#例-x12-studio)例: X12 Studio

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

![マッピングフローの図](/mulesoft/current/ja-jp/x12-edi-connector/2.1/_images/x12-edi-mapping-flow.jpg)

```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-での設定オプション)XML での設定オプション

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

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">XML 値</th>
<th class="tableblock halign-left valign-top">Visual Studio オプション</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">formValidation="X12"/"HIPAA_SNIP​1"/"HIPAA_SNIP​2"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">スキーマ形式および検証レベル。デフォルトは「X12」。設定で使用されるスキーマは選択したフォーム (X12 または HIPAA) に一致する必要があります。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">schemas=値のリスト</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">コネクタで使用するスキーマのパスのリスト。ファイルシステムまたはクラスパスのどちらかのパスを使用できます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">characterEncoding="PLATFORM"/"ASCII"/"ISO8859_1"/"IBM1047"/"UTF8"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">メッセージの文字エンコード。デフォルトは「PLATFORM」。つまり、Mule プラットフォームのデフォルトのエンコード。この文字エンコードは、必ずメッセージの送受信両方に使用されます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">stringCharacterSet="BASIC"/"EXTENDED"/"UNRESTRICTED"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">文字列データで使用できる文字。デフォルトは「EXTENDED」。無効な文字は、置換文字が使用されている場合は置換文字で置換され、置換文字が設定されていないかパーサーオプションの受信メッセージで有効になっていない場合はエラーとして拒否されます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">stringSubstitutionChar="?"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">文字列値の無効な文字を置換するために使用される置換文字。デフォルトはなし。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">versionIdentifierSuffix="XYZ"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">グループのバージョン識別子コードサフィックス (GS)。この値が設定されている場合、送信メッセージの処理と受信メッセージの処理の両方に影響します。受信側では、GS08 バージョンコードは X12 スキーマバージョン (004010、005010 など) にこのサフィックスが続く必要があります。この値を設定しない場合、受信で GS バージョン識別子コードの先頭が設定されたスキーマバージョンであることのみ検証されます。送信側では、X12 スキーマバージョンとこのサフィックスの組み合わせは GS08 値として使用されます。</p></td>
</tr>
</tbody>
</table>

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">XML 値</th>
<th class="tableblock halign-left valign-top">Visual Studio オプション</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">interchangeIdQualifierSelf="ZZ"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Exchange での Mule の ID 修飾子 (ISA セグメント)。この値はインターチェンジ ID 値との組み合わせで使用し、一方を設定した場合はもう一方も設定する必要があります。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">interchangeIdSelf="mule"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Exchange での Mule の ID (ISA セグメント)。この値はインターチェンジ ID 修飾子の値との組み合わせで使用し、一方を設定した場合はもう一方も設定する必要があります。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">groupIdSelf="muleapp"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">グループでの Mule のアプリケーションコード (GS セグメント)。</p></td>
</tr>
</tbody>
</table>

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">XML 値</th>
<th class="tableblock halign-left valign-top">Visual Studio オプション</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">interchangeIdQualifierSelf="ZZ"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Exchange でのパートナーの ID 修飾子 (ISA セグメント)。この値はインターチェンジ ID 値との組み合わせで使用し、一方を設定した場合はもう一方も設定する必要があります。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">interchangeIdSelf="partner"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Exchange でのパートナーの ID (ISA セグメント)。この値はインターチェンジ ID 修飾子の値との組み合わせで使用し、一方を設定した場合はもう一方も設定する必要があります。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">groupIdSelf="partnerapp"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">グループでのパートナーのアプリケーションコード (GS セグメント)。</p></td>
</tr>
</tbody>
</table>

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">XML 値</th>
<th class="tableblock halign-left valign-top">Visual Studio オプション</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">enforceLengthLimits="true"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">受信値の最小長と最大長を適用します。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">enforceCharacterSet="true"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">使用可能な文字セットを適用する。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">enforceValueRepeats="true"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">受信値の反復数制限を適用します。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">allowUnknownSegments="false"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">トランザクションセットで不明なセグメントを許可する。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">enforceSegmentOrder="true"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">トランザクションセットでセグメント順を適用する。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">allowUnusedSegments="false"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">トランザクションセットで [Unused (未使用)] とマークされたセグメントを許可する。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">enforceSegmentRepeats="true"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">トランザクションセットでセグメントの反復数の制限を適用する。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">requireUniqueInterchanges="true"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">一意の ISA インターチェンジ制御番号 (ISA13) を必要とする。デフォルトの動作では、以前に処理されたインターチェンジ番号が記録され、同じパートナー (インターチェンジの送信者および受信者 ID により判別) からの重複するインターチェンジ番号が拒否されます。false の場合、代わりに、受信したインターチェンジの処理の続行が許可され、インターチェンジはアプリケーションフローに従い、番号が追跡され、適切に処理されます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">requireUniqueGroups="false"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">受信した機能グループのグローバルに一意であるグループ制御番号 (GS06) を適用する。デフォルトでは、グループ番号はインターチェンジでのみ一意である必要があります。true の場合、代わりに同じパートナーおよびアプリケーションから受信するすべてのインターチェンジでグループ番号が一意であることが必須です (インターチェンジの送信者および受信者の ID によって判断され、機能グループの送信者および受信者のアプリケーションコードと組み合わされます)。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">requireUniqueTransactionSets="false"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">受信したトランザクションセットのグローバルに一意であるトランザクションセット制御番号 (ST02) を適用する。デフォルトでは、トランザクションセット制御番号は特定の機能グループでのみ一意である必要があります。true の場合、代わりに同じパートナーおよびアプリケーションから受信するすべての機能グループでトランザクションセット番号が一意であることが必須です (インターチェンジの送信者および受信者の ID によって判断され、機能グループの送信者および受信者のアプリケーションコードと組み合わされます)。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">daysToStore="30"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">一意性を確認するためにインターチェンジ、グループ、トランザクションセットの番号を保存する最小日数。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">ackAllSets="false"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">受信したすべてのトランザクションセットの個別の AK2/AK5 (997) または AK2/IK5 (999) 肯定応答を含める。デフォルトでは、エラーが含まれるトランザクションセットのみが肯定応答に含まれ、含まれないトランザクションセットは暗黙的に肯定応答されます。このフラグを変更すると、受信する各トランザクションセットが明示的に肯定応答されます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">generate999Acks="false"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">997 機能肯定応答ではなく、999 実装肯定応答を生成する。デフォルトでは、997 機能肯定応答トランザクションセットはインターチェンジを受信するたびに生成されます。このフラグを変更すると、代わりに 999 実装肯定応答が生成されます。999 実装肯定応答のサポートに CTX セグメントの生成は含まれません。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">reportSegmentErrors="true"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">997/999 フラグで送信者にセグメントエラーの詳細をレポートする。true の場合、生成される 997/999 にセグメントエラーの詳細が含まれます。false の場合、詳細は含まれません。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">includeFASchema="true"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">997 または 999 機能肯定応答を予期し、997/999 スキーマを含める。デフォルトでは、997/999 肯定応答トランザクションセットのスキーマは X12 EDI Module によって使用されるスキーマのセットに自動的に含まれます。false の場合、997 または 999 スキーマを入力として処理する場合は直接指定する必要があります。997 または 999 機能肯定応答を生成するために使用されるスキーマはハードコード化されており、変更できません。</p></td>
</tr>
</tbody>
</table>

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">XML 値</th>
<th class="tableblock halign-left valign-top">Visual Studio オプション</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">dataSeparator="*"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">データ要素の区切り文字。設定された値は、デフォルトですべての出力メッセージに使用されますが、メッセージレベルで上書きできます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">componentSeparator="&gt;"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">コンポーネントの区切り文字。設定された値は、デフォルトですべての出力メッセージに使用されますが、メッセージレベルで上書きできます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">repetitionSeparator="U"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">反復の区切り文字。設定された値は、デフォルトですべての出力メッセージに使用されますが、メッセージレベルで上書きできます。U の値は反復が使用されないことを意味します。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">segmentTerminator="~"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">セグメントの終端文字。設定された値は、デフォルトですべての出力メッセージに使用されますが、メッセージレベルで上書きできます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">lineEnding="NONE"/"LF"/"CRLF"/"CR"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">セグメント間に追加する行末。デフォルトは NONE。これにより、セグメント間に行末を追加して、出力メッセージテキストを読みやすくすることができます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">sendUniqueGroupNumbers="false"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">一意のグループ制御番号を送信する。デフォルトでは、機能グループ制御番号は各インターチェンジ内で連続的に割り当てられ、異なるインターチェンジで再利用されます。true の場合、代わりに同じパートナーおよびアプリケーションに送信するすべてのインターチェンジに一意のグループ番号を割り当てます (インターチェンジの送信者および受信者の ID によって判断され、機能グループの送信者および受信者のアプリケーションコードと組み合わされます)。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">sendUniqueTransactionNumbers="false"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">一意のトランザクションセット制御番号を送信する。デフォルトでは、トランザクションセット制御番号は各機能グループ内で連続的に割り当てられ、異なるグループで再利用されます。true の場合、代わりに同じパートナーおよびアプリケーションに送信するすべてのインターチェンジに一意のトランザクションセット番号を割り当てます (インターチェンジの送信者および受信者の ID によって判断され、機能グループの送信者および受信者のアプリケーションコードと組み合わされます)。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">implementationConventionReference=""</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">トランザクションの実装規定参照 (ST セグメント)。この値が設定されている場合、メッセージパラメーターで上書きされない限り、ST 実装規定参照として使用されます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">initialInterchangeNumber="1"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">送信メッセージに使用される初期インターチェンジ制御番号。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">initialGroupNumber="1"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">送信メッセージに使用される初期グループ制御番号。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">initialSetNumber="1"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">送信メッセージに使用される初期トランザクションセット制御番号。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">ackRequested="false"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">送信されたトランザクションフラグの応答確認の要求。true の場合、送信されるすべてのトランザクションに 997/999 肯定応答が要求されます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">defaultUsageIndicator="P"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">デフォルトの ISA15 インターチェンジ使用インジケーター (「I」は情報、「P」は本番環境データ、「T」はテストデータ)。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">useSuppliedValues="false"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">制御セグメント識別子 (ISA/IEA、GS/GE、ST/SE セグメント) について指定されたデータから値を使用します。デフォルトの動作では、書き込むときに必ず制御番号を生成するため、代わりに選択した値を使用することができます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">outputEdiMimeType="APPLICATION_PLAIN​"/"APPLICATION_EDIX​12"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">メッセージに設定する、出力の MIME タイプ (デフォルトの「application/plain」または X12 固有の代替方法「application/edi-x12」)。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">writeEnforceLengthLimits="true"</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">書き込み値の最小長と最大長を適用します。true の場合、要素が長すぎたり短すぎたりすると例外がスローされます。false の場合は、値はそのまま使用されます。</p></td>
</tr>
</tbody>
</table>

## [](#スキーマの場所を設定する方法)スキーマの場所を設定する方法

コネクタを使用するには、プロジェクト内のスキーマの場所を認識しておく必要があります。特に設定せずに 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 設定を変更します。

```xml
<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 スキーマ定義を使用して、各トランザクションセットについてランタイムに適切なスキーマを読み込もうとします。ただし、この場合、コネクタの内外に渡されるデータの構造を定義するためのメタデータが表示されません。

スキーマ定義設定に 997 または 999 機能肯定応答スキーマが含まれる場合、そのスキーマが機能肯定応答の生成に使用されます。**注意:**​ 機能肯定応答スキーマ種別 (997 または 999) を使用するには、`generate999Acks`​ パーサーパラメーター (997 の場合は `false`​、`999`​ の場合は true) に一致する必要があります。

## [](#x12-メッセージ構造について)X12 メッセージ構造について

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

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">キー名</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Delimiters (省略可能)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">メッセージで使用する区切り文字 (読み取り操作で処理された最後のインターチェンジに基づいて設定されます)。write 操作について設定された場合、これはモジュール設定の値を上書きします。文字列の文字は位置に基づいて次の順で解釈されます: (データ区切り文字)、(サブ要素区切り文字)、(反復区切り文字、またはない場合は「U」)、(セグメントの終端文字)。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Errors (参照のみ)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">入力全体、またはアクティブなトランザクションセットのないインターチェンジに関連付けられているエラーのリスト。後述の「X12 EDI メッセージを読み取って検証する方法」セクションの X12Error 構造の説明を参照してください。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">FunctionalAcksGenerated (参照のみ)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">read 操作中にモジュールによって生成された 997 または 999 肯定応答のリスト (設定済み)。肯定応答を送信するには、肯定応答の送信に関する以下のセクションを参照してください。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Group (書き込みのみ)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">グループを書き込むときにデフォルトとして使用される GS グループヘッダーセグメント値のマップ。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Interchange (書き込みのみ)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">インターチェンジを書き込むときにデフォルトとして使用される ISA インターチェンジヘッダーセグメント値のマップ。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">InterchangeAcksGenerated (読み取りのみ)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">read 操作中にモジュールによって生成された TA1 肯定応答のリスト。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">InterchangeAcksReceived (読み取り専用)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">read 操作中にモジュールによって受信された TA1 肯定応答のリスト。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">InterchangeAcksToSend (書き込みのみ)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">write 操作中にモジュールによって送信される TA1 肯定応答のリスト。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">トランザクション</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">read 操作中にモジュールによって読み取られた、または write 操作中にモジュールによって送信されるトランザクションセットの階層。このトップレベルキーの値はキーとして標準バージョンを備えたマップであり、形式は「v005010」などのようになります。たとえば、バージョン 005010 850 および 855 のトランザクションセットを使用している場合、Transactions には 1 つのキー「v005010」を備えたマップが含まれます。このキーの値は、この値と 2 つのキー「850」と「855」を備えた別のマップとなります。これらのそれぞれには個別の 850 および 855 トランザクションセットのリストが含まれ、後で処理することもできます。997 機能肯定応答を使用している場合、「997」は 997 トランザクションセットのリストのキーです。</p></td>
</tr>
</tbody>
</table>

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">キー</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Detail</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">トランザクションセットの詳細セクションからのセグメントまたはループのマップ。値は、最大で 1 回のみ実行されるセグメントまたはループのマップ、反復される可能性のある値のマップのリストです。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Errors (参照のみ)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">トランザクションセットに関連付けられたエラーのリスト。(後述の「X12 EDI メッセージを読み取って検証する方法」セクションの X12Error クラスの説明を参照)。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Group (グループ)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">GS グループヘッダーセグメント値のマップ。メッセージを読み取る場合、このマップは囲むグループの実際のデータです (グループ内のすべてのトランザクションセットからリンクされた単一マップ)。メッセージを書き込む場合、これらの値は囲むグループを作成するために使用されます。このマップに入力されない場合のデフォルトの値は、メッセージレベルでの Group マップからの値となります。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Heading</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">トランザクションセットの見出しセクションからのセグメントまたはループのマップ。値は、最大で 1 回のみ実行されるセグメントまたはループのマップ、反復される可能性のある値のマップのリストです。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Id</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">トランザクション ID。含んでいるトランザクションリストのキーに一致する必要があります。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Interchange</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ISA インターチェンジヘッダーセグメント値のマップ。メッセージを読み取る場合、このマップは囲むインターチェンジの実際のデータです (インターチェンジ内のすべてのトランザクションセットからリンクされた単一マップ)。メッセージを書き込む場合、これらの値は囲むインターチェンジを作成するために使用されます (実際のマップが同じであるかどうかに関係なく、同じインターチェンジ値のトランザクションを単一のインターチェンジに収集します)。このマップで入力されていない値は、デフォルトでメッセージレベルのインターチェンジマップからの値になります。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Name (名前)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">トランザクションセット名。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">SetHeader</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ST トランザクションセットヘッダーセグメント値のマップ。これにより、読み取り操作の実際のヘッダーデータが提供され、書き込み操作の設定の上書きを提供できます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Summary</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">トランザクションセットの概要セクションからのセグメントまたはループのマップ。値は、最大で 1 回のみ実行されるセグメントまたはループのマップ、反復される可能性のある値のマップのリストです。</p></td>
</tr>
</tbody>
</table>

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">キー名</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Interchange</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ISA インターチェンジヘッダーセグメント値のマップ。受信処理によって生成される機能肯定応答では、このマップは送信者と受信者の識別コンポーネント (ISA05/ISA06 と ISA07/ISA08) が交換されたインターチェンジを含むデータのコピーです。メッセージを書き込む場合、これらの値は囲むインターチェンジを作成するために使用されます (実際のマップが同じであるかどうかに関係なく、同じインターチェンジ値のトランザクションを単一のインターチェンジに収集します)。このマップで入力されていない値は、デフォルトでメッセージレベルのインターチェンジマップからの値になります。</p></td>
</tr>
</tbody>
</table>

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">キー名</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Interchange</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ISA インターチェンジヘッダーセグメント値のマップ。受信処理によって生成される TA1 肯定応答では、このマップは送信者と受信者の識別コンポーネント (ISA05/ISA06 と ISA07/ISA08) が交換された TA1 に一致するインターチェンジのデータのコピーです。メッセージを書き込む場合、これらの値は囲むインターチェンジを作成するために使用されます (実際のマップが同じであるかどうかに関係なく、同じインターチェンジ値のトランザクションを単一のインターチェンジに収集します)。このマップで入力されていない値は、デフォルトでメッセージレベルのインターチェンジマップからの値になります。</p></td>
</tr>
</tbody>
</table>

## [](#時間項目について)時間項目について

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

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

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

## [](#x12-edi-メッセージを読み取って検証する方法)X12 EDI メッセージを読み取って検証する方法

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

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

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">プロパティ</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">segment</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">エラーの原因となったセグメントの入力内の開始値 0 のインデックス。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">segTag</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">エラーの原因となったセグメントのタグ。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">fatal</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">致命的なエラーのフラグ。関連付けられたトランザクションセット、グループ、またはインターチェンジがエラーの結果として拒否されたことを意味します。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">errorType</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X12 標準によって定義されたさまざまなエラーの種別の列挙: ​INTERCHANGE_NOTE​、GROUP_SYNTAX​、TRANSACTION_SYNTAX​、SEGMENT_SYNTAX​、または ELEMENT_SYNTAX​。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">errorCode</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">示されたエラーの種別の X12 標準によって定義されたエラーコード。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">errorText</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">エラーの説明。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">errorLevel</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">さまざまなエラーのレベルの列挙: ​ROOT_LEVEL​、INTERCHANGE_LEVEL​、GROUP_LEVEL​、または TRANSACTION_LEVEL​。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">interchangeId</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">インターチェンジ識別子、errorLevel が INTERCHANGE_LEVEL​ かそれ以上の場合。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">groupId</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">グループ識別子、errorLevel が GROUP_LEVEL​ または TRANSACTION_LEVEL​ の場合。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">transactionId</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">インターチェンジ識別子、errorLevel が TRANSACTION_LEVEL​ の場合。</p></td>
</tr>
</tbody>
</table>

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

## [](#x12-edi-メッセージを書き込む方法)X12 EDI メッセージを書き込む方法

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

## [](#機能肯定応答の送信方法)機能肯定応答の送信方法

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

次に例を示します。

![肯定応答フローの図](/mulesoft/current/ja-jp/x12-edi-connector/2.1/_images/x12-edi-ack-flow.jpg)

```xml
<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 Module によって生成される基本構造に追加します。X12 Connector はベーストランザクションセット構造への実装規定の変更を追跡しません。

## [](#インターチェンジ肯定応答の送信)インターチェンジ肯定応答の送信

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

## [](#関連情報)関連情報

- [X12 EDI Connector リリースノート](https://docs.mulesoft.com/jp/release-notes/connector/x12-edi-connector-release-notes-mule-4)
- [Anypoint Exchange の X12 EDI Connector](https://www.mulesoft.com/exchange/com.mulesoft.connectors/mule-x12-connector/)
- [ASC X12 トランザクションセット](http://www.x12.org/x12-work-products/x12-transaction-sets.cfm)
- [X12 ドキュメントリスト。](https://en.wikipedia.org/wiki/X12_Document_List)
- [EDI スキーマ言語リファレンス](#1.0@partner-manager::edi-schema-language-reference.adoc)
- [MuleSoft ヘルプセンター](https://help.mulesoft.com)