> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ドキュメントワークフローのマッピング

> CData Arc で、パートナードキュメントとソースまたは宛先のコネクタ間のEDI ドキュメントワークフローのマッピングを設定およびテストします。

export const siteNameShort = "Arc";

TPMC の重要なコンポーネントは、受信または送信のEDI ドキュメントと、データが保存または送信されるコネクタとの間のマッピングを設定することです。

*受信* マッピングは、MFT プロトコル経由でパートナーからEDI ドキュメントを受信し、EDI 標準を使用してそれらをEDI からXML に変換し、続いてデータベースなどの宛先コネクタにマッピングすることに依存します。

*送信* マッピングは、ソースコネクタ（データベースなど）からXML としてデータを取得し、そのデータをEDI 標準のXML 表現にマッピングし、XML をEDI に変換し、続いてそのEDI ドキュメントをMFT プロトコル経由でパートナーに送信することに依存します。

ドキュメントワークフローは2つの方法で定義します。

* [パートナー](./edi-partners-tab#ドキュメントの選択または追加)タブから、パートナーの名前をクリックし、続いて**Workflows** タブを選択します。ドキュメントを追加してワークフローを起動する方法については、[ドキュメントの選択または追加](./edi-partners-tab#ドキュメントの選択または追加)を参照してください。
* [ドキュメント](./edi-documents-tab)タブから、既存のドキュメントの名前をクリックするか、**Add Document** を選択して新しいドキュメントを作成します。ドキュメントを追加してワークフローを起動する方法については、[ドキュメントタブからのドキュメントの作成](./edi-documents-tab#ドキュメントタブからのドキュメントの作成)を参照してください。

## ドキュメントワークフローの追加

ドキュメントワークフローの定義には、次の手順が含まれます：

1. **Add Document Workflow** 画面を完了します。
   1. **パートナー**タブからドキュメントを追加する場合は、**Add Workflow** をクリックしてドキュメントワークフローを起動します。この場合、**Add Document Workflow** 画面のフィールドは事前入力されています。ドキュメント名は変更できますが、その他のフィールドはすべて固定です。
   2. **ドキュメント**タブからドキュメントを追加する場合は、**Add Document Workflow** 画面のフィールドを手動で完了する必要があります。
2. [ソースまたは宛先のコネクタの選択と設定](#ソースまたは宛先の選択と設定)
3. [マッピングの設定](#マッピングの設定)。マッピングは、マッピングを使用しない[File](../connectors/file)、[AMQP](../connectors/amqp)、[Apache Kafka](../connectors/apachekafka)を除くすべてのコネクタに適用されます。詳細については、[マッピングなしのドキュメントワークフロー](./workflow-nomapping)を参照してください。

### ソースまたは宛先の選択と設定

*受信* ドキュメントを作成する場合は、データが追加される宛先コネクタを指定する必要があります。*送信* ドキュメントを作成する場合は、データを取得するソースコネクタを指定する必要があります。利用可能なコネクタは、{siteNameShort} の[Database](../connectors/database-connectors)コネクタおよび[Other](../connectors/other-connectors)コネクタ、[File](../connectors/file)コネクタ、[Workspace Send](../connectors/workspace-send)コネクタ（受信ドキュメントのみ）、[Workspace Receive](../connectors/workspace-receive)コネクタ（送信ドキュメントのみ）です。

次の画像は送信ドキュメントのソースの設定を示していますが、受信ドキュメントの宛先にも同じ原則が適用されます。この例では、パートナーの**Workflow** タブからソースを定義していますが、**Documents** タブからも同じ結果を得ることができます。

1. **Workflow** タブから、**Add Source** をクリックします。

   <img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/edi_add_source.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=93660927ca2c974e1f234d12c62b7800" alt="Workflow タブのAdd Source ボタン" width="600" data-path="public/images/edi_add_source.png" />

2. **Select Source** 一覧でコネクタをハイライトし、**Add** をクリックします。

   <img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/edi_select_source_connector.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=c709122ace2f38bca408e0300c35ab98" alt="Select Source コネクタダイアログ" width="300" data-path="public/images/edi_select_source_connector.png" />

3. プラス記号を使用して新しい**Connection** を作成するか、ドロップダウンを使用して既存のものを選択します。

   <img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/edi_source_config.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=3fdea4c0c83fbad74fcd7eeb4b1fd705" alt="ソースコネクタの設定" width="300" data-path="public/images/edi_source_config.png" />

4. 新しい接続を追加する場合は、**Add Connection** ウィンドウで次のフィールドを完了します：
   * Name
   * Server
   * Port
   * User
   * Password
   * AWS Access Key（オプション）
   * AWS Secret Key（オプション）
   * AWS Role ARN（オプション）

5. **Test Connection** をクリックします。

6. 送信ドキュメントで利用可能なアクションは`Select` のみであるため、接続を追加してテストしたら、**Next** をクリックします。（受信ドキュメントのアクションは`Upsert` です。詳細については、[アクション](#アクション)を参照してください。）

これにより、マッピングを完了する**Action** コネクタ設定タブが開きます。このタブの使用方法については、[マッピングの設定](#マッピングの設定)を参照してください。

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/edi_mapping_start.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=dcefa164d022f901bdc5ba4a5d3895e3" alt="Action タブを表示するマッピング開始ページ" width="800" data-path="public/images/edi_mapping_start.png" />

<Note>
  * その他の設定タブ（**Settings** や**Automation** など）を使用して、コネクタの設定を完了します。設定オプションの詳細については、疑問符のヘルプアイコンをクリックして、コネクタのドキュメントを開いてください。
  * 最初のセットアップ後に接続を変更する必要がある場合は、**Settings** タブの**Connection** フィールドを使用します。
</Note>

## マッピングの設定

接続を確立したら、マッピングが必要なテーブルを選択する必要があります。受信ドキュメントを作成する場合は、**Add Destination Structure** をクリックします。送信ドキュメントを作成する場合は、**Add Source Structure** をクリックします。この例では宛先構造の追加を示しています。

次の画像は、完成したマッピングに、画面上の各要素を説明する注釈を付けたものです。各番号は以下の説明に対応しています。

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/edi_mapping_outgoing_annotated.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=fde462da6af2d7ac9d1f2b9024e4a9eb" alt="注釈付きの送信ドキュメントマッピング" width="800" data-path="public/images/edi_mapping_outgoing_annotated.png" />

1. ドキュメントまたはコネクタの名前。
2. コネクタの種類。
3. ドキュメントのアクション。値は、受信ドキュメントの場合は**Upsert**、送信ドキュメントの場合は**Select** です。
4. マッピングのテストステータス。値は、**Test Successful**、**Tested with Errors**、または**Not Tested** です。
5. XML ストリーミングのオン / オフを切り替えます。オンの場合、マッピングエンジンは、ループの完了後に、マッピング内の最上位の`Foreach` の現在のイテレーションのドキュメントオブジェクトモデル（DOM）を破棄します。これにより、大きなXML ドキュメントのパフォーマンスが大幅に向上します。マッピングエンジンがマッピングを解決できない場合は、自動的にXML ストリーミングをオフに切り替えます。
6. XML 属性を表示するか非表示にするかを切り替えます。
7. マッピングを更新します。
8. **Test Mapping** ページを開きます。テスト結果は#4 に表示されます。（詳細については、[マッピングのテスト](#マッピングのテスト)を参照してください。）
9. マッピングを保存します。
10. 設定されたデータソース内のターゲットテーブル。
11. マッピングの方向。
12. EDI ドキュメントのスキーマ（この例では810 請求書）。
13. ソース側と宛先側の検索バー。
14. ソーステーブルの構造。
15. テーブルの名前。これはテーブルノードとも呼ばれます。
16. テーブル内の列。これは列ノードとも呼ばれます。
17. 宛先ドキュメントの構造。
18. 完成したマッピング。

ドロップダウンからテーブルを選択します。

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/edi_select_first_table.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=341d542e4d8c15a289e568549e0ad393" alt="マッピングで最初のテーブルを選択" width="600" data-path="public/images/edi_select_first_table.png" />

マッピングにさらにテーブルを追加するには、最初のテーブルへのリンクをクリックし、続いて**Add Child Table** の矢印をクリックして次のテーブルを選択します。

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/edi_select_child_table.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=8a2bb62ca729a1e8c726d9975901bda1" alt="マッピングで子テーブルを選択" width="600" data-path="public/images/edi_select_child_table.png" />

必要なすべてのテーブルを追加するまで、これらの手順を繰り返します。変更を加えると、マッピングページには最新のテーブル構造が表示されます。

マッピングページでは、EDI ドキュメントとソースまたは宛先のコネクタとの間のリンクを作成できます。受信ドキュメントの場合、EDI ドキュメント構造は左ペインに、コネクタテーブル構造は右ペインに表示されます。送信ドキュメントの場合は、上の注釈付き画像のとおり逆になります。

マッピングエディタの使用方法に関する詳細な手順については、[マッピング](../mapping)ドキュメントの[マッピングの設定](../mapping/mapping-config)を参照してください。

<Note>以前に保存したマッピングを編集するには、**EDI > Documents** をクリックし、続いてドキュメント名をクリックします。**Document Workflow** セクションで、**Document Destination**（受信ドキュメントの場合）または**Document Source**（送信ドキュメントの場合）のコネクタへのリンクをクリックします。</Note>

### ソースと宛先について

前述のとおり、*受信* ドキュメントを作成する場合は、データの送信先となる宛先コネクタを指定する必要があります。EDI ドキュメント構造は左ペインに、コネクタテーブル構造は右ペインに表示されます。

*送信* ドキュメントを作成する場合は、データを取得するソースコネクタを指定する必要があります。この場合、コネクタテーブル構造は左ペインに、EDI ドキュメント構造は右ペインに表示されます。

{siteNameShort} には、テーブルおよびドキュメント構造内の情報を操作するさまざまな方法があります。詳細については、[テーブル構造ノード](#テーブル構造ノード)および[ドキュメントノード](#ドキュメントノード)を参照してください。

ドキュメントスキーマを変更する、またはソースや宛先のXML 構造を表すテンプレートファイルをアップロードするには、ドキュメントスキーマへのリンクをクリックして**Upload File** を選択します。これは、パートナーが送受信を想定しているもののサンプルドキュメントを提供してくれる場合に役立ちます。例えば、パートナーがサンプルのX12 850 を提供してくれた場合、通常のワークスペースで[X12 コネクタ](../connectors/x12)を`X12 to XML` モードで実行することで、それをXML に変換できます。続いて、その出力XML をテンプレートファイルとしてアップロードできます。

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/edi_upload_template_file.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=3197da3947ab33b1a70457f9209129ab" alt="テンプレートファイルのアップロードダイアログ" width="300" data-path="public/images/edi_upload_template_file.png" />

テンプレートファイルを参照し、続いて**Upload Template File** をクリックします。

#### アクション

コネクタを設定する際には、2つのアクションが利用できます：

* Upsert は受信ドキュメントのアクションです。このアクションは、ターゲットの宛先テーブルにデータを挿入または更新します。宛先テーブルにレコードがすでに存在する場合は、入力から提供された値を使用して既存のデータに対する更新が実行されます。
* Select は送信ドキュメントのアクションです。このアクションは、ターゲットのデータソースからデータを取得します。

### テーブル構造ノード

このセクションでは、ソースまたは宛先のテーブル構造を表示するマッピングペインで利用可能なオプションについて説明します。構造には、テーブルノードと列ノードの2種類のノードがあります。テーブルノードはテーブル自体を表し、列ノードはテーブル内の列を表します。

#### テーブルノード

テーブルノードはテーブルアイコンで示されます。テーブルノードにカーソルを合わせると、2つの追加オプションが表示されます：

* じょうごアイコンをクリックすると、マッピングにフィルター条件を追加できる**Add Mapping Conditions** ページが開きます。詳細については、[条件エディタの使用](../mapping/mapping-condition-editor)を参照してください。（受信ドキュメントマッピングでのみ利用可能。）

* 省略記号をクリックすると、そのテーブルノードのオプション一覧が開きます：

  * **Rename Table** では、ノードの名前を変更できます。
  * **Remove Table** はノードを削除します。
  * **Table Settings** は、マッピングに含める列、および[フィルター](#フィルターグループ)を適用するかどうかを選択できる編集ウィンドウを開きます。（送信ドキュメントマッピングでのみ利用可能。）
  * **Edit Columns** は、マッピングに含める列を選択できる編集ウィンドウを開きます。（受信ドキュメントマッピングでのみ利用可能。）
  * **Add** は、マッピングで作成して使用できるノードの新しい一覧を開きます。（受信ドキュメントマッピングでのみ利用可能。）オプションは次のとおりです：
    * **Add Header** は、値をマッピングできるヘッダーノードを作成します。マッピングされた値は出力ファイルには含まれませんが、マッピング出力メッセージのヘッダーとして追加されます。
    * **Add Loop** は、選択したノードの上にループノードを作成し、そのノードはループノード内にネストされます。詳細については、[ループのマッピング](../mapping/mapping-config#ループのマッピング)を参照してください。
    * **Add Condition** では、条件がtrue の場合にのみデータが宛先にUpsert されるよう、宛先ノードに条件を追加できます。詳細については、[条件エディタの使用](../mapping/mapping-condition-editor)を参照してください。
    * **Add Code Script** は、スクリプトノードに名前を付けてカスタムの{siteNameShort}Script を指定できる**Add Script** ウィンドウを開きます。
    * **Add Variable** は、選択したノードの下に変数ノードを作成します。詳細については、[変数](../mapping/mapping-node-value-editor#変数)を参照してください。

#### 列ノード

列ノードは、テーブル内の列を表します。すべての列ノードには、データベース内の列のデータ型である型があります。7つの異なるデータ型があり、それぞれに固有のシンボルがあります。列にカーソルを合わせると、そのデータ型、サイズ、null 許容かどうかが表示されます。データ型は次のとおりです：

* String
* Number
* Binary
* Boolean
* Date
* Time
* Date and Time

列の行にカーソルを合わせて省略記号をクリックすると、そのノードのオプション一覧が開きます：

* **Rename Column** では、ノードの名前を変更できます。
* **Remove Column** はノードを削除します。
* **Add** は、マッピングで作成して使用できるノードの新しい一覧を開きます。（受信ドキュメントマッピングでのみ利用可能。）オプションは次のとおりです：
  * **Add Header** は、値をマッピングできるヘッダーノードを作成します。マッピングされた値は出力ファイルには含まれませんが、マッピング出力メッセージのヘッダーとして追加されます。
  * **Add Loop** は、選択したノードの上にループノードを作成し、そのノードはループノード内にネストされます。詳細については、[ループのマッピング](../mapping/mapping-config#ループのマッピング)を参照してください。
  * **Add Code Script** は、スクリプトノードに名前を付けてカスタムの{siteNameShort}Script を指定できる**Add Script** ウィンドウを開きます。
  * **Add Variable** は、選択したノードの下に変数ノードを作成します。詳細については、[変数](../mapping/mapping-node-value-editor#変数)を参照してください。
* **Add Tracking** は、[追跡されたヘッダー](../getting-started/administration/activity#追跡されたヘッダー)をマッピングに追加します。ノードで追跡が有効になっていると、コンパスアイコンが表示されます。

### ドキュメントノード

ドキュメントノードは、マッピングのもう一方の側、つまり非データベース側のノードを指します。これらのノードはデータソース（列を持つテーブル）に明示的に関連付けられているわけではなく、EDI データをXML 構造で表します。これらのノードは、送信ドキュメントの場合はマッピング先となり、受信ドキュメントの場合はマッピング元となります。

送信ドキュメント（Select アクションを使用）の場合、じょうごアイコンをクリックすると、マッピングにフィルター条件を追加できる**Add Mapping Conditions** ページが開きます。詳細については、[条件エディタの使用](../mapping/mapping-condition-editor)を参照してください。省略記号をクリックすると、宛先ドキュメントで次のオプションを使用できます：

* **Rename Node** では、ノードの名前を変更できます。
* **Edit XPath** では、ノードのXPath を編集できます（すでに`Foreach` としてマッピングされている要素のみ）。
* **Delete Node** では、ドキュメントからノードを削除できます。
* **Add Node**
  * **Add Sibling** は、選択したノードと同じレベルにノードを追加します。
  * **Add Attribute** は、選択したノードに属性を追加します。
  * **Add Child** は、選択したノードの子としてノードを追加します。
  * **Add Header** は、値をマッピングできるヘッダーノードを作成します。マッピングされた値は出力ファイルには含まれませんが、マッピング出力メッセージのヘッダーとして追加されます。
  * **Add Loop** は、選択したノードの上にループノードを作成し、そのノードはループノード内にネストされます。詳細については、[ループのマッピング](../mapping/mapping-config#ループのマッピング)を参照してください。
  * **Add Condition** は、条件がtrue の場合にのみデータが宛先にUpsert されるよう、条件を追加できる[条件エディタ](../mapping/mapping-condition-editor)を開きます。
  * **Add Code Script** は、スクリプトノードに名前を付けてカスタムの{siteNameShort}Script を指定できる**Add Script** ウィンドウを開きます。
  * **Add Variable** は、選択したノードの下に変数ノードを作成します。詳細については、[変数](../mapping/mapping-node-value-editor#変数)を参照してください。
* **Cut Node** は、選択したノードを現在の場所から切り取ります。
* **Copy Node** は、選択したノードをコピーします。
* **Paste as Child** は、切り取りまたはコピーしたノードを選択したノードの子として貼り付けます。

受信ドキュメント（Upsert アクションを使用）の場合、ソースドキュメント構造で省略記号をクリックすると、次のオプションを使用できます：

* **Rename Node** では、ノードの名前を変更できます。
* **Delete Node** では、ドキュメントからノードを削除できます。
* **Add Node**
  * **Add Sibling** は、選択したノードと同じレベルにノードを追加します。
  * **Add Attribute** は、選択したノードに属性を追加します。
  * **Add Child** は、選択したノードの子としてノードを追加します。
* **Cut Node** は、選択したノードを現在の場所から切り取ります。
* **Copy Node** は、選択したノードをコピーします。
* **Paste as Child** は、切り取りまたはコピーしたノードを選択したノードの子として貼り付けます。

**Edit Node** を使用して、**Edit Node Value** ページを開くこともできます。[ノード値エディタの使用](../mapping/mapping-node-value-editor)を参照してください。

## マッピングのテスト

マッピングを設定したら、テストする必要があります。ページ上部の**Test Mapping** ボタンをクリックします。次の画像は、受信ドキュメントのテストを示しています。

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/edi_test_mapping.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=12b8743f4bcb7dca3b2dd7f3884dcf63" alt="Test Mapping ページ" width="800" data-path="public/images/edi_test_mapping.png" />

テストページのソース側には、**XML** と**Headers** の2つのタブがあります（**Headers** タブは受信ドキュメントでのみ利用可能）。ソースには、テストするドキュメントまたはテーブル構造のXML 表現が入力されますが、必要に応じて編集できます。受信ドキュメントの場合は、**Headers** タブをクリックして、マッピングで使用したいヘッダーを追加します（詳細については、[追跡されたヘッダー](../getting-started/administration/activity#追跡されたヘッダー)を参照してください）。準備ができたら、**Test Mapping** をクリックします。

テスト結果のインジケーターは、パートナーの**Workflow** ページとマッピング自体に表示されます。マッピング上の値は、**Test Successful**、**Tested with Errors**、または**Not Tested** です。**Workflow** ページには、テスト成功にはチェック、未テストのマッピングには茶色の感嘆符、エラーのあるテストには赤色の感嘆符が表示されます。エラーの詳細については、アイコンにカーソルを合わせてください。

<Note>受信ドキュメントをテストする場合は、ライブデータでテストすることになります。**Test Mapping** をクリックすると、{siteNameShort} はマッピングのテスト後に`upsert` の実行を試みます。</Note>

## フィルターの使用

ソーステーブル構造でコネクタが選択するデータをフィルタリングする必要がある場合は、省略記号をクリックして**Table Settings** を選択し、続いて**Filters** タブをクリックします。**Edit \<TableName> Settings** ウィンドウが開き、個々のフィルターとフィルターグループを定義できます。

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/edi_filters.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=a53cab04c4a08a71b902655111c1e533" alt="Edit Table Settings ウィンドウのFilters タブ" width="700" data-path="public/images/edi_filters.png" />

### フィルタールールの作成

フィルターを作成するには、次の手順に従います：

1. **Add Filter** をクリックします。
2. 新しいルールのドロップダウン一覧で、フィルタリングしたい列を選択します。
3. フィルタリング条件を選択します。利用可能なフィルタリング条件は、選択する列のデータ型によって異なります。
4. フィルタリング条件に値が必要な場合は、空白の値フィールドにその値を入力します。フィルタリング条件に値が不要な場合（例えば、**Is Null** を選択した場合）は、値フィールドが消えます。

例えば、Author という名前の列に、Smith を含む値のみを選択するフィルターを作成できます。この例では、列は**Author**、条件は**Contains**、値は**Smith** です。

### フィルターグループ

**Add Filter** をクリックして、テーブルに複数のフィルターを適用できます。フィルターはグループで分けられ、デフォルトではすべてのフィルターが同じグループに属します。**Add Group** をクリックして、フィルターを分ける複数のグループを作成できます。

グループ内の各フィルターは、グループの上部で選択するオプションに基づいて、互いに作用します：

* **NOT** トグルを使用して、フィルター条件を反転します。例えば、上記の**Author** フィルターの例で**NOT** トグルを有効にすると、コネクタは**Smith** を含ま*ない* Author の値を選択するよう指示されます。
* **AND** または**OR** を選択して、複数のフィルターのグループロジックを決定します。
  * **AND** を選択すると、フィルター条件を満たすには、グループ内のすべてのフィルターがtrue である必要があります。
  * **OR** を選択すると、フィルター条件を満たすには、グループ内の少なくとも1つのフィルターがtrue である必要があります。複数のフィルターを満たすこともでき、結果は1つだけ満たされた場合と同じです。

### クエリビューの使用

**Query View** をオンに切り替えると、データソースからデータを選択するカスタムSQL クエリを記述できます。これにより、デザイナーで作成されたクエリが上書きされます。

<img src="https://mintcdn.com/cdata-arc/6KwLqCromZpN96Gn/public/images/edi_query_view.png?fit=max&auto=format&n=6KwLqCromZpN96Gn&q=85&s=be49325e0f879adc366b1000e4bdb3c7" alt="マッピングフィルターのQuery View モード" width="700" data-path="public/images/edi_query_view.png" />
