You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by Denis Weerasiri <dd...@gmail.com> on 2009/08/01 20:50:10 UTC

Debugging an instance for a given process

Hi all,
I'm developing a web based BPEL debugger for ODE for my Google Summer of
Code project under ASF.
Here I have explained on how to debug an instance for a given process.


   1. Store the process ID in the ODE server.
   2. Invoke the process (may use a SoapUI implementation)
   3. Then at the ODEServer, when a new instance created a MEX Interceptor
   which listen to new instance , will check whether the created instance has
   the type of the process needed to be debugged. (For this it will be used the
   stored process ID in 1.)
   4. If the instance is a type of the process need to be debugged, then
   that instance will be suspended.
   5. Then the suspended instance id should be sent back to the Web
   interface, so then breakpoints specified by the user can be added to the
   suspended instance via the service which exposes BpelManagementFacadeImpl
   class. (Still don't know how to send it back to the front end)
   6. Then User can use step option to go from each breakpoint to the other.


For more clarifications I added a sequence diagram as well.

Re: Debugging an instance for a given process

Posted by Denis Weerasiri <dd...@gmail.com>.
I tried to implement this. But I get an exception as follows.
I used "ic.getMessageExchangeDAO().getInstance().getInstanceId()" to get the
instanceID.
And the InstanceManagementService is used to suspend the instance. The stack
is as follows.

DEBUG - GeronimoLog.debug(66) | The system is checking for the operation
using the following WSAAction:
DEBUG - GeronimoLog.debug(66) | Checking for Operation using SOAP message
body's first child's local name : suspend
DEBUG - GeronimoLog.debug(66) | Found operation
org.apache.axis2.description.InOutAxisOperation@47b708
org.apache.axis2.AxisFault: java.lang.RuntimeException: Invocation of method
suspend in management interface failed: The process "null" does not exist.
    at
org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:512)
    at
org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:370)
    at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:416)
    at
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
    at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
    at
org.apache.ode.bpel.clients.imapi.InstanceManagementStub.suspend(InstanceManagementStub.java:3205)
    at
org.apache.ode.bpel.clients.imapi.InstanceManagementServiceClient.suspend(InstanceManagementServiceClient.java:30)
    at
org.apache.ode.bpel.intercept.DebuggerInterceptor.onPartnerInvoked(DebuggerInterceptor.java:66)
    at
org.apache.ode.bpel.intercept.InterceptorInvoker$2.invoke(InterceptorInvoker.java:47)
    at
org.apache.ode.bpel.engine.ODEProcess.processInterceptors(ODEProcess.java:333)
    at
org.apache.ode.bpel.engine.ODEWSProcess.invokePartner(ODEWSProcess.java:592)
    at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.invoke(BpelRuntimeContextImpl.java:653)
    at
org.apache.ode.bpel.rtrep.v2.RuntimeInstanceImpl.invoke(RuntimeInstanceImpl.java:628)
    at org.apache.ode.bpel.rtrep.v2.INVOKE.wsdlInvoke(INVOKE.java:108)
    at org.apache.ode.bpel.rtrep.v2.INVOKE.run(INVOKE.java:71)
    at sun.reflect.GeneratedMethodAccessor44.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:450)
    at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
    at
org.apache.ode.bpel.rtrep.v2.RuntimeInstanceImpl.execute(RuntimeInstanceImpl.java:690)
    at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:758)
    at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl.executeCreateInstance(BpelRuntimeContextImpl.java:746)
    at
org.apache.ode.bpel.engine.ODEProcess.executeCreateInstance(ODEProcess.java:194)
    at org.apache.ode.bpel.engine.ODEWSProcess$1.call(ODEWSProcess.java:387)
    at org.apache.ode.bpel.engine.ODEWSProcess$1.call(ODEWSProcess.java:386)
    at
org.apache.ode.bpel.engine.ODEProcess$ProcessCallable.call(ODEProcess.java:758)
    at
org.apache.ode.bpel.engine.BpelInstanceWorker.doInstanceWork(BpelInstanceWorker.java:171)
    at
org.apache.ode.bpel.engine.BpelInstanceWorker.execInCurrentThread(BpelInstanceWorker.java:106)
    at
org.apache.ode.bpel.engine.ODEProcess.doInstanceWork(ODEProcess.java:314)
    at
org.apache.ode.bpel.engine.ODEWSProcess.invokeProcess(ODEWSProcess.java:385)
    at
org.apache.ode.bpel.engine.MyRoleMessageExchangeImpl.doInvoke(MyRoleMessageExchangeImpl.java:129)
    at
org.apache.ode.bpel.engine.UnreliableMyRoleMessageExchangeImpl$1.call(UnreliableMyRoleMessageExchangeImpl.java:46)
    at
org.apache.ode.bpel.engine.UnreliableMyRoleMessageExchangeImpl$1.call(UnreliableMyRoleMessageExchangeImpl.java:45)
    at
org.apache.ode.bpel.engine.ODEProcess$ProcessCallable.call(ODEProcess.java:758)
    at
org.apache.ode.bpel.engine.Contexts.execTransaction(Contexts.java:106)
    at
org.apache.ode.bpel.engine.BpelServerImpl$TransactedCallable.call(BpelServerImpl.java:1022)
    at
org.apache.ode.bpel.engine.BpelServerImpl$ServerCallable.call(BpelServerImpl.java:1002)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
    at java.util.concurrent.FutureTask.run(FutureTask.java:123)
    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)

Regards,
Denis Weerasiri,
CSE-UoM
http://ddweerasiri.blogspot.com


On Sun, Aug 2, 2009 at 12:20 AM, Denis Weerasiri <dd...@gmail.com>wrote:

> Hi all,
> I'm developing a web based BPEL debugger for ODE for my Google Summer of
> Code project under ASF.
> Here I have explained on how to debug an instance for a given process.
>
>
>    1. Store the process ID in the ODE server.
>    2. Invoke the process (may use a SoapUI implementation)
>    3. Then at the ODEServer, when a new instance created a MEX Interceptor
>    which listen to new instance , will check whether the created instance has
>    the type of the process needed to be debugged. (For this it will be used the
>    stored process ID in 1.)
>    4. If the instance is a type of the process need to be debugged, then
>    that instance will be suspended.
>    5. Then the suspended instance id should be sent back to the Web
>    interface, so then breakpoints specified by the user can be added to the
>    suspended instance via the service which exposes BpelManagementFacadeImpl
>    class. (Still don't know how to send it back to the front end)
>    6. Then User can use step option to go from each breakpoint to the
>    other.
>
> For more clarifications I added a sequence diagram as well.
>