Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMule イベントを同じ Mule アプリケーション内で別のフローやサブフローにルーティングし、参照先のフローですべてのプロセッサーを実行してから、イベントを元のフローにルーティングします。
このプロセスにより、参照先のフロー全体を現在のフロー内の 1 つのコンポーネントのように扱うことができます。
Flow Reference によって、Mule アプリケーションを個々の再利用可能な単位に分割できます。たとえば、ファイルをリストすることが多いフローは、List 操作の出力を処理する別のフローを参照できます。ファイルをリストするフローにすべての処理ステップを追加する代わりに、処理フローを参照する Flow Reference を追加できます。
実際のフロー名を使用して [Flow name (フロー名)] (name ) 属性を定義してください。動的値 (DataWeave 式、変数) を使用して参照先フローを指定すると、パフォーマンスが低下します。また、MUnit テストおよびアプリケーション分析ツールは動的参照では正常に機能しない可能性があります。
|
このコンポーネントは、次の XML 構造をサポートします。
<flow-ref name="anotherflow" />
Flow Reference (<flow-ref/>) 属性は UI および XML で設定できます。
属性名 | 属性 XML | 説明 |
---|---|---|
Name (名前) |
|
このコンポーネントが参照するフローの名前。 |
なし |
|
コンポーネントの自動生成された識別子。 |
Target Variable (対象変数) |
|
メッセージデータを格納する変数の名前。数字、文字、アンダースコアのみを使用できます。たとえば、名前にハイフンは使用できません。 Mule ドキュメントの Enrich Data with Target Variablesを参照してください。 |
Target Value (対象値) |
|
対象変数に格納するデータの値。このデフォルト値はメッセージペイロード (payload) です。この項目は、変数が受け入れるすべての値を受け入れます。サポートされているデータ型、DataWeave の式、 |
Flow Reference コンポーネントで target
変数を設定すると、元のメッセージは変更されません。つまり、参照先のフローでペイロードや変数が変更されても、参照先のフローでプロセッサーの実行が完了した後は、ペイロードや変数は元の値に戻ります。
一方、target
変数を設定しないと、参照先のフローでペイロードや変数に対して行われた変更は、参照先のフローの実行が完了した後も保持され、ペイロードや変数の元の値が変更されます。
次の例では、HTTP リスナーを設定し、ペイロードを更新し、変数を設定し、対象変数 flowReferenceVar
を追加して別のフローを参照します。この変数は、Flow Reference コンポーネントによってコールされる 2 つ目のフローの結果を格納します。この変数は、vars.flowReferenceVar
のログを記録することで、メインフローでも使用されます。
<!-- 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
ログは、読みやすいように省略されています。