# パラメータと動的値

ワークフローはインプット**パラメーター**、ワークフロー実行中に取得された値、もしくはNexthinkのデータ値に依存しており、これにより動的で柔軟かつコンテキストに応じた自動化が可能です。

ワークフローでは、以下のセクションで説明される動的値の種類を使用します。

### ワークフローパラメーター

ワークフローパラメーターは、ワークフローに期待される入力値を定義し、それを異なるシナリオでカスタマイズして再利用できることを保証します。 それらはワークフローのトリガー時に設定され、ワークフロー実行の終了まで一定です。

ワークフローパラメーターを使用してワークフロー内部でパラメーター化されたアクションを実行したり、条件の一部として評価したりします。

これらはワークフローのトリガー時に動的に設定されることもあれば、ワークフロー設計時に静的な値として定義されることもあり、ワークフロー全体を通して参照されます。

#### パラメーターを定義する

パラメーターは[ワークフローデザイン](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows/..#add-workflow-parameters)の一部として定義されます。

![ワークフローパラメーター](https://docs.nexthink.com/~gitbook/image?url=https%3A%2F%2F268444917-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FxJSUDk9NTtCHYPG5EWs3%252Fuploads%252Fgit-blob-e945086d2d4f98436a07dc448f53a35667c2dc95%252Fwf-1694608617.png%3Falt%3Dmedia\&width=768\&dpr=4\&quality=100\&sign=240ee32e\&sv=2)

パラメーターを追加するとき：

* ワークフローパラメーターの**名前**を入力します。
* ワークフローパラメーターの必須のデフォルト**値**を入力します。
  * **カスタム値を許可**を選択して、パラメーターをワークフロートリガーで設定できるようにします。

#### **ワークフロー開始時に動的にワークフローパラメーターを設定する**

ワークフローパラメーターを定義すると、ワークフロートリガーの種類に基づいてパラメーターの値を動的に設定できます。

<details>

<summary><strong>スケジュール</strong>または<strong>イベント</strong>型トリガーの場合</summary>

**スケジュール**または**イベント**型トリガーを構成する際、パラメーターの値を選択します:

* ワークフローデザイナーで構成された事前定義の値リスト。
* カスタムの自由入力テキスト値。
* NQLクエリの`list`ステートメントに定義された属性。

</details>

<details>

<summary><strong>API</strong>トリガーの場合</summary>

外部システムからAPIを呼び出すときにワークフローパラメーターを設定します。 詳細については、[API ドキュメント](https://docs.nexthink.com/ja/api/workflows/trigger-a-workflow)をご参照ください。

</details>

<details>

<summary><strong>手動</strong>トリガーの場合</summary>

Nexthink製品（Nexthink Amplifyからも）から**手動**アクションとしてワークフローをトリガーする際、ユーザーはパラメーターの値を入力するよう求められます。

ワークフローを手動でアクティブ化するには、[#triggeringworkflows-triggeringaworkflowmanually](https://docs.nexthink.com/platform/ja/user-guide/triggering-workflows#triggeringworkflows-triggeringaworkflowmanually "mention") ドキュメントを参照してください。

</details>

以下の例では、**binary\_name**ワークフローパラメーターの値を、ワークフローを起動させる実行クラッシュのリアルタイムイベント中に、NQLクエリから`binary.name`属性値に設定します。

{% hint style="info" %}
ワークフローパラメーターを組み込んだトリガーの設定については[triggering-workflows](https://docs.nexthink.com/platform/ja/user-guide/workflows/triggering-workflows "mention")を参照してください。
{% endhint %}

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

#### ワークフローパラメーターの参照 <a href="#reference-to-workflow-parameter" id="reference-to-workflow-parameter"></a>

Nexthink ワークフロー内でグローバルパラメータを参照することができます。例えば、API thinklet の JSON ペイロード内で値を渡すためです。 次の構文を使用します：

```json
{{global.parameter_id}}
```

ワークフローパラメーターを参照するには：

1. ターゲットワークフローにパラメーターを追加します。
2. [ワークフローのビジュアルデザイナー](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows/..#optionally-modify-the-workflow-in-neal)の**NEAL**タブで、パラメーターの内部`id`を見つけます。

以下の例では、ワークフローパラメーター`p22`は**NEAL**ビューで`p_22`のパラメーターIDを持っています。 下の画像を参照してください。

```xml
<globalVariable id="p_22" name="p22" ...>
    <value>p22</value>
</globalVariable>
```

{% hint style="warning" %}
表示されているパラメータ **Name** を参照用途に使用しないでください。

[NEAL](https://docs.nexthink.com/platform/ja/user-guide/workflows/neal#neal-workflowparameters) では、ワークフローパラメータの XML タグは歴史的な言語実装により `<global variable>` となっています。
{% endhint %}

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

***

### Thinkletの出力

出力変数は、実行されるThinkletの一部として作成され設定された値です。 例えば、リモートアクションが情報を収集してアウトプットとして提示する場合、これらはワークフロー実行のライフサイクルの中で後から使用されることがあります。例えば、リモートアクションのパラメーターとして使用したり、ITSMチケットにペイロードとして渡すためです。

ワークフロー内の他のThinkletからの出力を参照する際は、次の形式を使用します：

```
{{thinkletID.result.outputs.outputid}}
```

各シンクレットの出力パラメーターを設定する方法については、[シンクレットの設定](https://docs.nexthink.com/platform/ja/user-guide/workflows/creating-workflows/configuring-thinklets)のドキュメントを参照してください。

### データベースの値

データベースの値はNexthinkプラットフォームdatabaseから得られます。 システムがアクセスできるオブジェクトは2つあります：

* `device`
* `user`

`device`と`user`は、実行時にワークフローへ常にパラメーターとして送信されるオブジェクトです。 デバイスがターゲットとなる場合、これらのパラメーターはワークフロー実行時の最新情報を使用して更新されます。

サポートされている属性の一覧については、[NQLデータモデル](https://docs.nexthink.com/platform/ja/understanding-key-data-platform-concepts/nql-data-model)のデバイスおよびユーザーセクションを参照し、フィールドカラムに含まれている値をフィールド名として使用します。

{% hint style="warning" %}
パラメータで使用できる静的属性と[手動カスタムフィールド](https://docs.nexthink.com/platform/ja/configuring_nexthink/configuring-your-platform/administration/content-management/custom-fields-management.md#customfieldsmanagement-choosingmanualcustomfieldtypemanual)があります。

システムは現在、イベントデータや実行時に計算されるカスタムフィールドをサポートしていません。
{% endhint %}

ワークフロー内でNexthinkフィールドを参照する際には、以下の形式を使用してください:

```
{{nx.object.fieldname}}
```

デバイス属性を参照する例:

```
{{nx.device.ad_site}}
```

ユーザー属性を参照する例:

```
{{nx.user.ad.email_address}}
```

**システム値**

システム値は、現在のワークフロー実行に対するリファレンスを提供するために使用できます。 これは、ワークフローがサードパーティシステムの操作を待機する必要がある場合に有用です。その後、ワークフローにコールバックをして続行を可能にします。

システム値は常に`sys.workflow`で始まります。

これらの値のリストは以下に示されています。

* `sys.workflow.executionId`：現在実行中のワークフロー実行のIDを参照します。
* `sys.workflow.workflowId`: 実行中の特定のワークフロー設計を参照します。

これらの値の使用例は、後にワークフローを進めるためにMoveworksチャットボット統合の文脈で使用される場面で示されています。

```json
{
    "message": " こんにちは、{{nx.user.ad.fullname}} さん、お使いのコンピュータには重要なドライバーのアップデートがいくつか不足しており、パフォーマンスに影響を与えている可能性があります",
    "recipients": [
        {{nx.user.ad.email_address}}
    ],
    "context": {
        "slots": {
            "executionid": "{{sys.workflow.executionId}}",
            "workflowid": "{{sys.workflow.workflowId}}"
        }
    }
}
```

### ペイロードフィールドでのパラメーターと動的値の使用

動的値とパラメーターは、**Resource**や**Payload**、**Message/Text** thinkletsフィールドで参照できます。 データへの参照を二重中括弧内で含めてください:

```
{{}}
```

Nexthinkデータベース属性を使用したServiceNowへのペイロード例:

```
"cmdb_ci": "{{nx.device.name}}"
```

以前のサービス/APIシンクレットからのデータを含むServiceNowインシデント更新リソースの例:

```
api/now/table/incident/{{log_service_now_ticket.result.outputs.sys_id}}
```
