# フローコントロールの設定

[フローコントロール](/platform/ja/user-guide/workflows/creating-workflows/configuring-flow-controls.md)を設定して、ワークフロー内で収集された値やNexthinkデータに基づいて、ワークフローの進行と判断ロジックを駆動します。 これらは利用可能なフローコントロールです。

* **条件**
* **繰り返し**
* **待つ**
* **ブロック終了**

## 条件フロー制御

**条件**ブロックは、ワークフローやNexthinkデータによって収集された値に基づいてワークフローを分岐させます。 システムは、ワークフローの実行がそれに到達した時点でのみ、条件を評価します。

* **条件**は1つの出口ポイントしか受け入れません。並列処理はワークフローでサポートされていません。
* 新しい条件を作成する際にデフォルトで追加される**Else**ブランチはオプションです。 定義された条件が満たされない場合は、**Else**パスが実行され、ワークフローがエラーなしで続行します。
* 条件に**Else**ブランチがなく、定義された条件が満たされない場合、条件は「デフォルト条件」エラーで終了し、ワークフローは停止します。
* 条件が評価する値は以下の通りです。
  * Thinklet出力
    * リモートアクションの出力
    * キャンペーンの応答
    * サービス/API出力
    * ワークフローパラメータ
  * データベースオブジェクトのプロパティとその手動カスタム値：`device`、`user`
  * 条件は次の演算子を使用して値を比較します：Is、Is not、Greater than、Less than、Greater than or equal to、Less than or equal to、Contains、Does not contain、Is empty、Is not empty。

{% hint style="warning" %}
システムは、データ型ごとに許可されているオプションに基づいて、利用可能な演算子のリストをフィルターしません。
{% endhint %}

* **名前**: 条件フローコントロールの一意の名前を入力してください。
* **ID**: システムは名前に基づいてIDを自動的に生成します。
* **説明（オプション）**: 条件の目的とその機能を説明してください。 この情報は、ワークフローに詳しくない他のユーザーにとって有益です。
* **条件を追加**: 条件フロー制御に条件を追加します。 フローの判断ロジックをユーザーやデバイス固有の属性に基づいて決定するために、条件値には[手動カスタムフィールド](/platform/ja/user-guide/administration/content-management/custom-fields-management.md#customfieldsmanagement-choosingmanualcustomfieldtypemanual)を使用できます。
  * 評価したい動的データのソースと値を選択します。
  * オペレーターを選択してください。
  * 比較する値を選択します。 固定参照値を入力するには、カスタム値を選択します。
  * 必要なだけ多くの条件を追加してください。
* **Else:** デフォルトでは、Elseブランチは条件に追加されます。 定義された条件が全て満たされない場合にワークフローをエラーで終了させたい場合、これを選択解除します。
* **完了**をクリックして変更を確定します。

分岐がキャンバスに表示されると、下にThinkletや他のフロー制御ブロックを追加できます。

## 繰り返しフロー制御 <a href="#designer-delay" id="designer-delay"></a>

**繰り返し** フロー制御を使用すると、アクションのグループをループし、再試行、遅延、条件付き終了を可能にすることができます。 役立つ場面：

* ネットワークの問題や一時的なエラーにより失敗する可能性のあるステップの再試行。
* ユーザーの確認やシステムアップデートなどの非同期イベントの待機。
* 制御されたタイミングでのユーザーインタラクションやアクションの繰り返し。

繰り返しブロックを使用すると、定義された終了条件が満たされるまで、ブロック内のすべてのアクションが複数回実行されます。

{% hint style="info" %}
ワークフローごとに許可される**繰り返し**制御は1つだけです。
{% endhint %}

### 退出条件の設定

繰り返しブロックはいくつかのタイプの退出をサポートしています。 各退出は、意図された通りに機能するために、ワークフローの中で正しく接続されている必要があります：

* **デフォルト退出**: 正常または完了した状態を示します。 これは繰り返しブロック内の条件と接続され、ループ後に続くアクションを伴う退出ブランチに続く必要があります。
* **X回後の退出**: ループが定義された最大繰り返し回数に達すると自動的にトリガーされます。 この退出は、繰り返しブロック後のブランチのみを必要とし、ループ内の条件には依存しません。
* **X分/時間後に繰り返す**: ループの反復間の遅延を設定します。 この条件は、繰り返しブロック内のブランチにリンクされる必要があり、ループを一時停止し、指定された時間が経過した後に繰り返させます。
* **カスタム退出**: 特定の基準に基づいてループを早期に終了する1つまたは2つのオプションの退出条件。 これらは、繰り返しブロック内の分岐と接続する必要があります。

以下の例を参照して、すべての出口ブランチを正しくリンクする方法を学びましょう。

<figure><img src="/files/9cMjKanhAGJS3Hf6fSbP" alt=""><figcaption></figcaption></figure>

* **名前**: 繰り返しフロー制御のためのユニークな名前を入力してください。
* **ID:** システムは名前に基づいてIDを自動的に生成します。
* **説明（任意）**: 繰り返しループの目的やその機能を記述します。 この情報は、ワークフローに詳しくない他のユーザーにとって有益です。
* **終了タイミング**: 繰り返しの最大回数を設定します。 この数に達するとループは停止します。 最大は 10 です。
* **繰り返し後**: ループの繰り返し間の遅延を設定します。 ワークフローは、この時間だけ一時停止し、その後にブロックを再試行します。 値を分または時間単位で入力できます。
* **カスタム終了を追加**: 1 または 2 つのカスタム終了を定義します。 ループ内の条件が満たされたときにトリガーされます。

## 待機フローコントロール <a href="#designer-delay" id="designer-delay"></a>

**待機**フロー制御により、次のステップに進む前にワークフローを一時停止できます。 使用方法:

* 定義された期間に動作を遅らせる。
* ユーザー入力や条件に基づいて待機する。
* APIの制限を避けるために負荷を分配する。
* APIを介して外部システムと連携する。

<div align="left"><figure><img src="/files/B3ugqTh1KHH8vc2qT7YU" alt="" width="489"><figcaption></figcaption></figure></div>

* **名前**: 待機フローコントロールの一意の名前を入力してください。
* **ID:** システムは名前に基づいてIDを自動的に生成します。
* **説明（オプション）**: 待機の目的とその機能を説明してください。 この情報は、ワークフローに詳しくない他のユーザーにとって有益です。
* **種類:** 待機Thinkletは2つのタイプをサポートします。

<details>

<summary>時間遅延</summary>

**時間遅延**を選択した場合、ワークフローは指定された期間だけ一時停止し、その後自動的に再開します。 3つの時間オプションから選択できます:

* **固定:** 静的な期間を定義する一定の待機を設定します。 最大サポートされる待機期間は**14日間**です。
* **動的:** 前のThinkletやワークフローパラメータの出力を使用して待機時間を動的に定義します。 設定時に:
  * 遅延値を提供する**Thinklet**またはワークフローパラメータを選択します。
  * ケースに応じて、次のいずれかを選択します。
    * リモートアクション用の**ステータス**を選択します。
    * ユーザー入力の場合：例えば、キャンペーンやメッセージThinkletからの応答などに使用する**選択されたアクションID**を指定します。
    * 特定のワークフローパラメータ値を選択します。
  * 前のThinkletまたはワークフローパラメータの予想される出力と整合する時間単位を定義してください。
* **ランダム**: ランダムの遅延範囲を設定します。

{% hint style="info" %}
**ランダム**な時間遅延は、すべてのワークフローインスタンスが同時に実行されることを防ぐことにより、APIなどの外部システムへの負荷を回避するのに役立ちます。

**動的**な時間遅延によって、動的な入力情報に基づいてワークフローポーズの挙動を適応させます。 動的な時間遅延を使用するケースとして、[ワークフローの作成](/platform/ja/user-guide/workflows/creating-workflows.md#building-adaptive-wait-behavior-in-workflows)のドキュメントを参照してください。
{% endhint %}

<div align="left"><figure><img src="/files/vobhPSnf5vbYmGv30Snr" alt="" width="491"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>API リスナー</summary>

API リスナーを選択すると、ワークフローは一時停止し、Trigger WaitFor EventワークフローエンドポイントへのAPI呼び出しを待機します。 詳細については、[Workflow API](https://nexthink.stoplight.io/docs/api/workflows-api)ドキュメントを参照してください。

Nexthinkへの呼び出しを行う外部システムからデータをキャプチャするために、最大5つの出力を設定します。 これらの出力を使用して、ワークフロー内で条件を持つ分岐の判断を行ったり、後続のThinkletへの入力情報を提供することができます。

<div align="left"><figure><img src="/files/lRur3uVHm9gOYL7svUEq" alt="" width="476"><figcaption></figcaption></figure></div>

* **名前**: Waitフローコントロールのユニークな名前を入力してください。
* **ID:** 名前に基づいてシステムが自動的にIDを生成します。
* **説明（任意）**: Waitの目的とその内容を説明してください。 この情報は、ワークフローに馴染みのない他のユーザーにとって有用です。
* **タイプ**: 必要なWaitのタイプを選択してください。
* **タイムアウト**: 分または時間でタイムアウトを設定してください。 これは、ワークフローが所定のAPIコールを待つ時間を決定します。 タイムアウト制限に達した場合、ワークフローは失敗状態になり、処理を停止します。
* **出力**: リッスンしているAPIコールから収集される出力を最大5つまで設定できます。 出力のIDは、Trigger WaitFor Eventワークフローエンドポイントに行われた呼び出しの本体内のパラメーターに使用されます。

{% hint style="info" %}
Wait - API リスナーを使用するには、外部システムが実行および連携するワークフローを認識していることを確認してください。

これらの情報は、`{{sys.workflow.executionId}}` と `{{sys.workflow.workflowId}}` 変数を使用してService/API Thinkletで送信します。 その後、サードパーティシステムはこの情報を記録してワークフローと連携します。 これらの値の使用方法は、[システム値の書式](#format-system-values)の例をご覧ください。
{% endhint %}

</details>

## 終了ブロック <a href="#designer-endblock" id="designer-endblock"></a>

**終了**ブロックを使用すると、最終的なワークフローの成果を定義および報告できます。

ワークフローが**終了**ブロックに達すると、システムは選択した**結果**および**結果の詳細**を記録します。 これらの実行結果は以下で利用可能になります。

* クエリ用のNQLデータ。
* 対応する **ワークフロー概要** ダッシュボードには、KPI が含まれています。

{% hint style="info" %}
同じ最終結果を報告する必要がある場合は、いくつかのブランチを同じ **終了** ブロックに収束させます。
{% endhint %}

* **名前**: エンドブロックに固有の名前を入力します。
* **ID**: システムは名前に基づいてIDを自動生成します。
* **説明（オプション）**: このポイントにおけるワークフローの期待される結果を説明します。 この情報は、ワークフローに慣れていない他のユーザーに役立ちます。
* **結果**: このポイントで何が起こるかを最もよく表す結果を、固定リストから選択してください。
  * 行動を取った
  * 行動を取らなかった
  * 失敗
  * その他
* **結果の詳細（オプション）**：ワークフロー実行中に発生した内容の説明で、実行中に収集された`{dynamic values}` と自由記述テキストを組み合わせます。 ダッシュボードで使用される場合は、簡潔にしてください。 NQL および [ワークフロー概要ダッシュボード](/platform/ja/user-guide/workflows/monitoring-workflows-dashboard.md) で利用可能です。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows/configuring-flow-controls.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
