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

# ABBYY FlexiCapture Connector for Appian と連携するためにカスタム Appian アプリケーションを設定する

> AFC ルールと UploadDocument および CreateRecord の Web API メソッドを作成して、FlexiCapture コネクタ用のカスタム Appian アプリケーションを設定します。

カスタム Appian アプリケーションを ABBYY FlexiCapture Connector for Appian と連携できるようにするには、いくつかのエンティティを作成します。このページでは、コネクタに必要な 2 つの AFC 式ルールと 2 つの Web API メソッドについて説明します。残りのエンティティについては、[Modify the ABBYYFlexiCapture application](/ja/flexi-capture/connectors/appian/appian-fc-app-modify) を参照してください。

<Info>
  これらのエンティティを作成する前に、`ABBYYFlexiCapturePlugin.jar` プラグインが Appian サーバーにインストールされていることを確認してください。インストールするには、コネクタの配布パッケージからプラグインを `APPIAN_INSTALL/_admin/plugins/` フォルダーにコピーします。
</Info>

次のエンティティを順番に作成します。

1. [データ型を作成する](/ja/flexi-capture/connectors/appian/appian-fc-app-modify#datatype)。
2. [データソースを作成する](/ja/flexi-capture/connectors/appian/appian-fc-app-modify#datasource)。
3. [データストアを作成する](/ja/flexi-capture/connectors/appian/appian-fc-app-modify#datastore)。
4. [レコード型を作成する](/ja/flexi-capture/connectors/appian/appian-fc-app-modify#recordtype)。
5. データストアをデータ型に関連付けるために、[Data Store Entity 型の定数を作成する](/ja/flexi-capture/connectors/appian/appian-fc-app-modify#datastoreentity)。
6. **Data Store Entity** 型の定数を返す [AFC\_GetConstantDSEByRecordTypeName ルールを作成する](#getconstantdsebyrecordtypename)。
7. データ型の完全名を返す [AFC\_GetDataTypeByRecordTypeName ルールを作成する](#getdatatypebyrecordtypename)。
8. ABBYY FlexiCapture から受け取った処理済みファイルを保存するために、[Knowledge Center 型のフォルダーを作成する](/ja/flexi-capture/connectors/appian/appian-fc-app-modify#knowledgecenter)。
9. ナレッジセンターに新しいドキュメントを追加するために、[UploadDocument Web API メソッドを作成する](#webapikc)。
10. データベーステーブルにデータを格納するために、[CreateRecord Web API メソッドを作成する](#webapidt)。

## <a id="getconstantdsebyrecordtypename" />AFC\_GetConstantDSEByRecordTypeName ルールを作成する

Web API の `CreateRecord` メソッドでは、**Data Store Entity** 型の定数を返すルールが必要です。このルールによって、レコードの作成先となるデータストアとデータ型が決まります。

<Steps>
  <Step title="新しい式ルールを作成する">
    Appian Designer でアプリケーションを開き、**New → Expression Rule** をクリックします。
  </Step>

  <Step title="ルールに名前を付けて保存する">
    **Create from scratch** を選択し、**Name** フィールドと **Save In** フィールドに入力して、**Create & Edit** をクリックします。
  </Step>

  <Step title="RecordTypeName 入力を追加する">
    **Rule Inputs** ダイアログで **+** icon をクリックし、`RecordTypeName` という名前の **Text** 型の入力変数を追加します。
  </Step>

  <Step title="式を貼り付ける">
    左側の Code Editor に、次の式を貼り付けます。

    ```text theme={null}
    if(ri!RecordTypeName == "New Records", /* RecordTypeName パラメーターには、新しいレコード型の名前を複数形で指定します。  */
        cons!New_Constant, /* cons! の後に、レコード型の定数名を指定します。 */
        null /* アプリケーション内に複数のレコード型がある場合は、"null" を上記と同じ "if" 条件に置き換え、2 つ目のレコード型の名前とその定数名を指定します。 */
    )
    ```
  </Step>
</Steps>

`RecordTypeName` 入力が既存のレコード型名 (複数形) と一致すると、このルールはデータストアとデータ型を関連付ける **Data Store Entity** 定数を返します。

## <a id="getdatatypebyrecordtypename" />AFC\_GetDataTypeByRecordTypeName ルールを作成する

Web API の `CreateRecord` メソッドには、データ型の完全名を返すルールが必要です。

<Steps>
  <Step title="新しい式ルールを作成する">
    Appian Designer でアプリケーションを開き、**New → Expression Rule** をクリックします。
  </Step>

  <Step title="ルールに名前を付けて保存する">
    **Create from scratch** を選択し、**Name** フィールドと **Save In** フィールドに入力して、**Create & Edit** をクリックします。
  </Step>

  <Step title="RecordTypeName 入力を追加する">
    **Rule Inputs** ダイアログで **+** アイコンをクリックし、`RecordTypeName` という名前の **Text** 型の入力変数を追加します。
  </Step>

  <Step title="式を貼り付ける">
    左側の Code Editor に、次の式を貼り付けます。

    ```text theme={null}
    if(ri!RecordTypeName == "New Records", /* RecordTypeName パラメーターには、新しいレコード型の名前（複数形）、データ型の完全名、およびレコード型の名前空間を指定します。 */
        'type!{urn:com:appian:types}NewDataType',
        null
        /* アプリケーション内に複数のレコード型がある場合は、"null" を上記と同じ "if" 条件に置き換え、2 つ目のレコード型の名前、データ型の完全名、およびレコード型の名前空間を指定します。 */
    )
    ```
  </Step>
</Steps>

`RecordTypeName` 入力が保存されているレコード型の名前 (複数形) と一致する場合、このルールはデータ型の完全名を含む string を返します。一致しない場合は `null` を返します。名前空間を確認するには、ABBYYFlexiCapture アプリケーションでデータ型を開き、左上にあるデータ型名をクリックして **Data Type Properties** ウィンドウを開きます。

## <a id="webapikc" />UploadDocument Web API メソッドを作成する

<Steps>
  <Step title="新しい Web API を作成する">
    Appian Designer でアプリケーションを開き、**New → Web API** をクリックします。
  </Step>

  <Step title="Web API に名前を付ける">
    **Name** フィールドと **Endpoint** フィールドに `UploadDocument` と入力し、**HTTP Method** を **POST** に変更して、**Create & Edit** をクリックします。
  </Step>

  <Step title="コードを貼り付ける">
    テンプレート選択ダイアログを閉じ、次のコードを Code Editor に貼り付けます。

    ```text theme={null}
    with(
        local!value: http!request.body,
        a!httpResponse(
            statusCode: 200,
            headers: {},
            body: uploaddocument(local!value)
        )
    )
    ```
  </Step>
</Steps>

<Note>
  `uploaddocument(String query)` メソッドは、`ABBYYFlexiCapturePlugin.jar` ファイルが `APPIAN_INSTALL/_admin/plugins/` フォルダーにある場合にのみ Code Editor に表示されます。このメソッドは、ファイルの内容を含む JSON 文字列を作成した Java メソッドに直接送信し、ドキュメントの配置先フォルダーの ID を含む JSON 文字列を返します。
</Note>

## <a id="webapidt" />CreateRecord Web API メソッドを作成する

<Steps>
  <Step title="新しい Web API を作成する">
    Appian Designer でアプリケーションを開き、**New → Web API** をクリックします。
  </Step>

  <Step title="Web API に名前を付ける">
    **Name** フィールドと **Endpoint** フィールドに `CreateRecord` と入力し、**HTTP Method** を **POST** に変更して、**Create & Edit** をクリックします。
  </Step>

  <Step title="コードを貼り付ける">
    テンプレート選択ダイアログを閉じ、次のコードを Code Editor に貼り付けます。

    ```text theme={null}
    with(
        local!value: cast(
            rule!AFC_GetDataTypeByRecordTypeName(http!request.queryParameters.RecordTypeName),
            a!fromJson(http!request.body)
        ),
        a!writeToDataStoreEntity(
            dataStoreEntity: rule!AFC_GetConstantDSEByRecordTypeName(http!request.queryParameters.RecordTypeName),
            valueToStore: local!value,
            onSuccess: a!httpResponse(
                statusCode: 200,
                headers: {
                    a!httpHeader(name: "Content-Type", value: "application/json")
                },
                body: a!toJson(
                    fv!storedValues
                )
            ),
            onError: a!httpResponse(
                statusCode: 500,
                headers: {
                    a!httpHeader(name: "Content-Type", value: "application/json")
                },
                body: a!toJson(
                    {
                        error: "There was an error writing to the data store"
                    }
                )
            )
        )
    )
    ```

    * `rule!AFC_GetDataTypeByRecordTypeName(http!request.queryParameters.RecordTypeName)` は、レコード型名を指定するパラメーター (ABBYY FlexiCapture Connector for Appian から Web API メソッドに渡されます) を受け取り、データ型の完全名を返します。
    * `rule!AFC_GetConstantDSEByRecordTypeName(http!request.queryParameters.RecordTypeName)` は、**Data Store Entity** 定数を返します。
  </Step>

  <Step title="クエリパラメーターを追加する">
    1. 右側のペインで **New Query Parameter** ボタンをクリックし、`RecordTypeName` という名前のパラメーターをクエリ文字列に追加します。
    2. **Set as default test value** オプションを選択し、**Save** をクリックします。
  </Step>
</Steps>
