# ワークフローのトリガー

ワークフローのビジュアルデザイナーから、右側のパネルにある**ワークフローの詳細**タブで、さまざまな実行オプションを持つワークフローの**トリガー**メカニズムを構成できます。

* **手動**トリガーでは、一つまたは複数のターゲットに対してワークフローを手動で実行できます。
* **API** トリガーを使用すると、ワークフローを Workflows API 経由で実行できます。
* **スケジュール**トリガーでは、定義された時間枠内で、NQLクエリによって定義されたターゲットデバイスやユーザーに対してワークフローを実行できます。
* **イベント**トリガーでは、NQLクエリによって定義されたリアルタイムイベントワークフローを実行できます。

これらのトリガーメカニズムを定義してワークフローの実行を開始します。 ワークフローをトリガーした後、そのアウトカムを確認するためにステータスをチェックできます。

{% hint style="info" %}
ライセンスによっては、ワークフローを構成する際に、Nexthink **Spark** を有効にして、リアルタイムのサポートリクエストに対してワークフローを実行することができます。 詳細については、[ワークフロー作成](https://docs.nexthink.com/platform/ja/user-guide/creating-workflows#optionally-make-the-workflow-available-in-nexthink-spark)を参照してください。
{% endhint %}

## ワークフロートリガー時に`ユーザー`と`デバイス`をどのように識別しますか？

ワークフローオートメーションは、常に`ユーザー`と`デバイス`のコンテキストの両方を必要とします。 一方のみが提供された場合、システムは以下のロジックを実行します：

* `ユーザー`のみが提供された場合、ワークフローはそのユーザーに対して最近使用されたデバイスを自動的に特定します。
* `デバイス`のみが提供された場合、ワークフローはそのデバイスに対して最後にログインしたユーザーを自動的に特定します。

これにより、全てのワークフローが有効なユーザー-デバイスのペアで開始されることが保証されます。

{% hint style="warning" %}
ワークフローが欠落している情報を特定できない場合、例えば最近の`デバイス`や`ユーザー`が見つからない場合、そのワークフローは開始されずに実行が\_期限切れ\_状態で終了することがあります。
{% endhint %}

***

## ワークフローを手動でトリガーする <a href="#triggeringworkflows-triggeringaworkflowmanually" id="triggeringworkflows-triggeringaworkflowmanually"></a>

ワークフローのビジュアルデザイナーから、**手動**トリガーを選択し、ワークフローの**ターゲット**を定義し、Nexthinkの機能内でワークフローを手動でトリガーするためにワークフローのロジックを検証します。

* [調査](https://docs.nexthink.com/platform/ja/user-guide/investigations)データを分析した後、一つまたは複数のユーザーやデバイスに対してワークフローをトリガーします。
* 特定のデバイスに対してワークフローをトリガーします。例えば、[デバイスビュー](https://docs.nexthink.com/platform/ja/device-view#deviceview-usingthedeviceviewright-sidepanelright-sidepanel)から問題を解決します。
* Nexthink [Amplify](https://docs.nexthink.com/platform/ja/amplify/using-amplify#amplify-amplifytabsamplifytabs) から直接ターゲット特定診断および是正アクションを起動します。

{% hint style="info" %}
ユーザーに **すべてのワークフローを手動でトリガー** 権限を付与するか、トリガー専用の権限でワークフローを共有します。

権限管理については、[https://github.com/nexthink/documentation.online-product-documentation/blob/develop/ja\_docs/configuring\_nexthink/configuring-your-platform/administration/account-management/roles/README.md](https://github.com/nexthink/documentation.online-product-documentation/blob/develop/ja_docs/configuring_nexthink/configuring-your-platform/administration/account-management/roles/README.md "mention") のドキュメントを参照してください。
{% endhint %}

ワークフローを手動でトリガーするには、**調査**モジュールから開始します。

1. NQLエディタまたはビジュアルエディタを使用して、**デバイス**または**VDIセッション**のリストをクエリします。以下の画像を参照してください。
2. **デバイス** または **VDI セッション** を選択し、アクションバーを使用して **アクションを実行** します。
3. クレーンアイコンで識別可能な関心のあるワークフローを選択し、選択したセッション/デバイスで実行します。

{% hint style="warning" %}
VDI セッションで手動でワークフローをトリガーするには、[Nexthink VDI 経験](https://docs.nexthink.com/platform/ja/user-guide/vdi-experience)が必要です。

VDI用に設定されたワークフローのみがセッションで実行できます。
{% endhint %}

<figure><img src="https://3549141153-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeLm8O7QKZDn6z806e7Sv%2Fuploads%2Fgit-blob-0738239014a401eac092437c5e422a2167e70b63%2Fimage%20(322).png?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
ワークフロー設計と構成を学ぶために、[creating-workflows](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows "mention") ドキュメントを参照してください。
{% endhint %}

## APIによるワークフローのトリガー <a href="#triggeringworkflows-triggeringaworkflowviaapi" id="triggeringworkflows-triggeringaworkflowviaapi"></a>

ワークフローのビジュアルデザイナーから、**API**トリガーを選択し、Nexthink [Workflows API](https://nexthink.stoplight.io/docs/api/workflows-api-overview)を使用してワークフローをトリガーするためのワークフロー論理を検証します。

<figure><img src="https://3549141153-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeLm8O7QKZDn6z806e7Sv%2Fuploads%2Fgit-blob-2e0e42ce5d031c2a21d0d3e77b75dd8675a9012c%2Fimage%20(992).png?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
ワークフロー設計と構成を学ぶために、[creating-workflows](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows "mention") ドキュメントを参照してください。
{% endhint %}

## スケジュールされたワークフローのトリガー <a href="#triggeringworkflows-triggeringascheduledworkflow" id="triggeringworkflows-triggeringascheduledworkflow"></a>

ワークフローのビジュアルデザイナーから、**スケジュール** トリガーを選択し、NQLクエリを使用して特定の定期的な期間でワークフローをトリガーするためにワークフローのロジックを検証します。

{% hint style="warning" %}
システムは大規模なスケジュールを自動的に調整し、安定した実行とスケーラビリティを優先します。 これにより、ワークフローのスケジュールが有効なままであるにもかかわらず、ピーク時間中に一部のターゲットのワークフロー実行が遅れる場合があります。
{% endhint %}

<figure><img src="https://3549141153-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeLm8O7QKZDn6z806e7Sv%2Fuploads%2Fgit-blob-ef1d23dc61204dbd66dd4398b73b5c5f01e2b931%2Fimage%20(993).png?alt=media" alt=""><figcaption></figcaption></figure>

ワークフロートリガーのクエリで**スケジュールを追加**します。 フィールドに入力してください:

* **名前**: スケジュール用に一意な名前を入力してください。
* **NQL**: ワークフローの対象として`デバイス`または`ユーザー`を設定するためのNQLクエリを入力します。
* **繰り返し**: スケジュールの時間と繰り返しを設定してください。 実行はスケジュールされた時間に開始され、1時間に均等に分散できます。
* **ワークフローパラメーター**: パラメーターを使用してワークフローをスケジュールしてください。
  * 次の方法でパラメーターを設定してください：
    * ワークフローデザイナーで設定された事前定義された値のリスト。
    * カスタムのフリーテキスト値。
    * NQLクエリの`list`ステートメントで定義された属性。

パラメーターの設定については、[#add-workflow-parameters](https://docs.nexthink.com/platform/ja/user-guide/creating-workflows#add-workflow-parameters "mention")ドキュメントを参照してください。

## イベントによるワークフローのトリガー <a href="#triggeringworkflows-triggeringaneventworkflow" id="triggeringworkflows-triggeringaneventworkflow"></a>

ワークフローのビジュアルデザイナーから、**イベント** トリガーを選択し、NQLクエリを使用して定義されたリアルタイムイベントワークフローでワークフローをトリガーするためにワークフローのロジックを検証します。

{% hint style="info" %}
監査ログはワークフローのイベントトリガーとしても使用可能です。 [#audittrailcodes-usingaudittrailcodesininfinitynqlqueries](https://docs.nexthink.com/platform/ja/security/exporting-audit-logs#audittrailcodes-usingaudittrailcodesininfinitynqlqueries).を参照してください。
{% endhint %}

<figure><img src="https://3549141153-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeLm8O7QKZDn6z806e7Sv%2Fuploads%2Fgit-blob-818a1313b831e2fe126c18d26f41057bf542c4e6%2Fimage%20(994).png?alt=media" alt=""><figcaption></figcaption></figure>

クエリで**イベントトリガー**を追加してワークフローを起動します。 フィールドに記入します：

* **Name**: イベントのためにユニークな名前を入力します。
* **NQL**: イベントがワークフローをトリガーする条件をキャプチャするためのNQLクエリを入力します。
  * クエリを有効にするためには、少なくとも1つが含まれている必要があります：
    * サポートされている**イベント**。
    * オブジェクトをフィルタリングできる場合の`where`ステートメント。
    * `list`ステートメント。
  * サポートされているリアルタイムイベントを使用し、それらの制限を遵守します。 以下の展開可能項目をご覧ください。
* **パラメータ**: ワークフローをスケジュールするためにパラメータを使用します。
  * 次の方法でパラメータを設定します:
    * ワークフローデザイナーで設定された事前定義された値のリスト。
    * カスタム自由テキスト値。
    * NQLクエリの`list`ステートメントで定義された属性。

パラメーター設定については、[https://github.com/nexthink/documentation.online-product-documentation/blob/develop/ja\_docs/user-guide/workflows/creating-workflows/ja/README.md#add-workflow-parameters](https://github.com/nexthink/documentation.online-product-documentation/blob/develop/ja_docs/user-guide/workflows/creating-workflows/ja/README.md#add-workflow-parameters "mention")ドキュメントを参照してください。

{% hint style="warning" %}
`デバイス` または `ユーザー` に関連するリアルタイム イベントのみがワークフローをトリガーできます。

`alerts.alerts` などのクエリイベントはデバイスにリンクされていない場合、ワークフローをトリガーしません。 これは、**調査**モジュールからクエリを実行したときに、**デバイス** フィールド列が空であるために発生します。

システムは、イベントごとに一つのワークフローだけをトリガーします。
{% endhint %}

<details>

<summary>NQLクエリのサポートされているリアルタイムイベントのリスト</summary>

以下はサポートされているリアルタイムイベントのリストです:

* `alert.alerts`
* `device_performance.boots`
* `device_performance.hard_resets`
* `device_performance.system_crashes`
* `execution.crashes`
* `remote_action.executions`
* `session.connects`
* `session.disconnects`
* `session.locks`
* `session.logins`
* `session.logouts`
* `session.unlocks`
* `web.events`
* `web.transactions`
* `web.errors`
* `web.page_views`

</details>

<details>

<summary>NQLクエリのイベント制限</summary>

* システムは日付や時間属性を使用したフィルタリングに対応していません。
* 次の制限がイベントトリガーの構成に適用されます:
  * ワークフローごとに1つのイベントトリガー。
  * 評価の使用はサポートされていません。
  * `last_seen`属性は、どのオブジェクトでもサポートされていません。
* システムは、デバイスオブジェクトからのクエリで次のフィールドの使用をサポートしていません:
  * `last_seen`
  * `login.last_login_user_name`
  * `boot.days_since_last_full_boot`
  * `boot.last_full_boot_duration`
  * `boot.last_full_boot_time`
  * `connectivity.last_connectivity_type`
  * `connectivity.last_local_ip`
* システムは、次のカスタムフィールドの使用をサポートしていません:
  * クエリベースのフィールド
  * ルールベースのフィールド
* システムはクエリ内で次のディメンションの使用をサポートしていません:
  * コンテキスト.\*
  * device.public\_ip.\*
* システムは`field`と`field` の比較をサポートしていません。 例えば: `user.upn != device.#last_user_upn`

</details>

<details>

<summary>イベントトリガーのためのNQL例</summary>

以下に、イベントで使用できるNQLクエリの例を示します:

**遅いログインイベント**

デバイスのログイン時間が長い場合に、影響を受けたユーザーのユーザー名を特定するために次のクエリを使用します。

```
session.logins
| where time_until_desktop_is_ready > 1s
| list user.ad.username
```

**ドライバーまたはストレージ関連のブルースクリーン（BSoD）**

ドライバーまたはストレージ関連の問題によってBSoDが発生したWindowsデバイスに対応するために次のクエリを使用します。

```
device_performance.system_crashes
| where label == 'IRQ_NOT_LESS_OR_EQUAL'
| list error_code
```

**アンチウイルスソフトウェアが無効化されました**

ウイルス対策ソフトウェアが無効化され、リモートで検出された場合に使用するクエリです。

無効化されたアンチウイルスがリモートで検出されたときに次のクエリを使用します。これにより、コンプライアンスを保証し、デバイスのコンプライアンス状態についての追加のチェックを行うことができます。

```
remote_action.#AVCheck.executions
| where outputs.AVActive == 'false'
| list outputs.AVDefinitionVersion
```

</details>

***

## ワークフローのステータス：結果を決定 <a href="#workflow-statuses" id="workflow-statuses"></a>

ワークフローをトリガーするときは、それがまだ実行中であるかどうか、どのように終了したかを理解するためにステータスを使用します。

ワークフローのステータスを確認するには:

* ワークフロー実行の詳細ページを表示します。
* NQLクエリを実行し、`status`属性をwhere文に含めます。 さらに詳細な情報を表示するために`status_detail`属性を使用します（利用可能な場合）。

[#troubleshootingworkflows-usingtheworkflowtimeline](https://docs.nexthink.com/platform/ja/user-guide/monitoring-workflows-dashboard/troubleshooting-workflows#troubleshootingworkflows-usingtheworkflowtimeline "mention")ドキュメントを参照してください。

以下の表は、考えられるワークフローのステータスとその一般的な意味を示しています。

{% hint style="success" %}
ワークフローの実行は、ワークフロー設計のエンドブロックに達した場合に成功と見なされます。
{% endhint %}

| ワークフローステータス    | ステータスの意味                                                                                                                                                                                                                                               |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **進行中**        | ワークフローがトリガーされ、現在ロジック設定に従って実行されています。                                                                                                                                                                                                                    |
| **成功**         | ワークフローの成功した完了。                                                                                                                                                                                                                                         |
| **失敗しました**     | ワークフローは予期しない問題が発生したため実行に失敗しました。                                                                                                                                                                                                                        |
| **キャンセルされました** | <p>ワークフローの実行が停止した理由は次のいずれかです:<br>- ワークフローが無効になっています。<br>- 同一のターゲットとパラメータでの実行がすでに進行中であり、現在のワークフローが重複と見なされています。</p>                                                                                                                                      |
| **期限切れ**       | <p>ワークフロー内のThinkletまたはフロー制御ステップが設定されたタイムアウト期間を超えました。<br><br>最も一般的には、リモートアクションのシンクレットがオフラインのデバイスで実行しようとする場合に、これが発生します。<br><br><a data-mention href="../creating-workflows#adaptive-wait-behaviors">#adaptive-wait-behaviors</a>に関するドキュメントを参照してください。</p> |
