Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMule アプリケーションの Flow Reference から呼び出すスコープ内で、一連のコアコンポーネントと操作 (コネクタとモジュールによって提供される) をグループ化します。
Subflow コンポーネントは Flow コンポーネントと同様に動作しますが、次の点が異なります。
サブフローには Mule イベントソースがありません。
サブフローには組み込みエラー処理スコープがありません。
設計中には、サブフローはそれをコールする Flow Reference コンポーネントを置き換えるマクロとして機能します。
アプリケーションをビルドすると、サブフローをコールするすべての Flow Reference コンポーネントは、参照されるサブフローのコンテンツに置き換えられます。
フローを参照するよりもサブフローを参照する方がパフォーマンスは高くなります。
Mule アプリケーションでは複数のサブフローを作成できます。
フローとサブフローの仕様、機能、制限についての詳細は、「フローおよびサブフロー」を参照してください。
サブフローを参照する Flow Reference コンポーネントがサブフローのコンテンツに置き換えられるため、実行時には、そのサブフロー内のイベントプロセッサーの複数のインスタンスがアプリケーション内に存在します。一意の ID またはインスタンスを使用して実行するイベントプロセッサーでは、この動作が問題になる可能性があります。
このコンポーネントは、次の XML 構造をサポートします。
<sub-flow name="mySubFlow">
</sub-flow>
Subflow (<sub-flow/>
) 属性は UI および XML で設定できます。
属性名 | 属性 XML | 説明 |
---|---|---|
name1 (デフォルト) |
|
サブフローの編集可能な名前。 |
次の例は、10 秒ごとにフローの実行をトリガーするスケジューラーを取得元として使用し、Flow Ref (<flow-ref/>
) コンポーネントを介してサブフロー (<sub-flow/>
) に接続します。そのサブフローも、Flow Ref コンポーネントを使用して別のサブフローに接続します。
<flow name="flow_component_ex">
<scheduler doc:name="Scheduler" >
<scheduling-strategy >
<fixed-frequency frequency="10" timeUnit="SECONDS"/>
</scheduling-strategy>
</scheduler>
<ee:transform doc:name="Transform Message">
<ee:message >
<ee:set-payload ><![CDATA[
%dw 2.0
var myXml = read('<prices>
<basic>9.99</basic>
<premium>53</premium>
<vip>398.99</vip>
</prices>', 'application/xml')
output application/xml
---
myXml
]]></ee:set-payload>
</ee:message>
</ee:transform>
<flow-ref name="subflow_ex1"/>
</flow>
<sub-flow name="subflow_ex1">
<ee:transform doc:name="Transform Message">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
import * from dw::util::Timer
output application/json
var conversionRate=13
---
priceList: payload.prices mapObject(value, key, index) -> {
(key) : {
dollars: value,
localCurrency: value * conversionRate,
index_plus_1: index + 1,
timer : currentMilliseconds()
}
}]]>
</ee:set-payload>
</ee:message>
</ee:transform>
<flow-ref name="subflow_ex2"/>
</sub-flow>
<sub-flow name="subflow_ex2">
<logger level="INFO" doc:name="Logger" message="#[payload]" />
</sub-flow>
この例の出力は次のようになります。
{
"priceList": {
"basic": {
"dollars": "9.99",
"localCurrency": 129.87,
"index_plus_1": 1,
"timer": 1533024312658
},
"premium": {
"dollars": "53",
"localCurrency": 689,
"index_plus_1": 2,
"timer": 1533024312659
},
"vip": {
"dollars": "398.99",
"localCurrency": 5186.87,
"index_plus_1": 3,
"timer": 1533024312659
}
}
}