【发布时间】:2013-05-09 08:01:59
【问题描述】:
我在 mule 中有一个流程,其中一部分需要传递两个“有效负载”对象 - 一个有效负载是客户,另一个是商店。
流的当前负载设置为 Store,并且可以正常工作并传递给我的 Java 转换器类。
我已使用变量(将变量名称设置为客户)来保存我的客户负载,并正在使用我的 Java 转换器的属性字段来尝试传递它。
目前它将它作为字符串传递给我的 Java 类 - 而不是它应该引用的变量。
我已将转换器中的属性字段填写为: 姓名:客户 值:#[变量:客户] 参考:
任何帮助将不胜感激。我正在使用 Mule Studio 3.4 版
以下代码摘录
骡子xml
<flow name="query_dos_getStoreStatus" doc:name="query_dos_getStoreStatus">
<choice doc:name="Choice">
<when expression="#[payload.getCustomer()!=null]">
<set-variable variableName="Customer" value="#[payload]" doc:name="Save Customer"/>
<custom-transformer class="ServiceDetailsResponseToStores" doc:name="ServiceDetailsResponseStores"/>
<custom-transformer class="UpdateIdentifyCustomerResponseForStoreStatus" doc:name="Update Customer for Store status">
<spring:property name="Customer" ref="#[variable:Customer]"/>
</custom-transformer>
<remove-variable variableName="GetCustomerDetailsResponse" doc:name="Remove Customer variable"/>
</when>
</choice>
</flow>
Java 类
import org.mule.transformer.AbstractTransformer;
import org.mule.transformer.types.DataTypeFactory;
public class UpdateIdentifyCustomerResponseForStoreStatus extends
AbstractTransformer{
public UpdateIdentifyCustomerResponseForStoreStatus()
{
super();
this.registerSourceType(DataTypeFactory.create(Store.class));
this.setReturnDataType(DataTypeFactory.create(IdentifyCustomerResponseEnvelope.class));
}
protected Object _customer;
public Object getCustomer()
{
return this._customer;
}
public void setCustomer(Object _customer)
{
this._customer = _customer;
}
public Object doTransform(Object payload, String outputEncoding)
{
if(payload instanceof Store && _customer instanceof IdentifyCustomerResponseEnvelope)
{
Store store = (Store)payload;
IdentifyCustomerResponseEnvelope customer = (IdentifyCustomerResponseEnvelope)_customer;
//changes to customer
return customer;
}
return this._customer;
}
}
【问题讨论】:
-
你能分享你的xml配置吗?
-
@genjosanzo 是对的:与对您正在做的事情的文字描述相比,使用一点 XML 会更清晰,让我们有更好的机会帮助您。
标签: mule mule-studio