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

# クールなワークフロー設計

> DingTalkのYiDAで統合と自動化を活用し、チームビルディングのフィードバック収集シナリオを構築する方法を解説します。フォームイベントトリガー、手動カードトリガー、カード送信ノード、カード更新ノードの設定手順を紹介します。

## クールカードのワークフローについて

カードの送信と更新は**統合と自動化**によって行われます。ここでは「チームビルディングのフィードバック収集」シナリオを例に、統合と自動化を用いた実装方法を説明します。

## ビジネスシナリオ

1. 「チームビルディングのフィードバック収集」フォームを用意します。社員がフォームを送信すると、送信内容がグループチャットにカードとして送信されます。
2. 他の社員はグループ内でそのカードを確認し、いいねを付けたり、自分のチームビルディングのフィードバックを送信したりできます。

**フォーム例：**

**グループ内のカード例：**

#### 1. 統合と自動化

**統合と自動化**：**イベント**によってトリガーされる**ビジネスオーケストレーション／ワークフロー**です。

「チームビルディングのフィードバック」フォームを送信してグループにカードを送信する — このシナリオでは、フォームの送信が「イベント」に、グループへのカード送信が「ワークフロー」に該当します。

統合と自動化の詳細については、[統合と自動化](/ja/yida/integration/gqmveiswrxkgxu9s)を参照してください。本記事では、統合と自動化を通じてカードを送信・更新する方法に焦点を当てます。

**統合と自動化のエントリ**

**「チームビルディングカード送信」のワークフロー例**

#### 2. フォームイベントトリガー

**機能**：フォームが送信、更新、または削除された際にワークフローをトリガーします。

シナリオ例：「チームビルディングのフィードバック収集」フォームを用意し、社員がフォームを送信すると、送信内容がグループチャットにカードとして送信されます。

1. 「フォームイベントトリガー」を含む統合と自動化を作成します。作成 > 名前を入力 > 「チームビルディングのフィードバック送信」フォームを選択の順にクリックします。

2. ワークフローデザイナーに入り、フォームイベントトリガーを選択します。

3. 「カード送信」ノードを追加します。

4. 「カード送信」ノードを設定します。設定内容は「カードを選択」→「カードコンテンツを設定」→「属性設定」です。各設定項目の詳細については、セクション4「[カード送信ノードの設定](#4-send-card-node-configuration)」を参照してください。

#### 3. 手動カードトリガー

**機能**：カード上のボタンがクリックされた際にワークフローをトリガーします。

シナリオ例：社員がグループ内でチームビルディングのフィードバックカードを確認し、「いいね」ボタンをクリックしていいねを追加します。

1. 「手動カードトリガー」を含む統合と自動化を作成します。作成 > 名前を入力 > 「チームビルディングのフィードバック送信」フォームを選択の順にクリックします。

フォーム選択のルール：カードは**フォームイベントトリガー**ワークフローによって送信されるため、**手動カードトリガー**で選択するフォームは、**フォームイベントトリガーで選択したフォームと同一**でなければなりません。これにより、カードのコンテキストの一貫性が保たれます。

2. ワークフローデザイナーに入り、「単一レコード取得」ノードを追加して、いいね数を更新する対象のチームビルディングフィードバックレコードを絞り込みます。

3. 「データ更新」ノードを追加し、直前の「単一レコード取得」ノードで絞り込んだチームビルディングフィードバックのいいね数を更新します。

4. 「カード更新」ノードを追加し、グループ内の対応するカードのいいね数を最新の値に更新します。

#### 4. カード送信ノードの設定

このセクションでは、カードノードの設定に焦点を当てます。ここでいうカード設定はカードデザインとは異なる点にご注意ください。カードデザインについては、[クールなカードデザイン](/ja/yida/cool-app/pqnynb)ドキュメントを参照してください。

カードには**スタイル**、**データ**、**ボタン／リンク**の3つの要素があります。カードデザインは主に**スタイル**を扱い、カード設定はそれ以外の要素（**データ、ボタン／リンク**）に焦点を当てます。

設定手順：1) 送信／更新するカードを選択、2) カードにデータをバインド、3) カードのボタン／リンクのアクションを設定、4) 送信スコープとルールを定義。

**1) 送信／更新するカードを選択**

公式のカードテンプレートまたはカスタムカードテンプレートを選択できます。選択後、「カードプレビューを開く」をクリックしてカードのスタイルをプレビューできます。

**2) カードにデータをバインド**

ワークフロー内の各ノードから取得したデータを、カード上の対応するデータ変数にバインドします。（カードの3要素：スタイル、データ変数、ボタン／リンク。）

**3) カードのボタン／リンクのアクションを設定**

カードのボタンは、「[手動カードトリガー](#3-manual-card-trigger)」ワークフローまたはリンクにバインドできます。

ボタンをリンクにバインドするかワークフローにバインドするかは、カードデザイン時に決定します。

カードデザイン時に、ボタンクリックを異なるイベントタイプにマッピングできます。通常は**カスタムアクション**または**リンクリダイレクト**を選択します。

**カスタムアクション**：「手動カードトリガー」ワークフローをバインドします。ボタンをクリックすると、対応するワークフローが実行されます。

**リンクリダイレクト**：ボタンをクリックすると、対応するリンクが開きます。リンクの値は固定値（カードデザイン時に入力）または変数（統合と自動化のカードノードで設定）にできます。

**4) 送信スコープとルールを定義**

カードの送信スコープ：個別のユーザーまたはグループに送信します。

グループは「現在のグループ」に設定できます。

「現在のグループ」：クールアプリがグループにインストールされた後、そのグループ内のフォームリンクからフォームデータが送信された場合、送信先を「現在のグループ」に設定すると、カードはフォームが送信されたグループに送信されます。

カード送信ルール：

シナリオ1：送信されたフォームレコードごとに1枚のカードを送信 — 「フォームインスタンスID」フィールドを選択します。

シナリオ2：当日送信されたすべてのフォームレコードに対して1日1枚のカードのみを送信 — 現在の日付を表すフィールドを選択します。

#### 5. カード更新ノードの設定

カードには特徴的な機能があります。それは、コンテンツを更新できることです。この点が通常のチャットとの違いであり、グループがメッセージで埋め尽くされるのを防ぎます。

カード更新の設定手順：1) 更新するカードを選択、2) カード更新ルールを定義、3) 更新するデータを設定。

重要なポイントは2つあります。

1. カードは送信された後でなければ更新できません。

2. **カード更新ルール**で設定するフィールドは、**カード送信ノード**の**カード送信ルール**で設定したフィールドと一致する必要があります。これにより、正しいカードが更新されます。

## その他のベストプラクティス（食事注文アクティビティ設定を例に）

「食事注文クールアプリ」では、「ヘルシーミール予約アクティビティを開始」と「ヘルシーミール予約アクティビティに参加」の両方で、アクティビティを紐付けてマークするための一意の識別子（シリアル番号）が必要です。では、このシリアル番号はどのように設定するのでしょうか。

**1. ヘルシーミール予約アクティビティを開始**

まず、「ヘルシーミール予約アクティビティを開始」フォームでシリアル番号機能を有効化し、シリアル番号のルールを設定します。ページ設定 → 基本設定 → プレミアム設定 → ユーザーがフォーム／ワークフローを送信後にシリアル番号を自動生成、の順にクリックし、保存します。

次に、「ヘルシーミール予約アクティビティを開始」フォームに「一行テキストボックス」コンポーネントを「アクティビティシリアル番号」として追加し、「非表示」に設定したうえで、データ送信を「常に送信」に設定します。

最後に、関数 `SETSERIALNO(アクティビティシリアル番号)` を使用してシリアル番号を自動生成するグローバルフォームイベントを追加します。新しいフォームインスタンスが送信されると、システムが自動的にシリアル番号を生成し、その値をテキストボックスに入力します。以降のすべての設定は、このシリアル番号に基づいてレコードのマッチングと関連付けを行います。

**2. ヘルシーミール予約アクティビティに参加**

まず、「ヘルシーミール予約アクティビティに参加」フォームにも同様に「一行テキストボックス」コンポーネントを「アクティビティシリアル番号」として追加し、「非表示」に設定したうえで、データ送信を「常に送信」に設定します。

次に、`didMount` 関数内で `url` から `serialNumber` パラメータを取得し、その値を「アクティビティシリアル番号」コンポーネントに割り当てます。ここで、`textField_l3wp3mge` は「アクティビティシリアル番号」コンポーネントの `fieldId` です。

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
export function didMount() {
  if (this.$('textField_l3wp3mge')) {
    this.$('textField_l3wp3mge').setValue((this.state.urlParams || {}).serialNumber);
  }
}
```

**3. 統合と自動化の設定**

まず、「アクティビティ開始」の統合と自動化設定で、カード上のボタンに「システムシリアル番号」パラメータ（上記で生成されたシリアル番号）を追加し、シリアル番号がフォームに渡されるようにします。

次に、「ユーザーが注文を送信」の統合と自動化設定で、「アクティビティシリアル番号」によって「現在開始中の食事注文アクティビティ」を絞り込みます。

「食事注文ユーザーリストを取得」ノードでは、現在のフォームから送信された「アクティビティシリアル番号」に基づいて、対応する食事注文ユーザーリストをマッチングします。

「注文データサマリーカンバンカード」でも、「注文を表示」および「詳細分析」ボタンにシリアル番号パラメータを追加し、フォームがデータの絞り込みと分析のためにそれを取得できるようにします。
