Flex Gateway新着情報
Governance新着情報
Monitoring API Manager一連のコアコンポーネントと操作 (コネクタとモジュールによって提供される) をスコープ内でグループ化し、インテグレーションプロセスの自動化に役立ちます。
Mule アプリケーション内では、フローは、Mule イベントで Mule Runtime によって順次実行される、コネクタ操作を含む実行可能なコンポーネントのブロックです。フローには、イベントの作成とフローの実行をトリガーするイベント取得元も含めることができます。Mule アプリケーションで 1 つ以上のフローを作成します。
フローとサブフローの仕様、機能、制限についての詳細は、「フローおよびサブフロー」を参照してください。
フローは常に同期的に機能します。ファイヤアンドフォゲットなどの非同期パターンを実現するには、Async スコープを使用します。
このコンポーネントは、次の XML 構造をサポートします。
<flow name="myFlow">
</flow>
Flow (<flow/>
) 属性は UI および XML で設定できます。
属性名 | 属性 XML | 説明 |
---|---|---|
name1 (デフォルト) |
|
キャンバスに表示されるコンポーネントの編集可能な名前。 |
Initial state (初期状態) |
|
アプリケーションの起動時にフローが有効かどうかを示します。使用可能な値は、 初期状態を デフォルトは |
Max concurrency (最大同時実行) |
|
フローが処理できる同時メッセージの最大数を設定します。設定しない場合、フローがメッセージの処理時にパフォーマンスを最適化するために使用できる最大スレッド数は、コンテナスレッドプールによって異なります。フローが最大数の同時メッセージを処理している間は追加要求を受信できません。 フローが要求を 1 つずつ処理するようにするには、 最大同時実行値に達した後の Mule Runtime の動作についての詳細は、「バックプレッシャー」を参照してください。 |
なし |
|
|
なし |
|
ビジネスイベントのトランザクション ID を指定します。 |
次の例は、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
}
}
}
フローに Transform Message コンポーネントを追加します。
次の例では、空の <prices/> タグを含む myXML 変数を設定します。DataWeave 条件 isEmpty(payload.prices)
は true
を返すため、<on-error-continue/>
はエラーを返します。
<flow name="flow_subflowFlow" >
<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></prices>', 'application/xml')
output application/xml
---
myXml
]]></ee:set-payload>
</ee:message>
</ee:transform>
<logger level="INFO" doc:name="Logger" message='#[payload.prices]'/>
<error-handler >
<on-error-continue enableNotifications="true" logException="true" doc:name="On Error Continue" type="EXPRESSION" when="#[isEmpty(payload.prices)]">
<logger level="ERROR" doc:name="Logger" message='"An Error Occurred"'/>
</on-error-continue>
</error-handler>
</flow>
結果のエラーメッセージは次のようになります。
ERROR 2018-07-30 23:58:45,293 [[MuleRuntime].cpuLight.06:
[flow_subflow].flow_subflowFlow.CPU_LITE @1b1529b2]
[event: 0-2aba3280-948f-11e8-82d0-f45c898f2549]
org.mule.runtime.core.internal.processor.LoggerMessageProcessor:
"An Error Occurred"