Не удается открыть новый курсор в закрытом потоке, что это значит в Mule 4? - PullRequest
0 голосов
/ 06 июня 2019

Я новичок в Mulesfot и Mule4, и я все еще пытаюсь понять, как все здесь работает. Проверьте следующее изображение:

subflow

На первом процессоре я вызываю 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?

...