ミュール 3.3.1 CE
たぶん自爆しますが、以下はどうなっていますか?
XML ペイロードを取り込み、特に値を抽出するプライベート フローがあります。このカットダウンの例は機能します。
<flow name="MyFlow">
<set-session-variable variableName="xyzMethod" value="#[xpath:local-name(/S:Envelope/S:Body/*[1])]"/>
</flow>
これに VM インバウンド エンドポイントを配置して、再利用の問題を解決したいと考えています。ただし、そうすると、その xpath 呼び出しで例外が発生します。これにより問題が発生します。
<flow name="MyFlow">
<vm:inbound-endpoint exchange-pattern="request-response" path="execute.xyz"/>
<set-session-variable variableName="dnbMethod" value="#[xpath:local-name(/S:Envelope/S:Body/*[1])]"/>
</flow>
明らかな何かが見えません。これを引き起こしている VM エンドポイントの挿入は何をしますか?
Message : There are two transformers that are an exact match for input: "class java.lang.String", output: "interface org.dom4j.Document". Transformers are: "XmlToDom4jDocument(class org.mule.module.xml.transformer.XmlToDomDocument)" and "XmlToDom4jDocument(class org.mule.module.xml.transformer.XmlToDomDocument)"
Code : MULE_ERROR-255
以下の議論に基づいて編集
MEL 構文の試行に関する議論に基づいて、いくつかの結果を以下に示します。
入力は次のとおりです (セキュリティ情報を除く)。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://applications.dnb.com/webservice/schema/">
<soapenv:Header>
</soapenv:Header>
<soapenv:Body>
<sch:AdvancedCompanySearchRequest>
</sch:AdvancedCompanySearchRequest>
</soapenv:Body>
</soapenv:Envelope>
以下は、正常に実行される正確なコードです。コンソールに AdvancedCompanySearchRequest が表示されます。
<flow name="ExecuteDandB" doc:name="ExecuteDandB">
<!-- <vm:inbound-endpoint exchange-pattern="request-response" path="execute.dnb" doc:name="DnB"/>-->
<set-session-variable variableName="dnbMethod" value="#[xpath:local-name(/S:Envelope/S:Body/*[1])]"/>
<!-- <set-session-variable variableName="dnbMethod" value="#[xpath('/S:Envelope/S:Body/*[1]').name]"/>-->
<logger level="INFO" message="#[sessionVars['dnbMethod']]"/>
</flow>
以下は、実行に失敗する正確なコードです。上記の 2 つの変圧器に関する例外が表示されます。
<flow name="ExecuteDandB" doc:name="ExecuteDandB">
<!-- <vm:inbound-endpoint exchange-pattern="request-response" path="execute.dnb" doc:name="DnB"/>-->
<!-- <set-session-variable variableName="dnbMethod" value="#[xpath:local-name(/S:Envelope/S:Body/*[1])]"/>-->
<set-session-variable variableName="dnbMethod" value="#[xpath('/S:Envelope/S:Body/*[1]').name]"/>
<logger level="INFO" message="#[sessionVars['dnbMethod']]"/>
</flow>