1

着信 Pojo に関する追加情報を追加したいのですが、ミュールでメッセージ エンリッチャーを使用してそれを実行しました。これが私の完全なフローです。サブフローを使用してペイロードを取得し、DB でいくつかの値を選択し、その値を同じ pojo に設定して返しますが、ターゲットではペイロードとして設定していますが、「「ペイロード」の式エンリッチャーが登録されていません」のようなエラーが発生していますミュールと。」

ここにミューフローがあります

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

ここで ReceiveMessageEnrichPattern を返す

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

しかし、コンポーネントを強化した後、例外が発生します。追加情報を追加して、着信 pojo を充実させる方法を教えてください。

4

1 に答える 1

2

ドキュメントによると、Muleは現在、エンリッチメントの2つのターゲットのみをサポートしています。

  • フロー変数、
  • メッセージヘッダー。

目標を達成するには、次のことを行う必要があります。

  • エンリッチャーの結果(資格情報オブジェクト)をフロー変数に格納し、
  • カスタムトランスフォーマーを使用して、フロー変数にあるCredentialオブジェクトからメインフローのPOJOペイロードに値をコピーします。
于 2012-05-28T22:57:06.930 に答える