僅需更改問題 我使用WSO2 BPS服務器運行業務流程以在WSO2 ESB上調用RestProxy服務。我通過名爲LVCounterOut的輸出變量得到迴應。所述LVCounterOut是消息類型的基於變量和響應是XML格式,如下所示:如何從基於消息的變量中提取原子值並使用XPATH分配給輸出變量
<message>
<payload>
<Response>
<Terminal>
<Name>RValue</Name>
<Value>0.000000</Value>
</Terminal>
<Terminal>
<Name>SValue</Name>
<Value>**1.000000**</Value>
</Terminal>
</Response>
</payload>
</message>
何我可以分配在上述變量的業務過程的輸出變量的原子值。例如,在上面的響應中,我想將字符串格式爲「1.0000000」的「值」節點的數值部分賦值給進程的輸出變量。接下來的問題是如何將此字符串值轉換爲整數,以便我可以在業務流程中的If控件中使用它。例如,「如果值> 10」援引ServiceA其他調用ServiceB」。
以下是我已經嘗試做從LVCounterOut變量輸出分配給輸出變量‘ProcessOutput’。
<bpel:assign validate="no" name="AssignProxyOut">
<bpel:copy>
<bpel:from>
<bpel:literal>
<tns:LVCounterProcessResponse xmlns:tns="http://wso2.org/bps/sample" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><tns:return>tns:return</tns:return>
</tns:LVCounterProcessResponse>
</bpel:literal>
</bpel:from>
<bpel:to variable="ProcessOutput" part="payload"></bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from>
<![CDATA[$LVCounterOut.payload/ns:Response/ns:Terminal[2]/ns:Value/text()]]>
</bpel:from>
<bpel:to part="payload" variable="ProcessOutput">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:return]]></bpel:query>
</bpel:to>
</bpel:copy>
</bpel:assign>
當我使用tryit的BPS服務器上運行的業務過程中,我得到以下錯誤
[2012-11-20 16:41:59,882] ERROR - BpelEngineImpl - Scheduled job failed; jobDetail=JobDetails(instanceId: null mexId: hqejbhcnphr7rsjnbxjhrs processId:
{http://wso2.org/bps/sample}LVSelectProcess-127 type: INVOKE_INTERNAL channel: null correlatorId: null correlationKeySet: null retryCount: null inMem:
false detailsExt: {enqueue=false}) java.lang.ClassCastException: java.lang.String cannot be cast to org.w3c.dom.Node at
org.jaxen.dom.DocumentNavigator.getChildAxisIterator(DocumentNavigator.java:152)
at org.jaxen.util.DescendantAxisIterator.next(DescendantAxisIterator.java:129)
我認爲這裏使用XPath是錯誤的或我要對完全錯誤的方式?我道歉,但XML和XPATH不是我最強的一點,我是sti我會盡力去解決它。
我怎麼會因爲問一個問題而被拒絕?我被困在一個問題上,試圖在這裏得到答案,有人可以給我一個被拒絕的理由嗎?答案也是有用的 – uraza2001