我上的是企业整合器6.5。我的代理接收包含文件内容和与其相关的元数据的有效负载。所述元数据可以被发送成一个或多个块。我需要用上传成功来响应前端,然后异步地设置元数据。
所以我想出了一个解决方案:
将文件上载到backend
文件上传,元数据被设置,但我无法在迭代中介执行之后获得代码(这只是设置一个有效负载并超过序列)。
我在文档中读到:“您需要始终与聚合中介一起迭代。”但是很明显,当您在迭代中使用发送中介时,这就是意义所在。我的情况似乎也不适合于ForEach中介,因为文档中说“只在消息转换时使用ForEach中介,如果您需要从每次迭代中进行后端调用,那么使用迭代中介。”此外,迭代中介器在我的例子中非常完美地工作,我发现非常有用的attachPath和preservePayload分布。
你能帮我解决这个问题吗?
奇怪的是:我在迭代中介程序中设置了一个日志,但在日志中看不到它:/
这是我的密码:
[...]
<log level="full">
<property name="status" value="outside iterate mediator"/>
</log>
<iterate attachPath="//nm:upload" expression="//nm:upload/metadata"
preservePayload="true"
xmlns:nm="http://www.i.com/uploadFileSAPProxy/" xmlns:ns="http://org.apache.synapse/xsd">
<target>
<sequence>
<log level="full">
<property name="status" value="inside iterate mediator"/>
</log>
<payloadFactory media-type="xml">
<format>
<nm:upload
xmlns:b="http://ws.wso2.org/dataservice" xmlns:prx="urn:sap.com:proxy:Q01:/1SAI/TASF285B85AB4507D6C358B:702">
<id_group>$1</id_group>
<section>$2</section>
$3
</nm:upload>
</format>
<args>
<arg evaluator="xml" expression="$ctx:id_group" literal="false"/>
<arg evaluator="xml"
expression="//nm:upload/metadata/section" literal="false"/>
<arg evaluator="xml"
expression="//nm:upload/metadata/values" literal="false"/>
</args>
</payloadFactory>
<property name="messageType" scope="axis2" type="STRING" value="application/json"/>
<property expression="json-eval($.upload)" name="result"
scope="default" type="STRING"/>
<payloadFactory media-type="json">
<format>$1</format>
<args>
<arg evaluator="xml" expression="$ctx:result" literal="false"/>
</args>
</payloadFactory>
<axis2ns29:store
messageStore="uploadFileSAP_v1_putMetadata_ms" xmlns:axis2ns29="http://ws.apache.org/ns/synapse"/>
</sequence>
</target>
</iterate>[...]
提前感谢!
发布于 2021-03-03 03:32:32
我忘记将continueParent=设置为“真”
https://stackoverflow.com/questions/66453521
复制