Hi Jürgen, I have noticed your mail but I was quite busy last weeks. Also this week is very tough, so I hope to find some time for a deep dive afterwards.
But perhaps the other devs have some idea about what's causing that NPE. Best, Tammo [email protected] wrote: > Hi, > > I posted message below some time ago, but there was no response (or did I > miss it? > I didn't find anything in the archives, either). > > Any idea about it? Tammo? > > Thanks in advance for any hint you can give me. > > Regards, > Juergen. > > > -----Original Message----- > From: [email protected] [mailto:[email protected]] > Sent: Tuesday, April 14, 2009 3:15 PM > To: [email protected] > Subject: Concurrent execution of extension activities (RE: Problem with flow > and extension activities) > > Hi Tammo, > >> -----Original Message----- >> From: Tammo van Lessen [mailto:[email protected]] >> Sent: Thursday, April 02, 2009 4:17 PM >> Subject: Re: AW: Problem with flow and extension activities >> >> That's true. If you need a concurrent execution of extension activities >> you'd need to implement the abstract class for async extensions, fork >> your own thread and call the ExtensionContext.complete method once your >> processing has finished. In this case the run method can finish before >> the processing is done and the navigation continues. > > I tried this with ODE 2.0 beta2 and put the complete code of my extension > activity > execution in a Runnable to be executed in an own thread, but it doesn't work > yet. > The code is basically like this: > > class MyExtensionActivity extends AbstractAsyncExtensionOperation { > > static java.util.concurrent.Executor executor = > Executors.newCachedThreadPool(); > > void run(...) { > executor.execute(new Runnable() { > public void run() { > // extension activity code: > // read variables from ext context > // do something > // write variables to ext context > // complete ext context > } > } > } > } > > For in-memory=true there is an exception when I try to complete the > ExtensionContext: > > java.lang.NullPointerException > at > org.apache.ode.jacob.vpu.JacobVPU.activeJacobThread(JacobVPU.java:203) > at > org.apache.ode.jacob.vpu.ChannelFactory$ChannelInvocationHandler.invoke(ChannelFactory.java:89) > at $Proxy42.completed(Unknown Source) > at > org.apache.ode.bpel.rtrep.v2.ExtensionContextImpl.complete(ExtensionContextImpl.java:147) > > So the actual execution of the extension code has worked in this case. > > For in-memory=false I get an exception when trying to read a variable in my > separate thread: > > java.lang.NullPointerException > at > org.apache.ode.dao.jpa.ProcessInstanceDAOImpl.getScope(ProcessInstanceDAOImpl.java:231) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.fetchVariableData(BpelRuntimeContextImpl.java:354) > at > org.apache.ode.bpel.rtrep.v2.RuntimeInstanceImpl.fetchVariableData(RuntimeInstanceImpl.java:155) > at > org.apache.ode.bpel.rtrep.v2.ExtensionContextImpl.readVariable(ExtensionContextImpl.java:90) > at > org.apache.ode.bpel.rtrep.v2.ExtensionContextImpl.readVariable(ExtensionContextImpl.java:108) > > which means that the DAO impl cannot find it's associated JPA entity manager > anymore. > So it seems I cannot access the variables in the extension context in this > case. > > And then there's another exception on completeWithFault() that looks similar > to the above: > > Exception in thread "pool-2-thread-3" java.lang.NullPointerException > at > org.apache.ode.jacob.vpu.JacobVPU.activeJacobThread(JacobVPU.java:203) > at > org.apache.ode.jacob.vpu.ChannelFactory$ChannelInvocationHandler.invoke(ChannelFactory.java:89) > at $Proxy40.completed(Unknown Source) > at > org.apache.ode.bpel.rtrep.v2.ExtensionContextImpl.completeWithFault(ExtensionContextImpl.java:162) > > It doesn't matter if my extension activities are actually called from within > a <flow> or not. > It also didn't change anything to let my extension implementation extend > AbstractAsyncExtensionOperation > instead of just implementing ExtensionOperation (I also did not find anything > in the ODE code, where they > are treated differently). Or have there been changes since 2.0-beta2 that > make this work? > > Or is there just something I am missing or that I have misunderstood? (-; > > Thanks for your patience, > Juergen. > -- Tammo van Lessen - http://www.taval.de
