我是 WSO2 的新手,我正在开展一个涉及 ESB 和 DSS 的 EI 项目组件。
我对 API 流程的这一部分的正确含义有以下疑问:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="cropNamesSequence" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<payloadFactory media-type="xml">
<format>
<ds:FindCropNames xmlns:ds="http://ws.wso2.org/dataservice">
<ds:sampleId>$1</ds:sampleId>
</ds:FindCropNames>
</format>
<args>
<arg evaluator="xml" expression="$ctx:sampleData//ds:Sample/ds:sample_id/text()" xmlns:ds="http://ws.wso2.org/dataservice"/>
</args>
</payloadFactory>
<header name="Action" scope="default" value="urn:FindCropNames"/>
<callout endpointKey="prgfasEndpoint">
<source xmlns:ns="http://org.apache.synapse/xsd" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/>
<target xmlns:ns="http://org.apache.synapse/xsd" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/>
</callout>
<enrich>
<source clone="true" type="envelope"/>
<target property="cropNames" type="property"/>
</enrich>
<log level="custom">
<property expression="$ctx:cropNames" name="crop names"/>
</log>
........................................................................
........................................................................
DO SOMETHING ELSE
........................................................................
........................................................................
在此代码中,我执行以下操作:
第一个 payloadFactory 介体用于创建包含<ds_sampleId>...</ds_sampleId>
参数的消息,该参数由相关的 XPATH 表达式检索到{{ 1}}。此消息表示我将发送给 DSS 服务的请求。
然后我指定一个带有 name =“Action”的标头,指定用于从数据库获取某些数据的 DSS 服务的名称(服务名称为 urn:FindCropNames 。
然后我使用标注介体来执行对以前的Web服务的请求。
我的怀疑与以下充实调解员有关,这一点:
<args>...</args>
在许多示例中,我经常看到在使用标注介体调用Web服务后,会使用充实介体进行操作。
根据我的理解,这个特定调解员的意思(在发布的案例中)是我正在处理Web服务响应的信封,我将其复制到一个新的属性名称< strong> cropNames 然后我可以在我的流程中使用,例如我可以记录此属性链接的内容:
<enrich>
<source clone="true" type="envelope"/>
<target property="cropNames" type="property"/>
</enrich>
这种解释是正确的还是我错过了什么?
答案 0 :(得分:0)
这是正确的,属于&#34; OM&#34; (xml)已创建,其名称为&#34; cropNames&#34;它属于默认范围(synapse范围),您可以使用xpath:get-property(&#39; cropNames&#39;)或$ ctx:cropNames
访问它