ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Karel Gardas <karel.gar...@centrum.cz>
Subject Re: Is there any way how to get bpmn:id?
Date Wed, 08 Jul 2009 11:56:57 GMT

Hi Alex,

it took me some time to figure out needed changes in buildr
infrastructure, but it's finally compiling and I'm getting into
following issue.

Alex Boisvert wrote:
> Indeed... BpelManagementFactory is a proprietary class (not in Apache Ode)
> which hides the lookup of the ProcessManagement API remote interface.  I
> didn't realize when I cut & pasted the code, sorry.   The class is tied to
> other stuff (e.g. loading of configuration, etc.) so I can't share it
> easily.
> 
> Take a look at the following classes for facilities to connect to the PM API
> via RMI:
> 
> org.apache.ode.bpel.jca.clientapi.ProcessManagementConnection;
> org.apache.ode.ra.OdeConnectionFactory;
> org.apache.ode.ra.OdeManagedConnectionFactory;

both ProcessManagementConnection and OdeConnectionFactory are just
interfaces so I started digging into OdeManagedConnectionFactory with
the following testing code:

	OdeManagedConnectionFactory fact = new OdeManagedConnectionFactory();
	try {
	    OdeConnectionFactory con_fact =
(OdeConnectionFactory)fact.createConnectionFactory();
	    System.err.println(con_fact.getClass().getName());
	    javax.resource.cci.Connection con = con_fact.getConnection();
	    System.err.println(con.getClass().getName());
	}
	catch (Exception e) {
	    e.printStackTrace();
	}

the intention is "what can I get from it?". The problem is on the line:

	    javax.resource.cci.Connection con = con_fact.getConnection();

I get following exception:

Unable to create connection: Protocol error: unexpected remote object
type!; nested exception is:
	java.lang.ClassCastException: sun.rmi.registry.RegistryImpl_Stub cannot
be cast to org.apache.ode.ra.transports.rmi.OdeRemote
	at
org.apache.ode.ra.OdeManagedConnectionFactory.createManagedConnection(OdeManagedConnectionFactory.java:100)
	at
org.apache.ode.ra.OdeConnectionManager.allocateConnection(OdeConnectionManager.java:34)
	at
org.apache.ode.ra.OdeConnectionFactoryImpl.getConnection(OdeConnectionFactoryImpl.java:46)
	at org.apache.ode.bpel.runtime.ASSIGN.run(ASSIGN.java:95)
	at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	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:875)
	at
org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:206)
	at
org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:237)
	at
org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:408)
	at
org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:439)
	at
org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:441)
	at
org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:411)
	at
org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:404)
	at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:218)
	at
org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:404)
	at
org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:400)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.rmi.RemoteException: Protocol error: unexpected remote
object type!; nested exception is:
	java.lang.ClassCastException: sun.rmi.registry.RegistryImpl_Stub cannot
be cast to org.apache.ode.ra.transports.rmi.OdeRemote
	at
org.apache.ode.ra.transports.rmi.RMITransport.createPipe(RMITransport.java:45)
	at
org.apache.ode.ra.OdeManagedConnectionFactory.createManagedConnection(OdeManagedConnectionFactory.java:98)
	... 24 more
Caused by: java.lang.ClassCastException:
sun.rmi.registry.RegistryImpl_Stub cannot be cast to
org.apache.ode.ra.transports.rmi.OdeRemote
	at
org.apache.ode.ra.transports.rmi.RMITransport.createPipe(RMITransport.java:39)
	... 25 more


Do you have any idea what's going wrong here? Also do you think there is
any documentation for this part of ODE? I'm asking since relationship
between OdeConnectionFactory and connection created by it and
ProcessManagementConnection is not yet clear to me.

Thanks!
Karel
> 
> Good luck,
> alex
> 
> On Tue, Jul 7, 2009 at 3:08 PM, Karel Gardas <karel.gardas@centrum.cz>wrote:
> 
>> Hi Alex,
>>
>> thanks a lot for your quick help. Unfortunately I do have quite problem
>> to find BpelManagementFactory class. I've tried to find it in ode-trunk,
>> in my ode-1.X source tree and also in ode-1.2 but it's nowhere. Could
>> you be so kind and kick me into the right direction?
>>
>> Thanks,
>> Karel
>>
>> Alex Boisvert wrote:
>>> Hi Karel,
>>>
>>> Here's a code fragment that does roughtly what you want:
>>>
>>>         ProcessManagementConnection conn =
>>> BpelManagementFactory.getInstance().createConnection();
>>>         try {
>>>             ActivityExtInfoListDocument s =
>>> conn.getExtensibilityElements(pid, aiid);
>>>             TActivitytExtInfoList l = s.getActivityExtInfoList();
>>>             List<TActivityExtInfo> ll = l.getActivityExtInfoList();
>>>             for (TActivityExtInfo info : ll) {
>>>                 NodeList nl = ((Element)
>>> info.getDomNode()).getElementsByTagNameNS(BPMN_NS, BPMN_ID);
>>>                 for (int i = 0; i < nl.getLength(); i++) {
>>>                     Node n = nl.item(i);
>>>                     result.add(n.getFirstChild().getNodeValue());
>>>                 }
>>>             }
>>>         } catch (Exception e) {
>>>             ...
>>>
>>>         }
>>>
>>> As you can see, you mostly need to use the Process Management API and the
>>> BPEL object model.
>>>
>>> alex
>>>
>>> On Tue, Jul 7, 2009 at 6:07 AM, Karel Gardas <karel.gardas@centrum.cz
>>> wrote:
>>>
>>>> Hello,
>>>>
>>>> I'm trying to find out but so far unsuccessful hence the question: is
>>>> there any way how to get bpmn:id which is assigned to some action
>>>> directly in action's code? i.e. I do have following code:
>>>>
>>>>  <bpel:sequence>
>>>>
>>>>    <bpel:scope bpmn:label="SubProcess" name="SubProcess"
>>>> bpmn:id="_KddAgBq8Ed6g-K1VcIMszw">
>>>> ....
>>>>
>>>> and I would like to get bpmn:id's value, i.e. "_KddAgBq8Ed6g-K1VcIMszw"
>>>> somehow in SCOPE.java code. I'm currently using ODE from 1.X branch.
>>>>
>>>> Thanks,
>>>> Karel
>>>>
>>
> 


Mime
View raw message