2012-05-24 5 views
1

je veux ajouter quelques informations supplémentaires sur incomming Pojo, j'ai utilisé le message enricher dans mule et faites-le, voici mon flux complet. J'utilise subflow pour obtenir la charge utile et sélectionner certaines valeurs dans DB et définir cette valeur dans le même pojo et le retour, alors que dans la cible je définis comme payload mais je reçois une erreur comme ceci "Un Expression Enricher pour" payload "n'est pas enregistré avec Mule. "MULE ENRICH avec pojo entrant

ici est le flux mu

<enricher doc:name="Message Enricher"> 
     <core:flow-ref name="flows1Flow1" doc:name="Flow Reference"/> 
     <enrich source="#[groovy:payload]" target="#[payload]"/>    

<logger message="AFTER Enrich: #[payload]" level="INFO" doc:name="Logger"/> 
    <component class="com.enrich.AfterEnricher" doc:name="Java"/> 


<sub-flow name="flows1Flow1" doc:name="flows1Flow1"> 
    <component class="com.enrich.MessageEnrichPattern" doc:name="Java"/> 
    <jdbc:outbound-endpoint exchange-pattern="request-response" queryKey="selectData" connector-ref="jdbcConnector" doc:name="Database (JDBC)"> 
     <jdbc:query key="selectData" value="SELECT Username, Password, ModuleId from Credentials where ModuleId=#[map-payload:moduleId]"/> 
    </jdbc:outbound-endpoint> 
    <logger message="#[payload]" level="INFO" doc:name="Logger"/> 
    <component class="com.enrich.ReceiveMessageEnrichPattern" doc:name="Java"/> 
</sub-flow> 

ici ReceiveMessageEnrichPattern returing

Credential credential = new Credential(); 
    credential.setUname(hashMap.get("USERNAME").toString()); 
    credential.setPwd(hashMap.get("PPPP").toString()); 
    credential.setMid(hashMap.get("MODULEID").toString()); 
    return credential; 

mais enrichir après composante je reçois une exception. S'il vous plaît aidez-moi comment peut enrichir mon pojo entrant avec des informations supplémentaires peuvent ajouter.

Répondre

2

Selon le docs, Mule supporte actuellement seulement deux cibles pour l'enrichissement:

  • variables de flux,
  • têtes de message.

Pour atteindre votre objectif, vous devez:

  • magasin le résultat enrichisseur (objet Credential) dans une variable de flux,
  • utiliser un transformateur personnalisé pour copier les valeurs de l'objet Credential trouvés dans la variable de flux vers la charge utile POJO dans votre flux principal.
Questions connexes