---
schema_version: "1"
id: ba5b3bb339b407746403e294f07c001bf60e81d2ec4179c6d6dccbe05a758448
title: Flow (<flow/>)
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/anypoint-code-builder/acb-component-flow.md
canonical_url: https://docs.mulesoft.com/jp/anypoint-code-builder/acb-component-flow
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 0b5e78ce269298114d56f5ef84b59c6d9215a8fa08a39151db261bf3774d6dd0
description: MuleSoft Documentation Site
latest: true
---
# Flow (<flow/>)

![logo cloud IDE](/mulesoft/current/ja-jp/_/img/logos/deployment-cloud-ide.png "Cloud IDE") Cloud IDE

![logo desktop IDE](/mulesoft/current/ja-jp/_/img/logos/deployment-desktop-ide.png "Desktop IDE") Desktop IDE

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

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

フローとサブフローの仕様、機能、制限についての詳細は、​[「フローおよびサブフロー」](https://docs.mulesoft.com/mule-runtime/latest/about-flows)​を参照してください。

フローは常に同期的に機能します。ファイヤアンドフォゲットなどの非同期パターンを実現するには、​[Async スコープ](https://docs.mulesoft.com/jp/anypoint-code-builder/acb-component-async)​を使用します。

## [](#component-xml)コンポーネント XML

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

```xml
<flow name="myFlow">

</flow>
```

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

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 60%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">属性名</th>
<th class="tableblock halign-left valign-top">属性 XML</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>name1</strong>​ (デフォルト)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>name</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>キャンバスに表示されるコンポーネントの編集可能な名前。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Initial state (初期状態)</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>initialState</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>アプリケーションの起動時にフローが有効かどうかを示します。使用可能な値は、​<code>started</code>​ と ​<code>stopped</code>​ です。フロー内の内部または外部 Mule イベントソース (HTTP リスナーや Scheduler など)、別のフローやサブフローからのフロー参照、または ​<a href="https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-runtime-functions#functions_runtime" class="xref page">lookup</a>​ DataWeave 関数のコールによって、​<code>started</code>​ 状態のフローをトリガーできます。</p>
</div>
<div class="paragraph">
<p>初期状態を ​<code>stopped</code>​ に設定した場合は、​<a href="https://docs.mulesoft.com/jp/runtime-manager/flow-management" class="xref page">Runtime Manager</a>​ を使用してフローをアクティブ化するか、フロー設定を ​<code>Started</code>​ にリセットします。この状態のコンソール出力は次のようになります: <code>Flow flow_component_ex has not been started (initial state = 'stopped')</code>​</p>
</div>
<div class="paragraph">
<p>デフォルトは ​<code>started</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Max concurrency (最大同時実行)</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>maxConcurrency</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>フローが処理できる同時メッセージの最大数を設定します。設定しない場合、フローがメッセージの処理時にパフォーマンスを最適化するために使用できる最大スレッド数は、コンテナスレッドプールによって異なります。フローが最大数の同時メッセージを処理している間は追加要求を受信できません。</p>
</div>
<div class="paragraph">
<p>フローが要求を 1 つずつ処理するようにするには、​<code>maxConcurrency</code>​ を ​<code>1</code>​ に設定します。</p>
</div>
<div class="paragraph">
<p>最大同時実行値に達した後の Mule Runtime の動作についての詳細は、​<a href="https://docs.mulesoft.com/mule-runtime/latest/execution-engine#backpressure" class="xref page">「バックプレッシャー」</a>​を参照してください。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>tracking:enable-default-event</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>true</code>​ に設定すると、CloudHub にデプロイする Mule アプリケーションのビジネスイベントが有効になります。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>tracking:transaction-id</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ビジネスイベントのトランザクション ID を指定します。​<code>tracking:enable-default-event</code>​ を ​<code>true</code>​ に設定する必要があります。</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#例-フローとサブフロー)例: フローとサブフロー

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

```xml
<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>
```

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

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

## [](#error-handling)エラー処理

フローに ​[Transform Message](https://docs.mulesoft.com/jp/anypoint-code-builder/acb-component-error-handler)​ コンポーネントを追加します。

次の例では、空の ​_<prices/>_​ タグを含む ​_myXML_​ 変数を設定します。DataWeave 条件 ​`isEmpty(payload.prices)`​ は ​`true`​ を返すため、​`<on-error-continue/>`​ はエラーを返します。

```xml
<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>
```

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

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

## [](#see-also)関連情報

- [Subflow](https://docs.mulesoft.com/jp/anypoint-code-builder/acb-component-subflow)
- [back-pressure と maxConcurrency](https://docs.mulesoft.com/mule-runtime/latest/tuning-backpressure-maxconcurrency)