我試圖從屬性的內容,創建一個有效載荷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介體並將屬性替換爲信封(或主體)。 –