ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anne Noseda <noseda.a...@gmail.com>
Subject BPEL - array manipulation
Date Fri, 09 Feb 2007 08:00:43 GMT

Hi,

I would like to manipulate array dynamically in my BPEL process.
I have tryed the following syntax : I have a while loop and a variable
counter initialized to 1 and incremented at each loop. In this loop, I make
the following assignment :

<bpws:copy>
 <bpws:from
xmlns:etnic="http://services.etnic.be">$responseEtab.parameters</bpws:from>
 <bpws:to
xmlns:etnic="http://services.etnic.be">$responsesEtab/items[$counter]</bpws:to>
</bpws:copy>

At execution time, I receive this error :
FATAL - ASSIGN                         - Unexpected exception in assignment,
terminating process
java.lang.IllegalStateException: LValue must not have more than one variable
reference
        at
org.apache.ode.bpel.elang.xpath10.o.OXPath10Expression.getVariable(OXPath10Expression.java:171)
        at
org.apache.ode.bpel.o.OAssign$LValueExpression.getVariable(OAssign.java:117)
        at org.apache.ode.bpel.runtime.ASSIGN.evalLValue(ASSIGN.java:112)
        at org.apache.ode.bpel.runtime.ASSIGN.copy(ASSIGN.java:357)
        at org.apache.ode.bpel.runtime.ASSIGN.run(ASSIGN.java:78)
        at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java
:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at
org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
        at org.apache.ode.jacob.vpu.JacobVPU.execute (JacobVPU.java:139)
        at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:731)
        at
org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:703)
        at
org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:267)
        at
org.apache.ode.bpel.scheduler.quartz.QuartzSchedulerImpl.doExecute
(QuartzSchedulerImpl.java:295)
        at
org.apache.ode.bpel.scheduler.quartz.QuartzSchedulerImpl.execute(QuartzSchedulerImpl.java:301)
        at
org.apache.ode.bpel.scheduler.quartz.JobImpl.execute(JobImpl.java:32)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:195)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java
:650)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)

So, my question, how to manipulate dynamically arrays without having two
variables in the left expression of the assignment ?

And my second question more "philosophical" : is this the good way ? Is a
BPEL process able to manipulate arrays or must I invoke external partners
for all "complex" manipulations ? Or is there an other way to handle my
problem ? With xsl or other things ? 
I think that BPEL code becomes to much complex when the process logic
involves a lot of variables' manipulations.

Thanks in advance,

Anne.
-- 
View this message in context: http://www.nabble.com/BPEL---array-manipulation-tf3198998.html#a8881712
Sent from the Apache Ode User mailing list archive at Nabble.com.


Mime
View raw message