Google Summer of Code 2009 Proposal
Web-based BPEL debugger for Apache ODE
Denis Dhananjaya Weerasiri
Web-based BPEL debugger for Apache ODE
Apache ODE(Orchestration Director Engine) is a WS-BPEL compliant business process executable work-flow engine. It supports composition of web services by choreographing or orchestrating service interactions.
In order to run a business process successfully in ODE, it is a must to verify and debug its BPEL process model before deploying it in Apache ODE. So exposing the process debugging functionality as a web services such that a user can remotely debug a process and adding a graphical monitoring console allows for setting breakpoints and to monitor the run time details of that process will increase the usability as well as popularity of the work-flow engine we are concerning. Currently though the debugging functionality is included in Apache ODE, it's not really been tested for the current Apache ODE and it's not exposed as a web service.
Web based debugging support for Apache ODE is a project aimed at exposing the debugging functionality as a web service and adding an AJAX based monitoring console to which consist of a graphical representation of a particular business process, allows for setting breakpoints to activities and allows for monitoring that process being debugged.
This will enable users to gain full advantage of the ODE, by reducing design time and the testing time during the process development by allowing them to remotely debug a business process, set breakpoints to process activities, modify variables and to monitor the run rime variable information.
Fully tested debugging implementation exposed as a web service and AJAX based monitoring console capable of allowing debugging functionality with a graphical representation of the process.
Appropriate documentation to guarantee the continuation of the project.
Set of test cases which make sure the functionality of the web application.
Complete on-line tutorial which shows how to use the web-based BPEL debugger.
Apache ODE is a BPEL engine that executes business processes described in WS-BPEL standard by orchestrating existing Web Services. ODE talks to web services, sending and receiving messages, handling data manipulation and error recovery as described by the process definition. ODE supports both long and short living process executions to orchestrate all the services that are part of the application we are interested.
When it comes to design and deployment levels of BPEL processes, users have to remotely test and verify whether the business processes are deployed successfully and work accurately. For that users should be able to set breakpoints to the particular business process's activities, modify variables and monitor the run time variable values (if any) of that process. This process becomes much easier if it is provided a graphical representation of the process model like SVG (Scalable Vector Graphics) output and web based console to handle above tasks like setting breakpoints to business process's activities.
Currently Apache ODE has debugging functionality which supports for setting breakpoints to activities and step-through etc. But this functionality is not really tested for current ODE and not exposed as a Web service. So this is currently inaccessible through an web interface. Lack of web based BPEL debugger with a user friendly monitor console to add breakpoints to activities, modify and monitor variables of a process is a major disadvantage when it comes to design and deployment phases and decreases the value of features provided by ODE.
Web-based BPEL debugger for Apache ODE will provide the web based BPEL process debugging functionality with easy to use monitor console which has following features for Axis2-based ODE users.
Apache Axis2 Web service which exposes the debugging functionalities such as setting breakpoints to activities, variable modification and step-through etc.
An web based monitoring console which consisted of following sections
1.A graphical output of the particular business process and with the capability of setting breakpoints to activities. The visualization of BPEL will be handled by Oryx core and the visualization of breakpoints/current variable values on top of the process model as an overlay will be handled by mash up API provided by Oryx which is a web based BPMN editor.
2.A separate section for debugger process initialization. This section will provide an easy way of choosing the initial EPR of the service in which the initial operation is defined, initial operation to be invoked and initial variable values (if any), before start of the debugger process.
3.A set of command buttons panel to start the debugging process, step through, terminate the debugging process restart debugging process etc.
Before the start of debugging process required details like list of breakpoints, processed XML data for each of the debug iterations, initial EPR of the service, initial operation to be invoked and initial variable values(if any) etc. will be decided by the user and sent them to the ODE.
As a further improvement I would suggest to add reliable messaging feature to the Apache Axis2 integration layer. Because long running processes like web based BPEL debugger, communication between client and ODE can fail with various causes. This communication failure leads to failure of debugging session and the continuity of business process.
The current implementation for debugging functionality is not really tested with current ODE. So in the first phase I have to test the current implementation of debugging functionality with the current version of Apache ODE. As well I plan to start creating requirements and specification document for web based BPEL debugger which will help in future developments and examine the project status.
Then as the second phase I'll discuss with ODE developers and design the API for the debugging service and I have to implement the unimplemented features (if any) in debugging functionality provided in ODE. After completing and verifying the implementation, it is needed to expose the debugging functionality as a separate web service which will be deployed during start of ODE like Management API service. This phase ensure the quality of service for the web service.
Usability is also a major issue, when implementing the web based monitoring console. If the design is bad and user feels very unconformable with the way he interacts with the system, there is no value in it. So the design of the graphical user interface is also a critical factor.
Also when considering AJAX based web application, we have to find the right balance between server side technologies and client side technologies which we are going to use.
Therefore as the third phase, I plan to talk with ODE developers and Oryx developers, and design the user interface prototype first with small set of features. Then I'll improve it further. After that I'll implement the project by adhering to the design came up with the previous discussions and work with community to get more feedback about the web application.
Regarding the process model generation, this is handled by Oryx Core. Oryx provides a BPEL to BPMN conversion feature which can be used to generate the process model in BPMN and the Oryx mash up API enable us to access the modeling elements via the elements' IDs and corresponding attribute values.
Then I'll fix the bugs reported during usage of the web application, code review, test different scenarios and prepare required documentation for the project.
This project will be conducted within the Apache ODE community and Oryx community. As well the feedback from the community will be always valued and appreciated. ODE-dev list and Oryx discussion group will be used for this purpose. Already several discussions on this have been started and can be found on here and also I have created a JIRA issue on this. Also I am planning to maintain a wiki page displaying the current progress of the project, where others can comment on it. This will maintain the visibility and the transparency of the project in a high degree.
I have divided my work plan in to four steps
April 20 to May 23 - Get familiar with Apache ODE core functionalities Oryx and its mash up API. Test the debugging functionality implemented in ODE already. Create the requirement and specification document using gathered information.
May 23 to July13 - First and the second phases of development. Submit the workings for mid-term evaluation and getting the feedback from developers and mentors about the work done up to that point.
July13 to August 17 - Third phase of development
August 17 to August 24 - Code review. Test different scenarios defined in the design phase. Prepare the documentations. Submit the workings for final evaluation.
I am Denis Weerasiri, a Third Year Undergraduate of University of Moratuwa, Sri Lanka, specializing in the field of Computer Science and Engineering. I'm a fast learner when it comes to computing.
I've been working with Java technologies for almost four years. I have developed fair amount of J2EE and J2SE applications. And I have good exposure to SOA, especially to web services. I have worked with Apache Axis2, Apache ODE, and Apache Batik projects. I contributed to a status tracking tool for Apache ODE and a WS-BPEL dry run tool which is an eclipse plug-in for Apache ODE processes. I have also made a few contributions to Apache ODE.
With all these projects I have got a good exposure to the open source world, especially to Apache projects. I am familiar with Apache Maven, Apache Ant, Subversion and Apache Tomcat which are widely used in Apache projects and OSGi, Apache felix bundle plugin and Moodle.
During this summer though I have a few minor academic activities , in overall a commitment of 40-50 hrs a week (or more) will not be a problem at all.