假设我将CustomerRequest对象收到输入通道(通道1)。 现在我必须进行webservice调用,返回bankaccount对象列表。 我必须总结每个帐户的余额并将其设置到CustomerRequest对象上。 现在我需要将CustomerRequest对象发送到另一个通道(通道2)和bankaccount对象列表到另一个通道(通道3)
我不确定在进行网络服务电话后如何继续
非常感谢任何帮助。
<si:chain id="dataChain" input-channel="channel 1" output-channel="Channel 2" >
<si:header-enricher >
<si:header name="Content-Type" value="application/json" />
</si:header-enricher>
<si-http:outbound-gateway id="Gateway1"
url="http://$webservice{host}"
http-method="POST"
rest-template="restTemplate"
expected-response-type="com.xxx.response.Response1">
</si-http:outbound-gateway>
</si:chain>
答案 0 :(得分:0)
使用Content Enricher(<enricher/>
)。来自richr的下游流应该调用Web服务并返回总和。
浓缩器看起来像......
<enricher input-channel="channel1" output-channel="channel2"
request-channel="toWsPlusSummationFlow">
<property name="balance" expression="payload" />
</enricher>
这假设setBalance()
上有一个setter CustomerRequest
,而richher flow会将余额作为有效负载返回。
然后将丰富的消息发送到channel2
。
编辑:
更新有效负载的多个属性;让流返回一个富对象,只需添加更多属性......
<enricher input-channel="channel1" output-channel="channel2"
request-channel="toWsPlusSummationFlow">
<property name="balance" expression="payload.calculatedBalance" />
<property name="accounts" expression="payload.accounts" />
</enricher>
这假设入站有效负载具有setBalance(...)
和setAccounts(...)
方法,并且富集流的结果具有getCalculatedBalance()
和getAccounts()
的有效负载。
名称是解析为setter的表达式,表达式是根据下游流程的回复计算的表达式。
或者,如果您不想要有效负载中的数据,则可以使用<header/>
元素在标头中携带数据。