Processes-Designer
9. March 2007
Designing Order-Processes with Eclipse RCP
Why Eclipse?
In spring 2005, Spirit Link received an inquiry from an international industrial enterprise about a solution for the administration, creation and profiling of order-processes that are proceeded in-house in an SAP environment. The key requirements were the graphical modeling and monitoring of process structures as well as the application’s expandability with additional modules that do not necessarily have to be offered in Java.
The decision to use the Eclipse Rich Client Platform (Eclipse RCP) suggested itself as the Graphical Editing Framework (GEF) is a capable and robust framework with which a graphical process modeling can be realized. Additionally, SWT offers a port that can be used with the Microsoft object-system OLE. This enables the integration of heterogeneous program modules in a Windows environment (Composite Application with Microsoft IExplorer, Adobe Flash, Visual Basic etc.). Further prominent aspects, e.g. the open plugin-structure, the native look & feel and numerous additional, freely available plugins indicated Eclipse RCP to be the first class technology.
Considerations about Architecture
The software that was to be developed is a client that communicates via web services with an SAP system. The data that
should be processed are defined by an XML scheme and mapped with XML bindings. Due to the editable domain model of the single processes, the client’s architecture had to be designed variably. Thus it is possible to react on extensions and changes of the models.
This could be splendidly realized with the extension framework from Eclipse. Because of the complexity of the data model global mechanisms for the data flow between user interface and backend had to be designed That also includes the principles of the Eclipse RCP, e.g. the implementation of user-defined perspectives with variable view sets.
Therefore a strict MVC-pattern was chosen although the APIs offered by Eclipse were not utilized. Instead, the APIs delivered with Java Runtime were employed in order to minimize the dependency on Eclipse in the lower levels.
For the user interfaces the already applied and familiar concept of Eclipse IDE were completely taken over.
Implementation
The implementation of every specification was mainly affected by the following question:
How can I realize a certain requirement with out-of-the-box functions of Eclipse as close to the framework as possible?
Getting a general idea about the available and usable extension points of the framework alone one reaches its limits soon.
The multitude of possibilities is not clear in the beginning and can only be made accessible over a longer period of time. Due to this it happened during the development that certain features were implemented twice and it came clear later that these features already had been integrated in a new version in the framework.
Anyway, it was astonishing how fast we reached presentable results: As the application’s development could be realized on a very high level, the concentration could be focused on the context-related specifications. It came clear that Eclipse RCP has left behind its origin as IDE designed application frame and is now as suitable for new developments of applications as for the extension of Eclipse SDK itself.
For us, Eclipse SDK was always a source of inspiration how to visualize a special requirement or use case. The analysis of the source code of Eclipse SDK and the plugins of third party providers gave us additional evidences for implementation.
The Future
In the last 2 years a complex RCP application has been developed which is comparably easy to maintenance and extend despite its size. Starting with Eclipse version 3.0 we have continuously profited from the improvement and extensions of the framework. Despite the initially flat but over the course steeping learning curve, a robust code basis has been established during the developmental period which we will port into and reuse in prospective RCP projects. This makes the development of such applications much more efficient, of course.
All in all we are enthusiastic about the use of Eclipse RCP for the implementation of Smart Clients and can produce complex applications with less effort. Last but not least the fun factor and therefore motivation is higher developing with the Eclipse RCP Framework.

