[英]forEach loop in BPEL (WSO2 BPS)
我無法找出問題的根本原因,為什么forEach循環無法正常工作,
<bpel:forEach name="eachMarket" parallel="no" counterName="marketCounter">
<bpel:startCounterValue>1</bpel:startCounterValue>
<bpel:finalCounterValue>count($input.payload/tns:DCTResponse/tns:DCTIDs/tns:DCTID)</bpel:finalCounterValue>
<bpel:scope>
<bpel:assign>
<bpel:copy ignoreMissingFromData="yes" insertMissingToData="yes">
<bpel:from>$input.payload/tns:DCTResponse/tns:DCTIDs/tns:DCTID[round($marketCounter)]/tns:DEFTYPE</bpel:from>
<bpel:to>$OrderParameterPLRequest.parameters/ns:DCTResponse/ns:DCTIDs/ns:DCTID[round($marketCounter)]/ns:DEFTYPE</bpel:to>
</bpel:copy>
<bpel:copy ignoreMissingFromData="yes" insertMissingToData="yes">
<bpel:from>$input.payload/tns:DCTResponse/tns:DCTIDs/tns:DCTID[round($marketCounter)]/tns:MarketName</bpel:from>
<bpel:to>$OrderParameterPLRequest.parameters/ns:DCTResponse/ns:DCTIDs/ns:DCTID[round($marketCounter)]/ns:MarketName</bpel:to>
</bpel:copy>
<bpel:copy ignoreMissingFromData="yes" insertMissingToData="yes">
<bpel:from>$input.payload/tns:DCTResponse/tns:DCTIDs/tns:DCTID[round($marketCounter)]/tns:DCTID</bpel:from>
<bpel:to>$OrderParameterPLRequest.parameters/ns:DCTResponse/ns:DCTIDs/ns:DCTID[round($marketCounter)]/ns:DCTID</bpel:to>
</bpel:copy>
</bpel:assign>
</bpel:scope>
</bpel:forEach>
<bpel:forEach name="eachParameter" parallel="no" counterName="parameterCounter">
<bpel:startCounterValue>1</bpel:startCounterValue>
<bpel:finalCounterValue>count($input.payload/tns:DCTResponse/tns:AdditionalParamters/tns:Parameter)</bpel:finalCounterValue>
<bpel:scope name="parameterScope">
<bpel:assign>
<bpel:copy ignoreMissingFromData="yes" insertMissingToData="yes">
<bpel:from>$input.payload/tns:DCTResponse/tns:AdditionalParamters/tns:Parameter[$parameterCounter]/tns:Name</bpel:from>
<bpel:to>$OrderParameterPLRequest.parameters/ns:DCTResponse/ns:AdditionalParamters/ns:Parameter[$parameterCounter]/ns:Name</bpel:to>
</bpel:copy>
<bpel:copy ignoreMissingFromData="yes" insertMissingToData="yes">
<bpel:from>$input.payload/tns:DCTResponse/tns:AdditionalParamters/tns:Parameter[$parameterCounter]/tns:Value</bpel:from>
<bpel:to>$OrderParameterPLRequest.parameters/ns:DCTResponse/ns:AdditionalParamters/ns:Parameter[$parameterCounter]/ns:Value</bpel:to>
</bpel:copy>
</bpel:assign>
</bpel:scope>
</bpel:forEach>
輸入將包含多個ID,
<p:DCTIDs>
<p:DCTID>
<p:DEFTYPE>acvinclis</p:DEFTYPE>
<p:MarketName>pectoreflammas</p:MarketName>
<p:DCTID>3</p:DCTID>
</p:DCTID>
<p:DCTID>
<p:DEFTYPE>acvinclis</p:DEFTYPE>
<p:MarketName>pectoreflammas</p:MarketName>
<p:DCTID>3</p:DCTID>
</p:DCTID>
<p:DCTID>
<p:DEFTYPE>acvinclis</p:DEFTYPE>
<p:MarketName>pectoreflammas</p:MarketName>
<p:DCTID>3</p:DCTID>
</p:DCTID>
</p:DCTIDs>
錯誤消息:faultExplanation = { http://docs.oasis-open.org/wsbpel/2.0/process/executable } selectionFailure:無表達式結果:'$ OrderParameterPLRequest.parameters / ns:DCTResponse / ns:DCTIDs / ns:DCTID [round($ marketCounter)] / ns:DEFTYPE'對'
這個問題可能與原始海報不再相關,但是我想提供一個答案,以防其他人遇到相同的問題。
如果要在$ Counter位置獲取DCTID的DEFTYPE,請使用以下XPath:
($input.payload/tns:DCTResponse/tns:DCTIDs/tns:DCTID)[position() = $Counter]/tns:DEFTYPE
這里有兩點很重要:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.