---
schema_version: "1"
id: 4dc9548160b0f1a141dd12ad51de16985d779307d1a5245516b44bdaf1a13803
title: Dynamic Evaluate (<ee:dynamic-evaluate/>)
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/anypoint-code-builder/acb-component-dynamic-evaluate.md
canonical_url: https://docs.mulesoft.com/jp/anypoint-code-builder/acb-component-dynamic-evaluate
source_site: docs.mulesoft.com
content_type: documentation
content_hash: f093ff0e2ec3b5029a39f38f3a3cc471f23e096bb0d316435d82127c8d4b04d3
description: MuleSoft Documentation Site
latest: true
---
# Dynamic Evaluate (<ee:dynamic-evaluate/>)

式を評価して DataWeave スクリプトを選択し、新しいスクリプトを実行して結果を生成します。

スクリプトには、​`message`​、​`payload`​、​`vars`​、​`attributes`​ などの通常の​[定義済み変数](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-variables-context)​を使用できますが、キー - 値ペアのセットを指定することによってカスタム変数を追加することもできます。

## [](#component-xml)コンポーネント XML

このコンポーネントは、次の XML 構造をサポートします。

```xml
<ee:dynamic-evaluate
  expression=""
  doc:name="Dynamic evaluate"
  doc:id="ojfqoz">
  <ee:parameters>#[]</ee:parameters>
</ee:dynamic-evaluate>
```

Dynamic Evaluate (​`<ee:dynamic-evaluate/>`​) 属性は UI および XML で設定できます。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 60%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">属性名</th>
<th class="tableblock halign-left valign-top">属性 XML</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Dynamic evaluate (動的評価)</strong>​ (デフォルト)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>doc:name</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>キャンバスに表示されるコンポーネントの編集可能な名前。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>doc:id</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>コンポーネントの自動生成された識別子。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Expression (式)</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>expression</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Mule で実行される DataWeave スクリプトを選択する式 (例: <code>expression="#[vars.generateOrderScript]"</code>​)。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Additional Bindings (追加のバインド)</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>parameters</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Target Variable (対象変数)</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>target</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージデータを格納する変数の名前。数字、文字、アンダースコアのみを使用できます。たとえば、名前にハイフンは使用できません。
Mule ドキュメントの <a href="https://docs.mulesoft.com/mule-runtime/latest/target-variables" class="xref page">Enrich Data with Target Variables</a>を参照してください。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Target Value (対象値)</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>targetValue</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>対象変数に格納するデータの値。このデフォルト値はメッセージペイロード (payload) です。この項目は、変数が受け入れるすべての値を受け入れます。サポートされているデータ型、DataWeave の式、​<code>payload</code>​、​<code>attributes</code>​、​<code>message</code>​ キーワードが該当しますが、​<code>vars</code>​ キーワードは対象外です。
Mule ドキュメントの <a href="https://docs.mulesoft.com/mule-runtime/latest/target-variables" class="xref page">Enrich Data with Target Variables</a>を参照してください。</p>
</div></div></td>
</tr>
</tbody>
</table>

`<ee:parameters/>`​ は Dynamic Evaluate の子要素です。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">子要素</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>&lt;ee:parameters/&gt;</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>DataWeave スクリプトが評価できるパラメーターとして機能するキー-値ペア (例: <code>&lt;ee:parameters&gt;#[{name: attributes.queryParams.userName}]&lt;/ee:parameters&gt;</code>​)。</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#例)例

次の例では、​`userId`​ クエリパラメーターを使用してデータベースからスクリプトを選択し、そのスクリプトを ​`userScript`​ 変数に保存します。Dynamic Evaluate (​`<ee:dynamic-evaluate/>`​) は、​`userScript`​ 変数にアクセスし、指令された (​`attributes.queryParams.userName`​ の値を含む) パラメーター ​`name`​ を使用してスクリプトを呼び出します。

```xml
<flow name="dynamic-evaluate-example-flow">
  <http:listener config-ref="HTTP_Listener_Configuration" path="/"/>
  <!-- This SQL query uses queryParams.userId to dynamically select a DataWeave script stored in a Database,
  and then assign this script to target variable userScript-->
  <db:select config-ref="dbConfig" target="userScript">
    <db:sql>#["SELECT script FROM SCRIPTS WHERE ID = $(attributes.queryParams.userId)"]</db:sql>
  </db:select>
  <!-- The dynamic evaluate component executes the script stored in vars.userScript-->
  <ee:dynamic-evaluate expression="#[vars.userScript]">
    <!-- This line sets a parameter called 'name', so the expression in the Dynamic Evaluate component can use it -->
    <ee:parameters>#[{name: attributes.queryParams.userName}]</ee:parameters>
  </ee:dynamic-evaluate>
</flow>
```

スクリプト ​`lsalander`​ と ​`mblomkvist`​ がこの例のデータベースに保存されていると仮定します。

例: lsalander スクリプト

output application/json
---
{
  message: "Order " ++ attributes.queryParams.orderId ++ " has been received from " ++ name,
  items: payload.items
}

例: mblomkvist スクリプト

output application/x-www-form-urlencoded
---
{
  message: "Order " ++ attributes.queryParams.orderId ++ " has been received from " ++ name,
  items: payload.items
}

### [](#アプリケーション動作の例)アプリケーション動作の例

Mule アプリケーション​[サンプル](#example1)​が要求で ​`lsalander`​ を ​`queryParams.userId`​ として受け取ると、Mule は ​`lsalander`​ スクリプトを実行して JSON 応答を返します。アプリケーションが ​`mblomkvist`​ を ​`queryParams.userId`​ 値として受け取った場合、Mule は別のスクリプトを実行して ​`x-www-form-urlencoded`​ 応答を返します。

この例は、ユーザーに基づいて応答種別をパラメーター化でき、さらにユーザーのニーズに合わせて応答全体をパラメーター化できることを示しています。

## [](#see-also)関連情報

- [DataWeave 言語](https://docs.mulesoft.com/jp/dataweave/2.4/)