Я новичок в Mulesfot и Mule4, и я все еще пытаюсь понять, как все здесь работает. Проверьте следующее изображение:
![subflow](https://i.stack.imgur.com/fLs3a.png)
На первом процессоре я вызываю URL-адрес Salesforce и возвращаю XML, который я преобразовываю в JSON во втором процессоре, там я сохраняю / выводю результат в переменную SalesforceResponse
, а затем на третий. Я вызываю подпоток, который хранит некоторые значения в базе данных. До этого момента все работает как положено. Проблема возникает, когда я пытаюсь получить доступ к переменной SalesforceResponse
в последнем процессоре, которая мне нужна, чтобы получить некоторые значения, например, serverURL
. В настоящее время я получаю следующую ошибку:
Message : Cannot open a new cursor on a closed stream.
Element : SalesforceFlow/processors/3 @ salesforcefulfillment:salesforcefulfillment.xml:340 (Transform Message)
Element XML : <ee:transform doc:name="Transform Message" doc:id="bea5898f-5aa8-4835-8e9d-fa1fd165d6d2">
<ee:message></ee:message>
<ee:variables>
<ee:set-variable variableName="SalesforceServerUrl">%dw 2.0
import * from dw::core::URL
var urlComposition = parseURI(vars.SalesforceResponse.serverUrl)
output text/plain
---
log("Houston, we have a problem.")</ee:set-variable>
</ee:variables>
</ee:transform>
Error type : MULE:UNKNOWN
Что означает ошибка? Я ожидал бы, что смогу получить доступ к переменной «session» во всех местах вдоль потока, не имея проблем, или я не могу по какой-то причине, о которой я не знаю?
Вот определение XML для изображения выше:
<sub-flow name="SalesforceFlow" doc:id="237910c7-38c7-42bb-969b-63d6ff03bdaa">
<http:request method="POST" doc:name="Get SF SessionId" doc:id="37908152-700d-4c0e-9b52-b0de25f50fdf" config-ref="HTTP_Request_Salesforce" path="/services/Soap/u/44.0" sendCorrelationId="ALWAYS" outputMimeType="application/xml">
<http:body><![CDATA[#[%dw 2.0
ns soapenv http://schemas.xmlsoap.org/soap/envelope/
ns urn urn:partner.soap.sforce.com
output application/xml
---
soapenv#Envelope: {
soapenv#Body: {
urn#login: {
urn#username: p('SalesforceUsername'),
urn#password: p('SalesforcePassword')
}
}
}]]]>
</http:body>
</http:request>
<ee:transform doc:name="Transform Message" doc:id="b58ed3bd-7d74-4ad1-961f-8bab7a2ff128">
<ee:message>
</ee:message>
<ee:variables>
<ee:set-variable variableName="SalesforceResponse" ><![CDATA[ %dw 2.0
output application/json
ns soap http://schemas.xmlsoap.org/soap/envelope/
---
payload.soap#Envelope.soap#Body.loginResponse.result]]></ee:set-variable>
</ee:variables>
</ee:transform>
<flow-ref doc:name="Log Salesforce Response" doc:id="48326f18-a89b-49b2-ab96-ef2fe7214aaf" name="IntegrationFabricLogsFlow"/>
<ee:transform doc:name="Transform Message" doc:id="bea5898f-5aa8-4835-8e9d-fa1fd165d6d2" >
<ee:message >
</ee:message>
<ee:variables >
<ee:set-variable variableName="SalesforceServerUrl" ><![CDATA[%dw 2.0
import * from dw::core::URL
var urlComposition = parseURI(vars.SalesforceResponse.serverUrl)
output text/plain
---
log("Houston, we have a problem.")]]></ee:set-variable>
</ee:variables>
</ee:transform>
</sub-flow>
Могу ли я получить некоторую помощь, чтобы понять, как определение / доступ к переменным работает в Mule4?