ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From SĀŽebastien Mosser <mos...@polytech.unice.fr>
Subject Accessing a Counter inside a foreach
Date Sun, 06 Jan 2008 20:02:57 GMT
Hello everybody.

I'm trying to iterate over a sequence (which came from a third-party 
partner response message), filling the output of a process I'm writing.


here is my forEach loop definition :

<bpws:forEach
   counterName="Counter"
   name="IterateOverResults"
   parallel="no">

   <bpws:startCounterValue>
     <![CDATA[1]]>
   </bpws:startCounterValue>
   <bpws:finalCounterValue>
<![CDATA[count($feedReaderResponse.parameters/xsd:return/xsd:content)]]>
   </bpws:finalCounterValue>

     <bpws:scope>
     <bpws:assign name="AddResultToOutput" validate="no">
       <bpws:copy>
<bpws:from><![CDATA[$feedReaderResponse.parameters/xsd:return/xsd:content[$Counter]/xsd:content]]></bpws:from>
<bpws:to><![CDATA[$output.payload/tns:result[$Counter]/tns:htmlContent]]></bpws:to>
       </bpws:copy>
     </bpws:assign>
   </bpws:scope>
</bpws:forEach>

I'm quite not sure of my XPath Expressions as I'm (really) far from an 
expert, but as far as I understand BPEL specification, the counter 
variable (basically $Counter) should be implicitly accessible inside the 
loop.

Or, when I 'bpel-compile' my process, the compiler fails :
[exec] null:90: error: [UndeclaredVariable] Attempt to reference 
undeclared variable "Counter".
      [exec] null:95: error: [UndeclaredVariable] Attempt to reference 
undeclared variable "Counter".
      [exec] java org.apache.ode.tools.bpelc.cline.BpelC: null
      [exec] java.lang.NullPointerException
      [exec]     at 
org.apache.ode.bpel.o.OForEach.toString(OForEach.java:41)
      [exec]     at java.lang.String.valueOf(String.java:2615)
      [exec]     at java.lang.StringBuilder.append(StringBuilder.java:116)
      [exec]     at 
org.apache.ode.bpel.compiler.BpelCompiler.compile(BpelCompiler.java:839)
      [exec]     at 
org.apache.ode.bpel.compiler.SequenceGenerator.compileChildren(SequenceGenerator.java:47)
      [exec]     at 
org.apache.ode.bpel.compiler.SequenceGenerator.compile(SequenceGenerator.java:41)
      [exec]     at 
org.apache.ode.bpel.compiler.BpelCompiler$7.run(BpelCompiler.java:882)
      [exec]     at 
org.apache.ode.bpel.compiler.BpelCompiler.compile(BpelCompiler.java:1045)
      [exec]     at 
org.apache.ode.bpel.compiler.BpelCompiler.compileActivity(BpelCompiler.java:878)
      [exec]     at 
org.apache.ode.bpel.compiler.BpelCompiler.compile(BpelCompiler.java:831)
      [exec]     at 
org.apache.ode.bpel.compiler.BpelCompiler$5.run(BpelCompiler.java:708)
      [exec]     at 
org.apache.ode.bpel.compiler.BpelCompiler$8.run(BpelCompiler.java:1139)
      [exec]     at 
org.apache.ode.bpel.compiler.BpelCompiler.compile(BpelCompiler.java:1045)
      [exec]     at 
org.apache.ode.bpel.compiler.BpelCompiler.compileScope(BpelCompiler.java:1089)
      [exec]     at 
org.apache.ode.bpel.compiler.BpelCompiler.compile(BpelCompiler.java:688)
      [exec]     at 
org.apache.ode.bpel.compiler.BpelC.compile(BpelC.java:260)
      [exec]     at 
org.apache.ode.bpel.compiler.BpelC.compile(BpelC.java:330)
      [exec]     at 
org.apache.ode.tools.bpelc.BpelCompileCommand.execute(BpelCompileCommand.java:121)
      [exec]     at 
org.apache.ode.tools.bpelc.cline.BpelC.main(BpelC.java:99)

So, I guess that my XPath is wrong, but It should be possible to access 
to $Counter inside it however ...

Any ideas ?

Cheers,

-- 
  Sebastian

Mime
View raw message