[jboss-user] [JBoss jBPM] - handle arrays in bpel

sw_bpel do-not-reply at jboss.com
Mon Nov 3 09:55:13 EST 2008


hello,

i have some problems with handling arrays in my bpel-process. i have to invoke 3 web services and the response of the first one contains an array of user roles. so first i declare a variable for the iteration and also a variable for the number of elements in the array. then i create a while loop to check if the array contains a specific role. in that case i call the second web service. so far that's working fine, but the second web service returns also an array. but now i want to return this response as a part of the bpel process response. and here is my problem. How do i do that? i either get only the first element of the array as response of the bpel process or i get the following error:


  | 15:42:48,209 ERROR [XPathEvaluator] cannot create element for step with non-numeric predicate: [(DefaultNameStep): bpelReturnSW]
  | 

how to do that array handling?

a fragment of my bpel-file:

  | <bpws:sequence name="Sequence1">
  | 	<bpws:assign name="assignSukoInput" validate="no">
  | 		<bpws:copy>
  | 			<bpws:from><![CDATA['']]></bpws:from>
  | 			<bpws:to><![CDATA[$sukoRequest.getAllUnits]]></bpws:to>
  | 		</bpws:copy>
  | 	</bpws:assign>
  | 	<bpws:invoke inputVariable="sukoRequest"
  | 		name="invokeSukoService" operation="getAllUnits"
  | 		outputVariable="sukoResponse" partnerLink="suko"
  | 		portType="ns1:Fidefri4amo" />
  | 	<bpws:assign name="assignSukoCounter" validate="no">
  | 		<bpws:copy>
  | 			<bpws:from><![CDATA[1]]></bpws:from>
  | 			<bpws:to variable="sukoIterator" />
  | 		</bpws:copy>
  | 		<bpws:copy>
  | 			<bpws:from><![CDATA[count($sukoResponse.getAllUnitsResponse/return)]]></bpws:from>
  | 			<bpws:to variable="sukoCounter" />
  | 		</bpws:copy>
  | 	</bpws:assign>
  | 	<bpws:while name="While">
  | 		<bpws:condition><![CDATA[$sukoCounter >= $sukoIterator]]></bpws:condition>
  | 		<bpws:sequence name="Sequence2">
  | 			<bpws:assign name="assignSukoOutput" validate="no">
  | 				<bpws:copy>
  | 					<bpws:from><![CDATA[$sukoResponse.getAllUnitsResponse/return[$sukoIterator]/id]]></bpws:from>
  | 					<bpws:to><![CDATA[$output.bpelResponse/bpelReturnSuko[$sukoIterator]/bpelResponseSukoUnitID]]></bpws:to>
  | 				</bpws:copy>
  | 				<bpws:copy>
  | 					<bpws:from><![CDATA[$sukoResponse.getAllUnitsResponse/return[$sukoIterator]/name]]></bpws:from>
  | 					<bpws:to><![CDATA[$output.bpelResponse/bpelReturnSuko[$sukoIterator]/bpelResponseSukoUnitName]]></bpws:to>
  | 				</bpws:copy>
  | 			</bpws:assign>
  | 			<bpws:assign name="stepSukoIterator" validate="no">
  | 				<bpws:copy>
  | 					<bpws:from><![CDATA[$sukoIterator + 1]]></bpws:from>
  | 					<bpws:to variable="sukoIterator" />
  | 				</bpws:copy>
  | 			</bpws:assign>
  | 		</bpws:sequence>
  | 	</bpws:while>
  | </bpws:sequence>
  | 

thank you for your help!!!!
greetings stefan

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4186410#4186410

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4186410



More information about the jboss-user mailing list