Flex Gateway新着情報
Governance新着情報
Monitoring API Manager組み込み DataWeave 関数に加えて Mule Runtime と一部のモジュール、コネクタ、およびコアコンポーネントには、DataWeave スクリプトで使用できる関数が用意されています。この関数は、その関数を提供するモジュール、コネクタ、およびコンポーネントに固有のものです。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、DataWeave バージョン 1.2 のドキュメントを参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
以下の関数は Mule Runtime により挿入されています。
p
lookup
causedBy
|
Mule 4.1.4 以降、DataWeave は Mule Runtime 関数を Mule 関数モジュールに組み込みました。 Mule Runtime 4.1.4 以降で実行する Mule アプリケーションでこれらの関数を使用する場合、まず DataWeave スクリプトとマッピングでの Mule Runtime 関数の使用が継続的にサポートされることに加えて、Mule Module を使用すると、カスタム DataWeave Module で Mule Runtime 関数を使用することもできます。 バージョン 4.1.4 よりも前の Mule Runtime バージョンで実行する Mule アプリケーションでは、DataWeave スクリプトおよびマッピング内に限って、 |
p 関数は、以下のプロパティへのアクセスを提供します。
Mule プロパティのプレースホルダー
システムプロパティ
環境プロパティ
プロパティの設定および処理方法についての詳細は、「プロパティの設定」を参照してください。
次の例では、プロパティ http.port の値を記録します。
<flow name="simple">
<logger level="INFO" doc:name="Logger"
message="#[Mule::p('http.port')]"/>
</flow>
DataWeave 変数または関数を定義する場合も関数を使用できます。この例では、p 関数を myVar 定義内で使用します。
4.1.4 よりも前のランタイムでは、Mule:: 名前空間を省略するだけでこれと同様の処理を実行できます。
<flow name="simple">
<logger level="INFO" doc:name="Logger"
message="#[var myVar = Mule::p('http.port') --- myVar]"/>
</flow>
<flow name="simple">
<logger message="#[p('http.port')]"/>
</flow>
Mule 4.2 の Mule 関数モジュールで導入された p 関数も参照してください。
Flow Reference コンポーネントと同様に、lookup 関数を使用すると、アプリケーション内で別のフローを実行し、結果のペイロードを取得できます。これは、フローの名前と入力ペイロードをパラメーターとして使用します。たとえば、lookup("anotherFlow", payload) は、anotherFlow という名前のフローを実行します。
この関数は、現在の属性、変数、エラーを使用して、指定されたフローを実行しますが、属性または変数を含まないペイロードを渡すのみです。同様に、コールされたフローはそのペイロードを返すのみです。
lookup 関数では、サブフローのコールはサポートされません。
| 名前 | 説明 |
|---|---|
|
対象フローを識別する文字列。 |
|
対象フローに送信するペイロード。任意 ( |
|
省略可能。対象フローの実行のタイムアウト (ミリ秒)。実行しているスレッドが CPU_LIGHT または CPU_INTENSIVE の場合、デフォルトの |
次の例は、2 つのフローの XML を示しています。flow1 の lookup 関数は flow2 を実行し、オブジェクト {test:'hello '} をそのペイロードとして flow2 に渡します。次に、flow2 の Set Payload コンポーネント (<set-payload/>) は {test:'hello '} の値を文字列 world と連結し、hello world を出力して記録します。
lookup 関数の使用方法<flow name="flow1">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config"
path="/source"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
Mule::lookup('flow2', {test:'hello '})]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="flow2" >
<set-payload value='#[payload.test ++ "world"]' doc:name="Set Payload" />
<logger level="INFO" doc:name="Logger" message='#[payload]'/>
</flow>
lookup 関数の使用方法<flow name="flow1">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config"
path="/source"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
lookup('flow2', {test:'hello '})]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="flow2" >
<set-payload value='#[payload.test ++ "world"]' doc:name="Set Payload" />
<logger level="INFO" doc:name="Logger" message='#[payload]'/>
</flow>
hello world
|
DataWeave のような関数型言語では、 Flow Ref ( |
causedBy 関数は、エラーハンドラーのように、エラーをその種別によって一致させます。これは、上位の種別による一致だけでなく特定のサブ種別のロジックも必要な場合や、異なる種別の子エラーを含む COMPOSITE_ROUTING エラーを処理する場合に役立ちます。
一致させるエラーは暗黙的に示すことはできますが、種別は常に必須パラメーターです。
次の例では、SECURITY エラーを一般的な方法で処理するようにグローバルエラーハンドラーがセットアップされていますが、HTTP:UNAUTHORIZED と HTTP:FORBIDDEN のエラーについては特定のアクションがセットアップされています。
<error-handler name="securityHandler">
<on-error-continue type="SECURITY">
<!-- general error handling for all SECURITY errors -->
<choice>
<when expression="#[error Mule::causedBy 'HTTP:UNAUTHORIZED']">
<!-- specific error handling only for HTTP:UNAUTHORIZED errors -->
</when>
<when expression="#[Mule::causedBy('HTTP:FORBIDDEN')]">
<!-- specific error handling only for HTTP:FORBIDDEN errors -->
</when>
</choice>
</on-error-continue>
</error-handler>
<error-handler name="securityHandler">
<on-error-continue type="SECURITY">
<!-- general error handling for all SECURITY errors -->
<choice>
<when expression="#[error causedBy 'HTTP:UNAUTHORIZED']">
<!-- specific error handling only for HTTP:UNAUTHORIZED errors -->
</when>
<when expression="#[causedBy('HTTP:FORBIDDEN')]">
<!-- specific error handling only for HTTP:FORBIDDEN errors -->
</when>
</choice>
</on-error-continue>
</error-handler>
エラーパラメーターは明示的にも暗黙的にも使用されます。