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

Mule イベントを同じ Mule アプリケーション内で別のフローやサブフローにルーティングし、参照先のフローですべてのプロセッサーを実行してから、イベントを元のフローにルーティングします。

このプロセスにより、参照先のフロー全体を現在のフロー内の 1 つのコンポーネントのように扱うことができます。

Flow Reference によって、Mule アプリケーションを個々の再利用可能な単位に分割できます。たとえば、ファイルをリストすることが多いフローは、List 操作の出力を処理する別のフローを参照できます。ファイルをリストするフローにすべての処理ステップを追加する代わりに、処理フローを参照する Flow Reference を追加できます。

<table><tbody><tr><td class="icon"><i class="fa icon-warning" title="Warning"></i></td><td class="content">実際のフロー名を使用して ​<strong>[Flow name (フロー名)]</strong>​ (​<code>name</code>​) 属性を定義してください。動的値 (DataWeave 式、変数) を使用して参照先フローを指定すると、パフォーマンスが低下します。また、MUnit テストおよびアプリケーション分析ツールは動的参照では正常に機能しない可能性があります。</td></tr></tbody></table>

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

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

```xml
<flow-ref name="anotherflow" />
```

Flow Reference (<flow-ref/>) 属性は 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>Name (名前)</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">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>doc:id</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>Target Variable (対象変数)</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>target</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージデータを格納する変数の名前。数字、文字、アンダースコアのみを使用できます。たとえば、名前にハイフンは使用できません。
Mule ドキュメントの <a href="https://docs.mulesoft.com/mule-runtime/latest/target-variables" class="xref page">Enrich Data with Target Variables</a>を参照してください。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Target Value (対象値)</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>targetValue</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>対象変数に格納するデータの値。このデフォルト値はメッセージペイロード (payload) です。この項目は、変数が受け入れるすべての値を受け入れます。サポートされているデータ型、DataWeave の式、​<code>payload</code>​、​<code>attributes</code>​、​<code>message</code>​ キーワードが該当しますが、​<code>vars</code>​ キーワードは対象外です。
Mule ドキュメントの <a href="https://docs.mulesoft.com/mule-runtime/latest/target-variables" class="xref page">Enrich Data with Target Variables</a>を参照してください。</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#対象変数を使用する場合の考慮事項)対象変数を使用する場合の考慮事項

Flow Reference コンポーネントで ​`target`​ 変数を設定すると、元のメッセージは変更されません。つまり、参照先のフローでペイロードや変数が変更されても、参照先のフローでプロセッサーの実行が完了した後は、ペイロードや変数は元の値に戻ります。

一方、​`target`​ 変数を設定しないと、参照先のフローでペイロードや変数に対して行われた変更は、参照先のフローの実行が完了した後も保持され、ペイロードや変数の元の値が変更されます。

## [](#参照先フローに移動する)参照先フローに移動する

ビューを手動で切り替えることなく、Flow Reference コンポーネントが参照するフローをキャンバスから直接開くことができます。 参照先フローを表示する手順は、次のとおりです。

1. キャンバス内の Flow Reference コンポーネントを右クリックします。
2. コンテキストメニューから ​**\[Go to Flow (フローに移動)\]**​ を選択します。

Anypoint Code Builder の適切なキャンバスで対象フローが開きます。 \* アプリケーションフローでは、フローキャンバスで参照先フローが開きます。 \* MUnit テストフローでは、MUnit キャンバスで参照先フローが開きます (該当する場合)。

これにより、アプリケーションの構築やテスト時に、モジュール設計全体のフローロジックをトレースおよび管理できます。

## [](#例)例

次の例では、HTTP リスナーを設定し、ペイロードを更新し、変数を設定し、対象変数 ​`flowReferenceVar`​ を追加して別のフローを参照します。この変数は、Flow Reference コンポーネントによってコールされる 2 つ目のフローの結果を格納します。この変数は、​`vars.flowReferenceVar`​ のログを記録することで、メインフローでも使用されます。

```xml
<!-- Main flow -->
<flow name="mainFlow" >
  <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="test"/>
  <set-payload value="Original payload" doc:name="Set Payload"  />
  <set-variable value="1" doc:name="Set myVar=1" variableName="myVar"/>
  <!-- Flow Reference component with target variable flowReferenceVar -->
  <flow-ref doc:name="secondaryFlow" name="secondaryFlow" target="flowReferenceVar"/>
  <logger level="INFO" doc:name="Log payload" message='#["Payload = " ++ payload]'/>
  <logger level="INFO" doc:name="Log myVar" message='#["myVar = " ++ vars.myVar]'/>
  <logger level="INFO" doc:name="Log flowReferenceVar" message='#["flowReferenceVar = " ++ vars.flowReferenceVar]'/>
</flow>
<!-- Secondary flow that is referenced from Main flow-->
<flow name="secondaryFlow" doc:id="044ece19-aa71-4fc9-ad34-8df655dd59a8" >
  <set-payload value="Modified payload" doc:name="Update Payload" />
  <set-variable value="2" doc:name="Update myVar=2" variableName="myVar"/>
</flow>
```

次のログは、アプリケーション例の実行後の出力を表しています。

INFO  LoggerMessageProcessor: Payload = Original payload
INFO  LoggerMessageProcessor: myVar =  1
INFO  LoggerMessageProcessor: flowReferenceVar =  Modified payload

Flow Reference コンポーネントから ​`target="flowReferenceVar"`​ を削除すると、アプリケーションは次の出力を返します。

INFO  LoggerMessageProcessor: Payload = Modified payload
INFO  LoggerMessageProcessor: myVar = 2
INFO  LoggerMessageProcessor: flowReferenceVar = null

ログは、読みやすいように省略されています。

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

Flow Reference コンポーネントによって参照されているフロー内でエラーが発生すると、参照先フローの実行が停止し、参照先フローのエラーハンドラーに処理が渡されます。参照先フローでエラーハンドラーが設定されていない場合は、Flow Reference コールを含むフローまでエラーが伝播され、このフローで設定されている Error Handler コンポーネントでエラーが処理されます。

エラーが発生した場合は、フローの実行が停止して正常に終了しないため、対象変数は設定されません。

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

- [Mule イベント](https://docs.mulesoft.com/mule-runtime/latest/about-mule-event)
- [対象変数を使用したデータの強化](https://docs.mulesoft.com/mule-runtime/latest/target-variables)
- [トランザクションによるスコープとルーターへの影響](https://docs.mulesoft.com/mule-runtime/latest/transaction-management#tx_scopes_routers)