我试图从属性的内容,创建一个有效载荷WSO2 ESB有效载荷:物业
<payloadFactory media-type="xml">
<format>$1</format>
<args>
<arg evaluator="xml" expression="get-property('Response')"/>
</args>
</payloadFactory>
WSO2 ESB是不接受这个作为一个有效载荷格式。我该怎么做才能做到这一点?
我试图从属性的内容,创建一个有效载荷WSO2 ESB有效载荷:物业
<payloadFactory media-type="xml">
<format>$1</format>
<args>
<arg evaluator="xml" expression="get-property('Response')"/>
</args>
</payloadFactory>
WSO2 ESB是不接受这个作为一个有效载荷格式。我该怎么做才能做到这一点?
您无法为此使用Payload Factory。它需要这样的包装XML标签。
<payloadFactory media-type="xml">
<format><Root>$1</Root></format>
<args>
<arg evaluator="xml" expression="get-property('Response')"/>
</args>
</payloadFactory>
但是你可以用Enrich mediator做你想做的。
<enrich>
<source clone="false" type="property" property="ORIGINAL_PAYLOAD"/>
<target action="replace" type="body"/>
</enrich>
Here是一个类似的例子。
可能是因为'响应'克洛维斯的类型。 我使用这个,发现没有问题。
<property description="requestBk" expression="json-eval($.)" name="requestBk" scope="default" type="STRING"/>
<payloadFactory media-type="json">
<format>$1</format>
<args>
<arg evaluator="xml" expression="$ctx:requestBk"/>
</args>
</payloadFactory>
另一个提示。使用$ctx:
而不是get-property
方法获得更好的性能。因为get-property
也在registry
也看起来。
是的!因为Bhathiya和Maria建议你也可以使用Enrich mediator
,如下所述。 使用Enrich mediator
将原始有效内容复制到属性。
<enrich>
<source clone="false" type="body"/>
<target action="replace" type="property" property="ORGINAL_PAYLOAD"/>
</enrich>
然后,每当你需要原来的有效载荷,你使用这个属性值替换邮件正文中的Enrich mediator
如下:
<enrich>
<source clone="false" type="property" property="ORIGINAL_PAYLOAD"/>
<target action="replace" type="body"/>
</enrich>
为什么你会使用PayloadFactory这个?如果属性的类型为OMElement,则可以使用Enrich介体并将属性替换为信封(或主体)。 –