---
schema_version: "1"
id: 5f34c7c228464394ce406a1b87a4c83e57f07005c573470d79fbb3ddffaf9d56
title: Flow Reference コンポーネント
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-runtime/4.4/flowref-about.md
canonical_url: https://docs.mulesoft.com/jp/mule-runtime/4.4/flowref-about
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 4f47f024906b735aeef1ee3f8ba2191aadb9322c1a7c0ee0060d5d946020eaff
description: MuleSoft Documentation Site
release: "4.4"
latest: false
---
# Flow Reference コンポーネント

Flow Reference は、Mule イベントを同じ Mule アプリケーション内で別のフローやサブフローにルーティングし、参照先のフローですべてのプロセッサーを実行してから、イベントを元のフローにルーティングします。次の図は、1 つのフローが別のフローを参照したときの処理の順序を示しています。

![flowref about 8b5d1](/mulesoft/current/ja-jp/mule-runtime/4.4/_images/flowref-about-8b5d1.png)

メインのフローがトリガーされると、Mule イベントは Flow Reference に到達するまでそのフローを実行します。次に、イベントは参照先のフローを最初から最後まで実行し、メインフローに戻ります。

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

このプロセスにより、参照先のフロー全体を現在のフロー内の 1 つのコンポーネントのように扱うことができます。たとえば、ファイルをリストすることが多いフローは、List 操作の出力を処理する別のフローを参照できます。ファイルをリストするフローにすべての処理ステップを追加する代わりに、処理フローを参照する Flow Reference を追加できます。

## [](#configure-flow-ref)Flow Reference の設定

Flow Reference コンポーネントを設定するには、Anypoint Studio で以下の手順を実行します。

1. **\[Mule Palette (Mule パレット)\]**​ から、参照先フローへのコールを作成するフロー内のポイントまで Flow Reference コンポーネントをドラッグします。
    
    ![flow-ref-create](/mulesoft/current/ja-jp/mule-runtime/4.4/_images/mruntime-flow-ref-create.png)
2. Flow Reference のプロパティを開いて、参照するフローの名前を ​**\[Flow name (フロー名)\]**​ に指定します。
    
    ![flow-ref-config](/mulesoft/current/ja-jp/mule-runtime/4.4/_images/mruntime-flow-ref-config.png)

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

## [](#flow-reference-対象変数を使用したコンテンツの強化)Flow Reference 対象変数を使用したコンテンツの強化

現在のペイロードと変数を使用したフローを実行しつつ、プロセスの完了後も Mule メッセージが変更されないようにしたい場合があります。この場合は、対象変数を使用することで、元のメッセージを変更せずに、参照先フローの処理結果を格納できます。

Flow Reference のプロパティで以下の項目を設定することで、Flow Reference コールの結果を対象変数に格納できます。

- **Target (対象)**​: Flow Reference がメッセージの処理結果を格納するために作成する変数の名前。
- **Target Value (対象値)**​: 操作の出力に対して評価される式。この評価の結果は、定義された対象変数に保存されます。

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

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

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

## [](#参照先フローでのエラー処理動作)参照先フローでのエラー処理動作

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

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

## [](#flow-reference-の-xml-例)Flow Reference の XML 例

次の XML コードは、​[Flow Reference の設定](#configure-flow-ref)​で作成したプロジェクトを表しており、Flow Reference コンポーネントがコールした 2 つ目のフローの結果を格納するための対象変数 ​`flowReferenceVar,`​ が追加されています。この変数は、​`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

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

## [](#関連情報)関連情報

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