# ワークフローの作成

ワークフローをゼロから作成するか、Nexthinkライブラリからインストールして、導入を加速することができます。 Nexthinkライブラリのワークフローを[ワークフローデザイナー](#design-workflow-logic)を使用してカスタマイズします。

新しいワークフローをゼロから設定するには、以下の手順に従ってください：

{% stepper %}
{% step %}

#### ワークフローを作成する

メインメニューから**ワークフロー**を選択し、ナビゲーションパネルの上部にある**新規**をクリックしてワークフローデザイナーを開きます。

{% hint style="info" %}
既存のワークフローの設定をアクセスして編集するには：

* [ワークフロー管理](https://docs.nexthink.com/platform/ja/user-guide/workflows/managing-workflows)ページの表にあるワークフローハイパーリンクをクリックしてください。
* 選択した[ワークフローダッシュボード](https://docs.nexthink.com/platform/ja/user-guide/workflows/monitoring-workflows-dashboard)にある**Edit workflow**ボタンをクリックします。

そして、以下にリストされている手順に従って進めます。
{% endhint %}

<figure><img src="https://3549141153-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeLm8O7QKZDn6z806e7Sv%2Fuploads%2Fgit-blob-5425704c8716cba8fd8fdcbb6f030b020f40975f%2Fwf-1694520271.png?alt=media" alt="New workflow button"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### ワークフローのロジックを設計する

ワークフローデザイナーから、ビジュアルインターフェースとキャンバスを使用してワークフローの構造を構築します。

右側のパネルの**ツールボックス**タブで、ビルディングブロックをワークフローキャンバスにドラッグアンドドロップし、必要な構造とロジックに従って配置します。

* Nexthinkのアクションを実行したりAPIを介してサードパーティシステムと統合したりするために[Thinkletsを追加](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows/configuring-thinklets)してください。
* [フローコントロールを追加](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows/configuring-flow-controls)し、ワークフローの進行とNexthinkデータで収集された値に基づく意思決定ロジックを推進します。
* [コネクタを追加する](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows/configuring-connector-thinklet)ことで、サードパーティAPIへの事前設定された統合を利用できます。

必要に応じてキャンバスに要素を自由に配置して整理します。 **自動レイアウト** ボタンを使用して、コンポーネントを整然とした一貫性のある構造に自動的に並べます。

ワークフローマップコントロールを使って、ワークフロー全体をズームイン、ズームアウト、フレーム化します。

左下隅のウィンドウには、全体のワークフローと現在の位置が表示されます。

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

カーソルを使用して、希望する順序で追加したワークフローコンポーネントをリンクし、順序付けします。

* ワークフローキャンバス上の要素にカーソルを合わせると、その青い円やアンカーが表示されます。
* 青い円から別のコンポーネントに左クリックしてドラッグすることで接続を作成します。 上の画像を参照してください。

<details>

<summary><strong>ステップを組み込む際のワークフローデザイン原則に従う</strong></summary>

* 1つのThinkletには、他のThinkletから複数のエントリーポイントを持つことができます。
* Thinkletには、他のThinkletへの出口パスが1つしか存在できません。
* ワークフローのすべてのパスは、必ず**End block**のThinkletで終わる必要があります。
* ワークフロー条件のあらゆる結果に対して、そこからの経路を持つ必要があります。
* リモートアクションやキャンペーン用のシンクレットは、オフラインデバイスやユーザーからの応答がない場合など、有効期限が切れたシナリオをワークフローのシーケンスを壊さずに処理できます。
* 条件フローコントロールThinkletは、ワークフローの意思決定ロジックを駆動するために手動のカスタムフィールド（`ユーザー`または`デバイス`属性）をサポートしています。

[手動カスタムフィールド](https://docs.nexthink.com/platform/ja/user-guide/administration/content-management/custom-fields-management#customfieldsmanagement-choosingmanualcustomfieldtypemanual)のドキュメントを参照して、ワークフロー用のカスタムフィールドを作成および設定してください。

</details>

全体のワークフロー設計を維持しながら、新しい優先接続を確立するために、\_Delete\_キーを使用してコンポーネント間の既存のリンクを削除します。

その結果、Nexthinkライブラリのワークフローを迅速に解除し、不必要なワークフロー条件を取り除くことで、合理化することができます。
{% endstep %}

{% step %}

#### ワークフローの詳細を定義

ワークフローデザイナーから、右側のパネルを使って**ワークフローの詳細**を入力します。

* **Name**: ワークフロー名は、**ワークフロー管理**ページおよびNexthink内で実行される関連するNQLクエリに表示されます。
* **NQL ID**: システムは、ワークフローの**Name**からユニークな識別子を自動的に生成します。 NQL IDを使用してNexthink内でこのワークフローをクエリします。 一度保存すると、NQL IDを編集することはできません。

ワークフローの**トリガー**と**ターゲット**については、以下の手順を参照してください。
{% endstep %}

{% step %}

#### ワークフロートリガーを選択する

ワークフロー デザイナーの右側パネルにある**ワークフロー詳細**タブから、オートメーションの開始条件と方法を定義する**トリガー**メカニズムを選択します。

必要なユースケースに最適なワークフロートリガーを設定するには、[triggering-workflows](https://docs.nexthink.com/platform/ja/user-guide/workflows/triggering-workflows "mention")のドキュメントを参照してください。

{% hint style="info" %}
ワークフローの**パラメーター**を設定すると、選択したワークフローの**トリガー**に入力値を追加できます。
{% endhint %}
{% endstep %}

{% step %}

#### 必要に応じて、Nexthink Sparkでワークフローを利用可能にします。

ワークフロートリガーに加えて、サポートの問題や要求をリアルタイムで処理する際に、Nexthink **Spark** でワークフローを実行することができます。 つまり、Spark がワークフローが目の前の問題を解決できると判断した場合です。

**ワークフロー詳細**タブから、ワークフローを**Sparkで利用可能**にするためのボックスにチェックを入れます。これにより、Sparkの**アクション管理**ページにSparkアクションとしてワークフローがリストされます。

また、Sparkが指定されたワークフローを実行する許可を与える必要があります。 詳細については、[https://github.com/nexthink/documentation.online-product-documentation/blob/develop/ja\_docs/user-guide/spark/setting-up-and-managing-spark/managing-agent-actions.md#enabling-spark-permissions](https://github.com/nexthink/documentation.online-product-documentation/blob/develop/ja_docs/user-guide/spark/setting-up-and-managing-spark/managing-agent-actions.md#enabling-spark-permissions "mention") を参照してください。

{% hint style="info" %}
現在のライセンスモデルによっては、この機能には追加ライセンスが必要な場合があります。 詳細については、Nexthink の担当者にお問い合わせください。

詳細については、[#spark](https://docs.nexthink.com/platform/ja/overview/products#spark "mention")ドキュメンテーションを参照してください。
{% endhint %}
{% endstep %}

{% step %}

#### ワークフローターゲットの定義

ワークフローデザイナーの右側のパネルの**ワークフローの詳細**タブから、ワークフローの**ターゲット**を定義します。

<details>

<summary><strong>デバイス</strong></summary>

**デバイスリスト**にワークフローを有効にします。これには、**デバイスビュー**と**Amplify**が含まれます。

</details>

<details>

<summary><strong>ユーザー</strong></summary>

**調査**における**ユーザー**のリストの場合、ワークフローをアクションとして有効にします。

</details>

<details>

<summary><strong>セッション</strong></summary>

**VDIセッション**でワークフローをトリガーできるように有効化します。詳細は[セッションビューの使用](https://docs.nexthink.com/platform/ja/vdi-experience/using-session-view#running-remote-actions-and-workflows)を参照してください。 VDIセッションをターゲットとする場合、以下から選択します。

* **クライアント**: セッションを開始するのに使用される物理的なクライアントデバイスをターゲットにします。 クライアントデバイスは、Nexthinkによって管理されている場合にのみターゲットにできます。
* **VDI**: 仮想インフラストラクチャのVMをターゲットにします。 VDIを選択する場合、ユーザーはVDIセッション内でクライアントデバイスが接続する仮想マシンを選んでいます。
* **ユーザーによる選択のオーバーライドを許可**: VDIセッションダッシュボードでワークフローを実行する際に、ユーザーが手動でターゲットを変更できるようにします。

{% hint style="warning" %}
ワークフロー内で**セッション**をターゲットにするには[Nexthink VDIエクスペリエンス](https://docs.nexthink.com/platform/ja/user-guide/vdi-experience)が必要です。
{% endhint %}

</details>

{% hint style="warning" %}
ワークフローは実行を開始するために `user` と `device` のコンテキストの両方を必要とします。 [#how-do-workflows-identify-the-user-and-device-when-triggered](https://docs.nexthink.com/platform/ja/user-guide/triggering-workflows#how-do-workflows-identify-the-user-and-device-when-triggered "mention")に関するドキュメントを参照して、システムがユーザー・デバイスのペアをどのように識別するかを学んでください。
{% endhint %}

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

{% step %}

#### ワークフローパラメーターの追加

**ワークフローパラメーター** はワークフローを作成する際に定義できるオプションの入力です。 これらのパラメーターを使用すると、次のことが可能です:

* ワークフローの開始時に設定された値を実行中に一定に保ちます。
* 単一のワークフローデザインを異なるシナリオやユースケースに適応させます。

例えば、ワークフローパラメーターを使用して、ターゲットグループ、しきい値、統合設定を変更することができますが、ワークフロー自体を変更する必要はありません。

ワークフローパラメーターの使用方法を学ぶために、[パラメーターと動的値](https://docs.nexthink.com/platform/ja/user-guide/workflows/parameters-and-dynamic-values#workflow-parameters)のドキュメントを参照してください。

{% hint style="info" %}
一度定義されると、**ワークフローの詳細** の下でワークフロー **トリガー** を設定する際に、ワークフローパラメーターに値を割り当てることができます。
{% endhint %}

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

{% step %}

#### NEALでワークフローをオプションで修正する

高度なシナリオには、右側のパネルにある**NEAL**タブ（Nexthink Experience Automation Language）を使って、スクリプト言語とワークフローの基盤となるコードを利用できます。

このコードは、視覚的にワークフローロジックを設計および構築する際に自動的に生成されます。 ワークフローのビジュアルデザイナーとNEALスクリプトは同期しているため、ビューを安全に切り替えることができます。

NEALのワークフローの読み方やスクリプト化の方法を学ぶには、[neal](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows/neal "mention")のドキュメントを参照してください。

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

{% step %}

#### ワークフローの検証と保存

ワークフロー設計ページの下部には、設計したワークフローが機能不全のとき、システムが警告し、トラブルシューティングや適切な機能設定の手助けをしてくれます。

エラーが検出されたら、検証をトリガーして問題を確認するために**エラー**サイドパネルを開いてください。 無効なステップはワークフローキャンバス上で赤くハイライトされ、簡単に修正できます。

ワークフローが未完成でエラー（無効）が含まれている場合でも、定期的に**保存**することを忘れないでください。 ワークフローを保存する際には、次の点を覚えておいてください:

* アクティブ/有効なワークフローを修正して保存する場合、進行中の実行が自動的にキャンセルされます。変更を適用する前に確認を求める警告メッセージが表示されます。
* ワークフローのトリガーやスケジューリング設定をデザインを変更せずに更新した場合、進行中の実行には影響しません。

{% hint style="warning" %}
既存の検証問題を解決すると、他の設計要素の検証を妨げている可能性のあるさらなる問題が発見されることがあります。

[NEAL](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows/neal)タブでは、バリデーションメッセージは利用できません。
{% endhint %}

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

***

## ワークフローデザインのユースケース

ワークフロービジュアルデザイナーを活用して、期限切れシナリオの処理やユーザー適応型の一時停止動作の構築など、特定のユースケースにスマートオートメーションを適応させます。

<details>

<summary>ワークフローでの有効期限処理の取り扱い</summary>

一部のワークフローのシンクレット—例えば **リモートアクション** や **キャンペーン** は、タスクを完了するためにユーザーやデバイスが利用可能であることに依存しています。 利用不可の場合、ワークフローは期限切れになります。

これらの期限切れシナリオを管理するために、リモートアクションとキャンペーンのシンクレットには、制定された時間経過後にそのシンクレットの **期限切れ** パスをトリガーするための **タイムアウト** プロパティがあります。 下記の画像を参照してください。

**期限切れ** パスがトリガーされると、ワークフローは次のようなフォールバックアクションを取ることができます。

* ServiceNowチケットの作成
* メールの送信
* 別のパスを再試行する

シンクレットの **期限切れ** 出力が接続されていないと、タイムアウトに達した時にワークフローは停止します。 デバイスがオフラインであることが多いか、ユーザーが応答に時間がかかる場合は、長めの **タイムアウト** を使用してください。

{% hint style="info" %}
[campaign-thinklet](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows/configuring-thinklets/campaign-thinklet "mention") と [remote-action-thinklet](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows/configuring-thinklets/remote-action-thinklet "mention") を参照し、これらのタイプのワークフローシンクレットを設定する方法を学んでください。
{% endhint %}

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

</details>

<details>

<summary>ワークフローでの適応的待機動作の構築</summary>

ワークフローにさらに柔軟性を持たせるために、ユーザー入力、ワークフローパラメーター、またはコンテキストに基づいて**動的な時間遅延**を使用するように **待機** シンクレットを設定することができます（例：ユーザーのタイムゾーン）。

動的な時間遅延により、各ユーザーにとって最適なタイミングで通知や再起動が行われるよう、機知に富んだ方法でワークフローを一時停止させることができます。

**ユースケースの例:** ユーザーのデバイスを再起動する必要がありますが、タイミングはユーザーに選んでもらいたいです。

1. **メッセージ** シンクレットに次のように尋ねます：*いつデバイスを再起動できますか？*
   * *今*、*1時間後*、*2時間後*、*今日中* といったオプションを提供します。下記の画像をご覧ください。

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

2. ユーザーの回答を確認するために **条件** フローコントロールを追加します。
   * もし回答が *今日中* である場合、ユーザーのタイムゾーンに基づいて当日の営業終了時刻を計算する **関数** シンクレットを使用して再起動をトリガーします。
   * それ以外の場合は、選択されたオプションに基づいて **動的時間遅延** を使用する **待機** シンクレットを使用します。 この場合、**メッセージ** シンクレットに表示されたユーザーから提供された **時間数** を使用します。

{% hint style="info" %}
[フローコントロールの設定](https://docs.nexthink.com/platform/ja/user-guide/workflows/configuring-flow-controls#designer-delay-1) ドキュメントを参照して、**待機** シンクレットを詳細に設定する方法を学んでください。
{% endhint %}

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

</details>

<details>

<summary>下流での利用のためのワークフロー内のカスタムフィールドの更新</summary>

**カスタムフィールドの更新** シンクレットを使用して、**デバイス** または **ユーザー** のカスタムフィールドに値を書き込むことができます。 これにより、ワークフロー成果を記録し、ダッシュボード、調査、その他のワークフローに構造化データを渡すことができます。

下記の表は、**カスタムフィールドの更新** シンクレットの一般的な使用例を示しています。

| デバイスのリフレッシュスケジューリング         | ハードウェア交換のスケジューリング後、デバイスフィールド（例： `リフレッシュを予定 = はい`)を更新し、L1チームが緊急性の低い問題の優先度を下げられるようにします。            |
| --------------------------- | ------------------------------------------------------------------------------------------------ |
| コンプライアンスの強制                 | デバイスを `準拠 = はい` として担当流の終了時にマークします。 これにより、ITはコンプライアンスの進捗を追跡し、ダッシュボードに結果を表示することができます。              |
| 従業員の好みのコミュニケーションチャネルを保存します。 | キャンペーンの回答に基づいて、`従業員のコミュニケーションチャネル` といったユーザーフィールドを設定します。 これは後続のワークフローやトレーニングリマインダーをトリガーすることがあります。 |

{% hint style="info" %}
[update-custom-fields-thinklet](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows/configuring-thinklets/update-custom-fields-thinklet "mention")を参照して、このタイプのワークフローシンクレットを設定する方法を学んでください。
{% endhint %}

</details>

***

関連トピック

* [ワークフローを始める](https://docs.nexthink.com/platform/ja/user-guide/workflows/getting-started-with-workflows)
* [ワークフローの管理](https://docs.nexthink.com/platform/ja/user-guide/workflows/managing-workflows)
* [monitoring-workflows-dashboard](https://docs.nexthink.com/platform/ja/user-guide/workflows/monitoring-workflows-dashboard "mention")
