2017-02-14 1 views
3

Wir haben folgende mule Flow:Mule: Interface-Bindung für verschiedene Komponenten, wie vermeidet man Doppelungen?

<flow name="mule-flow-1"> 
    <component> 
     <spring-object bean="springBean_1"/> 
     <binding interface="com.acme.EmailService" method="send"> 
      <vm:outbound-endpoint path="send-email" exchange-pattern="one-way"/> 
     </binding> 
    </component> 
</flow> 

aber jetzt wollen wir neue Strömung einzuführen, mit neuen Spring-Bean, die die gleiche EmailService.send Methode verwendet, so können wir es wie tun:

<flow name="mule-flow-2"> 
    <component> 
     <spring-object bean="springBean_2"/> 
     <binding interface="com.acme.EmailService" method="send"> 
      <vm:outbound-endpoint path="send-email" exchange-pattern="one-way"/> 
     </binding> 
    </component> 
</flow> 

Wie Sie sehen können, banden wir EmailService.send Methode zweimal in zwei verschiedenen Flows und es ist reine Code-Duplizierung.

Ist es möglich, EmailService.send Methode irgendwo in gemeinsamem Ort zu binden und ref gerade in mule-flow-1 und mule-flow-2 verwenden?

Antwort

0

Vielleicht können Sie Subflow verwenden? Definieren Sie Ihre Komponente dort und verwenden Sie Flow-Ref in jedem Fluss, den Sie wiederverwenden möchten.

<sub-flow name="mule-flow-send"> 
<component> 
    <spring-object bean="springBean_1"/> 
    <binding interface="com.acme.EmailService" method="send"> 
     <vm:outbound-endpoint path="send-email" exchange-pattern="one-way"/> 
    </binding> 
</component> 
</sub-flow> 

und dann wiederverwendet:

<flow name="mule-flow-1"> 
    <flow-ref name="mule-flow-send" doc:name="mule-flow-send"/> 
</flow> 
<flow name="mule-flow-2"> 
    <flow-ref name="mule-flow-send" doc:name="mule-flow-send"/> 
</flow> 
+0

Das Problem ist: Wir sind mit 'springBean_1' und' springBean_2', bot von ihnen die gleiche Methode 'send' von' EmailService' Schnittstelle, so Ihre Lösung ist etwas falsch. – user471011

Verwandte Themen