Mule アプリケーションの Flow Reference から呼び出すスコープ内で、一連のコアコンポーネントと操作 (コネクタとモジュールによって提供される) をグループ化します。
Subflow コンポーネントは Flow コンポーネントと同様に動作しますが、次の点が異なります。
-
サブフローには Mule イベントソースがありません。
-
サブフローには組み込みエラー処理スコープがありません。
-
設計中には、サブフローはそれをコールする Flow Reference コンポーネントを置き換えるマクロとして機能します。
アプリケーションをビルドすると、サブフローをコールするすべての Flow Reference コンポーネントは、参照されるサブフローのコンテンツに置き換えられます。
-
フローを参照するよりもサブフローを参照する方がパフォーマンスは高くなります。
Mule アプリケーションでは複数のサブフローを作成できます。
フローとサブフローの仕様、機能、制限についての詳細は、「フローおよびサブフロー」を参照してください。
制限事項
サブフローを参照する Flow Reference コンポーネントがサブフローのコンテンツに置き換えられるため、実行時には、そのサブフロー内のイベントプロセッサーの複数のインスタンスがアプリケーション内に存在します。一意の ID またはインスタンスを使用して実行するイベントプロセッサーでは、この動作が問題になる可能性があります。
コンポーネント XML
このコンポーネントは、次の 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
}
}
}
Cloud IDE
Desktop IDE