Flex Gateway新着情報
Governance新着情報
Monitoring API Manager
このバージョンの Mule は、拡張サポートが終了する 2023 年 5 月 2 日にその すべてのサポートが終了しました。 このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。 標準サポートが適用されている最新バージョンの Mule 4 にアップグレードすることをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。 |
Dynamic Evaluate コンポーネントは、式を評価して DataWeave スクリプトを選択し、新しいスクリプトを実行して結果を生成します。この動作により、Transform Message コンポーネントでハードコード化する代わりに、動的にスクリプトを選択できます。
スクリプトには、message
、payload
、vars
、attributes
などの通常のコンテキスト変数を使用できますが、キー - 値ペアのセットを指定することによってカスタム変数を追加することもできます。
項目 | 値 | 説明 | 例 |
---|---|---|---|
式 |
DataWeave 式 |
Mule が実行する DataWeave スクリプトを選択する式を指定します。 |
|
パラメーター |
DataWeave 式 |
DataWeave スクリプトが評価するパラメーターとして設定されるキー-値ペアを指定します。 |
|
次の例では、userId
クエリパラメーターを使用してデータベースからスクリプトを選択し、そのスクリプトを userScript
変数に保存します。dynamic-evaluate
コンポーネントは、userScript
変数にアクセスし、指令された (attributes.queryParams.userName
の値を含む) パラメーター name
を使用してスクリプトを呼び出します。
<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
にそれぞれ保存されているとします。
output application/json --- { message: "Order " ++ attributes.queryParams.orderId ++ " has been received from " ++ name, items: payload.items }
output application/x-www-form-urlencoded --- { message: "Order " ++ attributes.queryParams.orderId ++ " has been received from " ++ name, items: payload.items }