Flow (<flow/>)

logo cloud IDE Cloud IDE

logo desktop IDE Desktop IDE

一連のコアコンポーネントと操作 (コネクタとモジュールによって提供される) をスコープ内でグループ化し、インテグレーションプロセスの自動化に役立ちます。

Mule アプリケーション内では、フローは、Mule イベントで Mule Runtime によって順次実行される、コネクタ操作を含む実行可能なコンポーネントのブロックです。フローには、イベントの作成とフローの実行をトリガーするイベント取得元も含めることができます。Mule アプリケーションで 1 つ以上のフローを作成します。

フローとサブフローの仕様、機能、制限についての詳細は、​「フローおよびサブフロー」​を参照してください。

フローは常に同期的に機能します。ファイヤアンドフォゲットなどの非同期パターンを実現するには、​『Async スコープ』​を使用します。

コンポーネント XML

このコンポーネントは、次の XML 構造をサポートします。

<flow name="myFlow">

</flow>
xml

Flow (​<flow/>​) 属性は UI および XML で設定できます。

属性名 属性 XML 説明

name1​ (デフォルト)

name

キャンバスに表示されるコンポーネントの編集可能な名前。

Initial state (初期状態)

initialState

アプリケーションの起動時にフローが有効かどうかを示します。使用可能な値は、​started​ と ​stopped​ です。フロー内の内部または外部 Mule イベントソース (HTTP リスナーや Scheduler など)、別のフローやサブフローからのフロー参照、または ​「lookup」​ DataWeave 関数のコールによって、​started​ 状態のフローをトリガーできます。

初期状態を ​stopped​ に設定した場合は、​『Runtime Manager』​ を使用してフローをアクティブ化するか、フロー設定を ​Started​ にリセットします。この状態のコンソール出力は次のようになります: Flow flow_component_ex has not been started (initial state = 'stopped')

デフォルトは ​started​ です。

Max concurrency (最大同時実行)

maxConcurrency

フローが処理できる同時メッセージの最大数を設定します。設定しない場合、フローがメッセージの処理時にパフォーマンスを最適化するために使用できる最大スレッド数は、コンテナスレッドプールによって異なります。フローが最大数の同時メッセージを処理している間は追加要求を受信できません。

フローが要求を 1 つずつ処理するようにするには、​maxConcurrency​ を ​1​ に設定します。

最大同時実行値に達した後の Mule Runtime の動作についての詳細は、​「バックプレッシャー」​を参照してください。

なし

tracking:enable-default-event

true​ に設定すると、CloudHub にデプロイする Mule アプリケーションのビジネスイベントが有効になります。

なし

tracking:transaction-id

ビジネスイベントのトランザクション ID を指定します。​tracking:enable-default-event​ を ​true​ に設定する必要があります。

例: フローとサブフロー

次の例は、10 秒ごとにフローの実行をトリガーするスケジューラーを取得元として使用し、Flow Ref (​<flow-ref/>​) コンポーネントを介してサブフロー (​<sub-flow/>​) に接続します。そのサブフローも、Flow Ref コンポーネントを使用して別のサブフローに接続します。

この例の出力は次のようになります。

{
  "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
    }
  }
}
json

エラー処理

フローに ​『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>
xml

結果のエラーメッセージは次のようになります。

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"
text