---
title: "ウォークスルー:カスタムフォームのセーブアクションを作成する"
slug: "walkthrough--creating-a-custom-form-save-action"
abstract: "エクスペリエンスフォームのカスタムデータ交換フレームワーク(DEF)セーブアクションの設定方法。"
---
# ウォークスルー:カスタムフォームのセーブアクションを作成する

このトピックでは、Experience Formsのカスタムデータ交換フレームワーク(DEF)セーブアクションを設定する方法の例を示します。

このウォークスルーでは、以下の方法を説明します:

-   フォームを作成する
-   テナントを作成する
-   値アクセスツールを作成する
-   パイプラインの作成
-   価値を創造する読者
-   パイプラインコンテキストビルダーの作成
-   テナントサービスエンドポイントの作成
-   フォームの設定をしてください。

## フォームを作成する

ウェブサイトの訪問者がウェブサイト上でフォームを送信すると、保存アクションがトリガーされます。

フォームを作成するには:

1.  Sitecore Formsのフォームダッシュボードで **「作成**」をクリックします。フォームの基にするテンプレートを選択します。
    
2.  フォーム要素ペインから要素をフォームにドラッグして、少なくとも1つのフィールドを追加してください。
    
3.  ツールバーで **「保存** 」をクリックしてフォームを保存し、名前を付けます。
    
    > !注必要に応じてフォームデザイナーを使って、さまざまなフォーム要素を使って [フォームのデザインを](https://doc.sitecore.com/xp/en/users/101/sitecore-experience-platform/design-a-form.html) 続けることができます。
    
4.  ウェブページでフォームを利用可能にするには、「 [ウェブページにフォームを追加](https://doc.sitecore.com/xp/en/developers/101/sitecore-experience-manager/add-a-form-to-a-webpage.html)」の指示に従ってください。
    

> !注Sitecoreスケールドデプロイメント(XP1)を行っている場合、フォームの .cshtmlファイルがコンテンツデリバリー(CD)サーバーにコピーされていることを確実にしてください。例えば、<CD server>\\Views\\Shared\\<filename>.cshtml。

## テナントを作成する

テナントはセーブアクションのために設定しなければならない設定のコンテナです。

テナントを作成するには:

1.  コンテンツエディターで */sitecore/system/Data Exchange*に移動します。
    
2.  **フォルダ**タブで「**空のデータ交換テナン**ト」をクリックします。
    
3.  作成したテナントを選択し、上部メニューバーの**Data Exchange SDK**タブをクリックします。リボンの上で **「テナントをアップグレード**する」をクリックします。
    
4.  テナント **のアップグレード** ダイアログの命令 **セット** 欄で「 **テナントサービス**」をクリックします。
    
5.  テナントのIDをメモしてください。 <tenant service>\\App\_Config\\ConnectionStrings.configファイルの接続文字列Sitecoreに、テナントID、ホスト、認証情報を追加します。例えば:
    
    <connectionStrings>
     <add name="sitecore" connectionString="database=master;tenant id={841B0E94-4348-494D-B32D-CA5E94F26ACC};host=my-sitecore;password=b;user name=sitecore\\admin;timeout=20" />
    </connectionStrings>
    
    > !注Sitecoreスケールドデプロイ(XP1)を行っている場合は、データベースパラメータを*Web*に変更し、ホストパラメータをCDサーバーのURLに変更してください。
    
6.  Sitecoreコンテンツ管理サーバーのApp\_Config\\connectionstring.configファイルに、そのテナントのウェブサービスに関連付けられた接続文字列があることを確認してください。例えば:
    
    <xmlversion="1.0" encoding="utf-8">
    <connectionStrings>
     <add name="my-tenant" connectionString="https://my-tenant.service"/>
    </connectionStrings>
    
7.  Sitecoreスケールドデプロイメント(XP1)の場合は、CDサーバーのconnectionstring.configファイルにもテナントサービスの接続文字列を追加する必要があります。
    

## 値アクセスツールを作成する

値のアクセルは、フォームのフィールドの値を読み取ります。バリューアクセサはバリューアクセサセットに集められます。

値アクセスを作成するには:

1.  */data access/value accessor set/providers*へ移動してください。すでに*Forms*フォルダがある場合は開いてください。もしなければ、**フォルダ**タブで**Forms Value Accessor Set**をクリックして*Forms*フォルダを作成・開いてください。
    
2.  *Forms*フォルダの**フォルダ**タブで**「フォーム 値 アクセルセット**」をクリックして新しいアイテムを作成します。例えば「*フォームに連絡する」*と名付けてください。
    
    ![Get in touch form element in the content tree](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/60/data-exchange-framework/images/example%20form%20in%20content%20tree.png>)
    
3.  作成したアイテムを選択し、「 **コンテンツ** 」タブに切り替えます。作成したフォームを選択してアイテムを保存します。
    
    ![Settings section on the Content tab on the Get in touch form item](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/60/data-exchange-framework/images/settings%20for%20example%20form.png>)
    
4.  上部メニューバーで **「データ交換**」をクリックし、「 **フォームフィールドを追加**」をクリックします。
    
    ![Add Form Fields button on the Data Exchange tab on the menu ribbon](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/60/data-exchange-framework/images/add%20form%20fields%20button.png>)
    
5.  値のアクセルを作成するには、読みたい値のフォームフィールドを選択し、**OK**をクリックします。
    
    ![Form field value accessors dialog](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/60/data-exchange-framework/images/form%20field%20value%20accessors.png>)
    
    値のアクセス器は値のアクセス器セット項目の下に位置します。
    
    ![Full name value accessor under the Get in touch form item in the content tree](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/60/data-exchange-framework/images/form%20field%20in%20content%20tree.png>)
    

## パイプラインの作成

パイプラインは、アクションを実行する個々のプロセスであるパイプラインステップを収集・整理します。

パイプラインを作成するには:

1.  */pipelines*へアクセスしてください。
    
2.  右側のペインの **フォルダ** タブで **「パイプライン**」をクリックします。例えば、*Form Testing Pipeline*と名付けてください。
    
3.  **フォルダ**タブで「**Write to Log Pipeline Step**」をクリックすると、新しいパイプラインステップを作成できます。例えば「*Write to Log Pipeline Step*」と名付けてください。
    
4.  パイプラインステップを選択し、フル **ネーム** 値のアクセクターを次のように設定します:
    
    ![Configuring the value accessor on the Write to Log Pipeline Step dialog](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/60/data-exchange-framework/images/object%20location%20for%20pipeline%20step.png>)
    
5.  変更を保存してください。
    

## 価値を創造する読者

フォーム内のフィールドの値を読むために値リーダーを使って読みます。

価値ある読者を生み出すために:

1.  */data access/value readers/Common/ に移動します。*
    
2.  **ホーム**タブで新しいアイテムを作成するには、**HttpRequest Content Value ReaderからDot Net Object**をクリックしてください。例えば、*FormModel From Http Content*と名付けてください。
    
3.  **タイプ**フィールドを*Sitecoreに設定します。DataExchange.ExperienceForms.Models.FormModel, Sitecore.DataExchange.ExperienceForms.Models*.
    
    ![The Type field in the Settings section for the FormModel From Http Content item](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/60/data-exchange-framework/images/settings%20for%20formmodel.png>)
    
4.  */data access/value readers/Common/ に移動します。*
    
5.  **フォルダ**タブで**「生の値リーダー**」をクリックして新しいアイテムを作成します。例えば、名前を*Raw Value Reader*。
    
6.  */data access/value readers/Common/ に移動します。*
    
7.  **フォルダ**タブで「**同期設定プラグイン値リーダー**」をクリックして新しいアイテムを作成します。「*同期設定プラグイン値リーダー*」と名付けてください。
    
8.  **ストレージの場所**を*Source*に設定してください。
    
    ![The Storage Location field in the Setting section for the Synchronization Settings Plugin Value Reader item](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/60/data-exchange-framework/images/storage%20location%20for%20value%20reader.png>)
    
9.  変更を保存してください。
    

## パイプラインコンテキストビルダーの作成

パイプラインコンテキストビルダーコンポーネントは、適切な形式でリクエストデータを抽出し、パイプラインコンテキストを構築し、リクエストからデータのコンテキストを提供します。

パイプラインコンテキストビルダーを作成するには:

1.  */テナントサービス設定/パイプラインコンテキストビルダー*へ移動してください。
    
2.  **フォルダ**タブで「**パイプラインコンテキストプラグインビルダー**」をクリックして新しいアイテムを作成します。例えば、*Pipeline Context Plugin Builder*と名前を付けます。
    
3.  **Value Transformer**フィールドを、前のステップで作成したhttpリクエスト値リーダーに設定してください。
    
4.  **Plugin Readers**フィールドを、前のステップで作成した同期設定のプラグイン値リーダーに設定してください。
    
    ![The Plugin Readers field in the Content tab of the Pipeline Context Plugin Builder item](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/60/data-exchange-framework/images/settings%20for%20pipeline%20context%20plugin%20builder.png>)
    
5.  変更を保存してください。
    

## テナントサービスエンドポイントの作成

DEFパイプラインを通じてリクエストデータをプッシュするためには、受信リクエストを解決するためにテナントサービスエンドポイント(TSE)が必要です。

テナントサービスエンドポイントを作成するには:

1.  */Tenant Service Endpoints*へ移動してください。
    
2.  **フォルダ**タブで「**パイプラインテナントサービスエンドポイント**」をクリックして新しいアイテムを作成します。例えば「*フォーム提出エンドポイント*」と呼びます。
    
3.  エンドポイントは以下の表のパラメータで設定します:
    
    パラメータ
    
    内容
    
    リクエスト値リーダー
    
    *Value Readers/Common/Raw Value Reader*
    
    パイプラインコンテキストビルダー
    
    *パイプラインコンテキストビルダー/パイプラインコンテキストプラグインビルダー*
    
    パイプライン
    
    *Pipelines/Form Testing Pipeline*
    
4.  **有効にする**チェックボックスを選択してください。変更を保存してください。
    

## フォームの設定

ユーザーがフォームを保存した際にテナントサービスエンドポイントをトリガーするようにフォームを設定する必要があります。

フォームの設定:

1.  Sitecore Launchpadで **「フォーム** 」をクリックし、作成したフォームを選択します。
    
2.  フォームの **「送信** 」ボタンを選択してください。 **「一般** 」タブの **「アクション提出** 」セクションでプラス記号をクリックすると、アクションのリストが表示されます。リスト内で**「DEF 同期プロセスをトリガー**」をクリックすると、送信アクションを追加できます。
    
    ![The Trigger DEF Sync Process option in the list of Submit actions](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/60/data-exchange-framework/images/select%20trigger%20def%20sync%20process.png>)
    
3.  「 **テナントサービスエンドポイント選択** 」ダイアログのData Exchange構造で、フォーム提出時にトリガーしたいテナントサービスエンドポイントを選択します。
    
4.  **接続文字列名**フィールドに、テナントWebサービスのURLを指す接続文字列を入力します。
    
    ![The Select the tenant service endpoint dialog](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/60/data-exchange-framework/images/select%20the%20tenant%20service%20endpoint.png>)
    
5.  フォームをウェブページに添付して公開します。ユーザーがフォームを提出すると、テナントサービスエンドポイントが選択したパイプラインを実行します。
    

プロセスをトラブルシューティングしたい場合は、テナントサービスのログを確認してください。