RIA-Suite+OpenDolphin Concepts

OpenDolphin

The main principle behind OpenDolphin is simple : keep the application logic on the server but present it with all the capabilities of the client device.

OpenDolphin is a remoting solution that bridges the world of Enterprise Java and the UI technology on the client device. Unlike most REST approaches, it doesn't confine the server to be a data source only. Instead, with OpenDolphin your server-side business logic controls a shared presentation model. The client displays the OpenDolphin state in all its beauty. The figure below shows how client and server connect via OpenDolphin's shared presentation model.



In terms of Model-View-Controller (MVC) one can see in the figure above that OpenDolphin puts the View responsibility on the client but leaves the controlling logic on the server. The model (here in the sense of a presentation model, not a domain model) is shared.

The View - the UI elements from UI technologies such as JavaFx, JavaScript/HTML5 etc. - is bound to the presentation model. The presentation model state is synchronized by OpenDolphin which provides out-of-the-box communication between the client and the server. The communication follows the Command Pattern. Client sends Presentation model changes and application specific commands such as button pressed. The server processes the commands and reacts by changing the presentation model. Binding and remoting at presentation model level makes OpenDolphin agnostic to the UI technology. This allows one to choose the UI technology best suited to the client device namely desktop, browser or mobile. OpenDolphin provides a Java client for binding to Java UIs like JavaFx and Swing and a JavaScript client for binding to JavaScript/HTML5 based UIs. The picture below illustrates the shared presentation model concept.



RIA-Suite and OpenDolphin

ULC provides its own UI widgets and remoting at the UI level. Therefore, it is inefficient to use OpenDolphin's presentation model sharing on the server side of a ULC application. However, a ULC application can share its server side state with the server side presentation model of an OpenDolphin application via the OpenDolphin Event Bus.

ULC and OpenDolphin applications can subscribe and publish to the OpenDolphin Event Bus. Applications subscribing to OpenDolphin can check and process the events on the Event Bus by polling the Event Bus or by using the "push" features of RIA-Suite and OpenDolphin. RIA-Suite provides the component ULC OpenDolphin that allows ULC applications to subscribe and publish to OpenDolphin Event Bus.

The following picture shows how the state of a ULC application can be shared with and presented through OpenDolphin applications using different UI technologies such as JavaFx and JavaScript/HTML5 on different devices.



It is also possible to run an OpenDolphin application within the window of a ULC application. RIA-Suite provides ULC Web Integration through ULCFxBrowser. ULCFxBrowser is capable of running JavaScripts. Thus it is possible to run an OpenDolphin JS client within a ULCFxBrowser. On the server side, the ULC application can be integrated with OpenDolphin application through the OpenDolphin Event Bus. The following picture shows how the OpenDolphin client can run within a ULC application window.