Here at JBoss, we recently discussed how we
would provide a debugging API for general purposes (not just the designer). My initial
design (i.e. napkin notes) appears below.
Debugging is about setting
breakpoints in the process *definition*, intercepting the *execution* and then
stepping through the following steps. jBPM already offers a mechanism to
observe the execution of a process. I can think of providing debugging facilities
by creating a process instance with runtime actions installed at the node-enter
event of every activity. I will call them "interceptors".
There are two execution
modes, "continuous" or "step-by-step". In the former, only
interceptors marked as "breakpoints" can suspend the process
execution. In the latter, all interceptors can suspend execution.
Communication between the
BPEL runtime and the debugger occurs through some remoting technology. EJBs are
an option, but web services seem more appropriate since BPEL is about web
services.
The exposed operations are:
setBreakpoint(processName:
QName, activityName: String)
----
Mark the interceptor at the
entrance of the specified activity, which belongs to the specified process, as
a breakpoint.
debug(processName: QName) :
ProcessInstanceHandle
---
Create an instance of the
specified process for debugging purposes. Returns a handle to the newly created
instance.
getBranches(instanceHandle:
ProcessInstanceHandle) : List<ProcessBranchHandle>
---
Retrieves the execution
branches of the specified process instance.
stepInto(branchHandle:
ProcessBranchHandle)
---
Executes the specified
branch up to the next activity. If the branch currently points to a scope,
execution will proceed up to the activity nested within the scope.
stepOver(branchHandle:
ProcessBranchHandle)
---
Executes the specified branch up to the next
activity. If the branch currently points to a scope, execution will proceed up
to the activity that follows the scope.
However, I was recently introduced to the
server framework in the Eclipse web tools project. Bruno is currently using
that to implement the deployment feature. I understand it can be used for
debugging too. This option is interesting to explore because it goes hand in
hand with the current deployment work.
-Alejandro
From:
bpel-dev-bounces@xxxxxxxxxxx [mailto:bpel-dev-bounces@xxxxxxxxxxx] On Behalf Of Robert Brodt
Sent: Friday, August 11, 2006
10:57 AM
To: bpel-dev@xxxxxxxxxxx
Subject: [bpel-dev] BPEL Debugger
We're working towards integrating BPEL Designer into our
Sybase WorkSpace product, and one of the requirements is a graphical debugger.
Has anyone given any thought to this feature and/or done some preliminary
design (scribbled notes on a napkin, etc.)? We are currently actively working
on fleshing out a design spec which we would happily share and contribute back
to the community, however we don't needlessly want to duplicate efforts already
in progress. Also, we'd happily accept design ideas (if any) others have
thought about ;)