> ## 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.

# レコードを削除する Delete ボタンを追加する

> 削除用のProcessModelを作成し、関連アクションとしてアタッチして、必要に応じてSummary viewで無効にすることで、Appianのレコード型にDeleteボタンを追加します。

ユーザーが Appian のレコード型からレコードとその添付ファイルを削除できる**Delete**ボタンを追加できます。

<div id="create-a-processmodel">
  ## ProcessModel を作成する
</div>

<Steps>
  <Step title="新しい ProcessModel を作成する">
    1. Appian Designer で ABBYYFlexiCapture アプリケーションを開き、**New → ProcessModel** をクリックします。
    2. 開いたダイアログで **Name** フィールドに入力し、プロセスの保存先フォルダーへのパスを指定します。
    3. **Create & Edit** をクリックします。
  </Step>

  <Step title="不要なノードを削除する">
    **Process Modeler** タブで次のノードを削除し、プロセス設定を変更します。

    * **Start Event**
    * **End Event**
    * **XOR**
    * **Delete Folder**
    * **Delete Document**
    * **Delete from Data Store Entities**

    <Note>
      ノードをダブルクリックして編集することもできます。
    </Note>
  </Step>

  <Step title="確認インターフェイスを作成する">
    1. **Appian Designer** に戻り、レコードの削除確認をユーザーに求めるダイアログを追加します。
    2. **New → Interface** をクリックし、インターフェイス名を指定します。
    3. **Create & Edit** をクリックします。
  </Step>

  <Step title="確認用の式を追加する">
    開いた Code Editor で、**Design View** から **Expression View** に切り替え、次の式を貼り付けます。

    ```text theme={null}
    =a!formLayout(
        label: "Delete?",
        firstColumnContents: {
            a!paragraphField(
                labelPosition: "COLLAPSED",
                readOnly: true,
                value: "Submitting this form will delete your record and its attachments. The data will no longer exist or be visible in Tempo. After deletion, it is recommended to return to the records list, as this record will become unavailable."
            )
        },
        buttons: a!buttonLayout(
            primaryButtons: {
                a!buttonWidgetSubmit(
                    label: "Delete",
                    style: "PRIMARY"
                )
            },
            secondaryButtons: {
                a!buttonWidgetSubmit(
                    label: "Cancel",
                    style: "NORMAL",
                    value: true,
                    saveInto: ri!cancel,
                    skipValidation: true
                )
            }
        )
    )
    ```
  </Step>

  <Step title="cancel 入力変数を追加する">
    **Interface Input** ダイアログで、型 **Boolean** の `cancel` 変数を追加します。
  </Step>

  <Step title="プロセスモデル変数を追加する">
    1. インターフェイスを保存し、プロセスモデルの編集に戻ります。
    2. **File → Properties** をクリックし、**Variables** タブで次の変数を追加します。
       * 型 **Number** (Integer) の `recordId`
       * 型 **Data Store Entity** の `DataStoreEntity` (data store を data type に関連付ける定数)
  </Step>

  <Step title="確認インターフェイスをアタッチする">
    1. **Process Start Form** タブを開き、**Select an interface** オプションを選択して、レコード削除時にユーザーへ確認を求めるために作成したインターフェイスを追加します。
    2. 開いたダイアログで **Yes** をクリックし、インターフェイス変数をプロセス変数の一覧にインポートします。

    追加した変数は、以降プロセスノードで使用できます。

    | Node                                | 説明                                                                                                                                                                                        |
    | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **Cancel (XOR)**                    | ユーザーの選択に応じてフローを分岐します。ユーザーが **Cancel** をクリックした場合、フローは **End Event** ノードに進みます。それ以外の場合は、**Delete Doc?** ノードに進みます。                                                                            |
    | **Delete Doc?**                     | 削除対象のレコードに関連付けられたフォルダーに documents が含まれているかどうかを、条件 `=length(folder(pv!recordId, "documentChildren")) > 0;` で確認します。フォルダーが空の場合はそのまま削除されます。空でない場合は、先にフォルダー内の documents を削除し、その後フォルダー自体を削除します。 |
    | **Delete Document**                 | 入力として受け取ったすべての documents を削除します。`folder` メソッドは、`documentChildren` パラメーターを使用して documents の一覧を返します: `=folder(pv!recordId, "documentChildren")`。                                             |
    | **Delete Folder**                   | 識別子に基づいてフォルダーを削除します: `=pv!recordId`。                                                                                                                                                      |
    | **Delete from Data Store Entities** | data store からレコードを削除します。このノードは、data store を関連付ける定数、data type (カスタム型 Table) 、およびレコード ID を受け取ります: `={{entity: pv!DataStoreEntity, identifiers: pv!recordId}}`。                              |
  </Step>

  <Step title="プロセスを保存して公開する">
    プロセスの設定が完了したら、**File → Save & Publish** をクリックするか、**Ctrl+Alt+S** を押します。
  </Step>
</Steps>

<div id="add-the-process-model-to-a-record-type">
  ## プロセスモデルをレコード型に追加する
</div>

関連アクションとして、プロセスをレコード型に追加します。

<Steps>
  <Step title="レコード型を開く">
    Appian Designer で、**Record Type** を開きます。
  </Step>

  <Step title="関連アクションを作成する">
    1. 開いたダイアログで、**New Related Action** をクリックします。
    2. **ProcessModel** field に入力します (作成したプロセスの名前を入力します) 。
    3. プロセスの入力変数を指定します。
       * **Credit Card Application** の場合: `Constant_CreditApplication_DSE`
       * **Account Payable Records** の場合: `Constant_invoiceProcessing_DSE`
  </Step>

  <Step title="関連アクションをレコードビューに追加する">
    新しい関連アクションを、適切な **View Record Type** に追加します。
  </Step>
</Steps>

これで、Tempo の **Summary** タブでレコードを表示すると、上部に **Delete** ボタンが表示されます。ユーザーがこのボタンをクリックすると、レコードを本当に削除するかどうかを確認するダイアログが表示されます。このダイアログで **Yes** をクリックすると、レコードが削除されます。

<Note>
  レコードが完全に削除されたことを確認するには、ユーザーはブラウザーウィンドウを更新する必要があります。
</Note>

<div id="disable-the-delete-action-in-the-summary-view">
  ## Summary View で Delete アクションを無効にする
</div>

削除ボタンをユーザーが使用できないようにするには、**Summary View** のプロパティで **Delete** アクションを無効にします。

<Steps>
  <Step title="アプリケーションを開く">
    Appian Designer で ABBYYFlexiCapture アプリケーションを開きます。
  </Step>

  <Step title="レコード型を開く">
    変更するレコード型を開きます。
  </Step>

  <Step title="関連アクションのショートカットを無効にする">
    開いたダイアログで **Summary View** をクリックし、**Delete** アクションの横にある **Related Action Shortcuts** オプションを無効にします。
  </Step>

  <Step title="変更を保存する">
    **OK** をクリックし、レコード型に加えた変更を保存します。
  </Step>
</Steps>

これで、Tempo でレコードを表示しても、**Delete** ボタンは表示されなくなります。
