BPEL Debugger Notes

This page contains some engineering notes on the BPEL debugger features for JCAPS Sierra release and Netbeans 6.1.

Pause Action Support

In addition to the Continue action, the BPEL debugger now supports the Pause action. Once the user activates this action, the process will continue till it reaches the first element (in any thread) at which it can stop. If there is no current process instance, the debugger will wait for the first execution event from any process instance.

There is, however, one caveat. If there is a single thread running and it is currently executing a <wait> activity (which for example is set to wait for 30 minutes) the current position will be shown 30 minutes later.

Multiple Threads Support

This feature is "activated" in case when the BPEL process being debugged has more than one thread (which implies presence of either <flow>, <repeatUntil> activities, or an <onEvent> handler).

The feature is supported by the following:

  • updated Process Execution view
  • new Threads view
  • new Call Stack view
  • special Step Over/Step Into/Step Out/Continue actions' behavior.

Process Execution View

The Process Execution view has been updated to incorporate thread information. Second column, named "Thread" was added to the view. It contains the id of the thread in which the given node is (was) executed. Nothing is displayed for nodes which have not yet been executed and for the process itself.

Threads View

The Threads view can be used to track the currently running threads in the current process instance. It contains two columns: Name and State. The first, obviously, is used to display the id of each thread, the second depicts its state (currently: either ACTIVE or COMPLETED). If the current process insatnce is in the SUSPENDED state, the current thread (see below) is marked with bold font and a special icon, the user has a possibility to manually change the current thread.

Call Stack View

The Call Stack view is a specialization of the Process Execution view -- it displays only the list of nodes being executed in the current thread, effectively representing the actual call stack of the thread. It also provides some additional information about these nodes: their line and xpath coordinates.

Actions Behavior

The behavior of the principal debugger actions has been updated to take into consideration that multiple threads can be available. Also the notion of "current thread" has been introduced in addition to "current process instance".

When a breakpoint is first hit, all currently active threads are paused and the thread of the current element is set as active. When the user activates either of the Step Over/Step Into/Step Out actions all threads are activated and continue running until an appropriate element in the current thread is reached. The exception from this rule occurs when a breakpoint in another thread is hit. In the latter case, the current thread is changed to that of the current element.

If in the course of process instance execution a new thread is created, then if its parent is the current thread, the new thread becomes current.

If in the course of process instance execution current thread finishes, its parent becomes the current thread. If its parent is null, the first available root (without parent) thread is chosen as the current. If no such threads are available, then the current thread context is lost. This should not cause any problems, as in this case the process instance itself should have finished already.

If the user manually changed the current thread (see Threads View), all threads are resumed and the process instance continues to execute until an appropriate element is reached in the new current thread.

When the user activates the Continue action, all threads are resumed and the process instance executes till a breakpoint is hit.

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo