Your note is a bit inaccurate:
a)Note that the correlation is defined inside the scope of the for-each - so they're actually different correlation-sets. <forEach counterName="commandCounter" parallel="no" xml:ID="8"> <correlationSets> <correlationSet name="esbRequest" properties="tns:esb-id" /> </correlationSets> .... receive Also note - b) ODE does not produce the error you described. c) page 91 of wsbpel-v2.0-OS: If a business process instance simultaneously enables two or more IMAs for the same partnerLink, portType, operation but different correlationSet(s), and the correlations of multiple of these activities match an incoming request message, then the bpel:ambiguousReceive standard fault MUST be thrown by all IMAs whose correlation set(s) match the incoming message. For the above condition to occur, the use case I'm testing must be valid And lastly: d) I've used the exact same process on other BPEL engines, with success.... This seems to be an ODE bug. > -----Original Message----- > From: Rafal Rusin [mailto:[email protected]] > Sent: Wednesday, February 25, 2009 10:25 AM > To: [email protected] > Subject: Re: Correlated receive in parallel for-each loop > > > Your bpel contains following: > > <forEach counterName="commandCounter" parallel="yes"> > <receive createInstance="no" > name="ESBResult" operation="ESBResult" > partnerLink="ESBResult" > portType="tns:ESBResult" > variable="ESBMessage" xml:ID="19"> > > <correlations> > <correlation initiate="no" > set="esbRequest" /> > </correlations> > </receive> > </forEach> > > > According to bpel specification, this will cause conflictingReceive error > when forEach has >1 items. > > Regards, > Rafal Rusin > > http://www.mimuw.edu.pl/~rrusin/ > > > Andi Abes wrote: > > > > I'm trying to get a relatively simple process which performs a > > correlated receive in parallel for-each loop (attached) - just the sweet > > spot for BPEL ;) > > > > I've tried with: > > - Derby/JPA - java.sql.SQLException: A lock could not be obtained > > due to a deadlock (full stack in earlier emails) > > - Hibernate/Oracle - the exception is below (hibernate 3.2.5/ > > oracle 10.2) > > - JPA / Oracle - This didn't produce exceptions, but it produced > > the following error, which killed the process instance... > > o ERROR - GeronimoLog.error(104) | The message exchange seems to > > be in an unconsistent state, you're probably missing a reply on a > > request/response interaction. > > INFO - GeronimoLog.info(79) | ActivityRecovery: Registering activity 25, > > failure reason: org.apache.ode.bpel.iapi.BpelEngineException: Engine > > requested response > > while the message exchange hqejbhcnphr426192c3r3o was in the state > > COMPLETED_OK on channel 45 > > > > Any thoughts? > > The last 2 cases sound to me as a bug... > > > > > > > > <<BPEL_2.zip>> > > > > Exception with Hibernate/Oracle: > > > > > > DEBUG - GeronimoLog.debug(66) | > > org.apache.ode.daohib.bpel.hobj.HProcess{created=null, active=false, > > events=<uninitialized>, processId={urn:bpel:BpelMock}BPELMo > > ck-1, deployDate=2009-02-24 10:33:55, id=1, version=1, > > messageExchanges=<uninitialized>, deploymentPartnerLinks=[], > > typeName=BPELMock, lock=0, correlators=<unin > > itialized>, deployer=null, typeNamespace=urn:bpel:BpelMock, > > instances=<uninitialized>, guid=hqejbhcnphr42in8iaul6m} > > DEBUG - GeronimoLog.debug(66) | > > org.apache.ode.daohib.bpel.hobj.HCorrelator{created=2009-02-24 10:33:55, > > lock=0, process=org.apache.ode.daohib.bpel.hobj.HProces > > s#1, correlatorId=25.ESBResult, messageCorrelations=<uninitialized>, > > selectors=<uninitialized>, id=2} > > DEBUG - GeronimoLog.debug(66) | > > org.apache.ode.daohib.bpel.hobj.HProcessInstance{created=2009-02-24 > > 10:34:25, jacobState=org.apache.ode.daohib.bpel.hobj.HLargeD > > ata#168, events=<uninitialized>, previousState=10, > > lastActiveTime=2009-02-24 10:34:33, fault=null, > > correlationSets=<uninitialized>, sequence=27, id=7, activityF > > ailureCount=0, messageExchanges=<uninitialized>, lock=0, > > correlatorSelectors=<uninitialized>, activityFailureDateTime=null, > > scopes=<uninitialized>, process=org. > > apache.ode.daohib.bpel.hobj.HProcess#1, > > activityRecoveries=<uninitialized>, state=20, > > instantiatingCorrelator=org.apache.ode.daohib.bpel.hobj.HCorrelator#3} > > DEBUG - GeronimoLog.debug(66) | about to open PreparedStatement (open > > PreparedStatements: 0, globally: 3) > > DEBUG - GeronimoLog.debug(66) | opening JDBC connection > > DEBUG - GeronimoLog.debug(70) | Cannot open connection [???] > > java.sql.SQLException: ORA-01453: SET TRANSACTION must be first > > statement of transaction > > at > > oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:11 > > 2) > > at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) > > at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) > > at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745) > > at > > oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207) > > at > > oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:957) > > at > > oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement. > > java:1170) > > at > > oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java: > > 1696) > > at > > oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1662) > > at > > oracle.jdbc.driver.PhysicalConnection.setTransactionIsolation(PhysicalCo > > nnection.java:1661) > > at > > org.apache.tomcat.dbcp.dbcp.DelegatingConnection.setTransactionIsolation > > (DelegatingConnection.java:340) > > at > > org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper > > .setTransactionIsolation(PoolingDataSource.java:332) > > at > > org.apache.ode.daohib.DataSourceConnectionProvider.getConnection(DataSou > > rceConnectionProvider.java:45) > > at > > org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.ja > > va:423) > > at > > org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.jav > > a:144) > > at > > org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher > > .java:139) > > at > > org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547) > > at > > org.hibernate.loader.hql.QueryLoader.iterate(QueryLoader.java:399) > > at > > org.hibernate.hql.ast.QueryTranslatorImpl.iterate(QueryTranslatorImpl.ja > > va:380) > > at > > org.hibernate.engine.query.HQLQueryPlan.performIterate(HQLQueryPlan.java > > :224) > > at > > org.hibernate.impl.SessionImpl.iterateFilter(SessionImpl.java:1492) > > at > > org.hibernate.impl.CollectionFilterImpl.iterate(CollectionFilterImpl.jav > > a:38) > > at > > org.apache.ode.daohib.bpel.CorrelatorDaoImpl.dequeueMessage(CorrelatorDa > > oImpl.java:89) > > : > > > > > > > > -- > View this message in context: http://www.nabble.com/Correlated-receive-in- > parallel-for-each-loop-tp22184207p22204983.html > Sent from the Apache Ode User mailing list archive at Nabble.com.
