WebOS: Integrating Portal Applications with Desktop applications
The Portal is emerging as a platform for providing similar services to that provided by the desktops but through Internet. It's a concept that is being increasingly known as WebOS. Some understand the WebOS concept as a complete replacement of the local desktop but it is also possible to consider it a complement.
This proposal describes a way to adapt portlet applications so that they can be used outside the portlet (from a user point of view) and thus facilitate its integration with regular local applications
This would be specially significant for personal productivity and collaboration tools such as:
The objective of this project is to define and implement the changes necessary to Liferay's portlet framework to allow opening portlets into windows to ease their integration into the portal.
It also includes solving the challenges that arise from this possibility such as:
- Launching the applications independently of the portal
- Intelligent and transparent handling of the session so that the portlet feels like a regular application
Initial Project Scope#
<outline the initial project scope>
Discussion of Design/Implementation Approach#
The fist step in the implementation is to make it possible for portlets to live in it's own window. Fortunately, Liferay already has a custom WindowState called POP_UP to support this and starting with version 4.3 that window state is always kept when navigating the application.
Leveraging the POP_UP window state all that is needed is a way to launch portlets so that they open into a Window. The next subsection describes several mechanisms to do this.
Not all portlets might be prepared to be launched in a separate window or it might just not make sense to do so. To signal that it does support it I suggest adding a new element to liferay-portlet.xml portlets' declaration:
An alternative that might be more flexible for similar future improvements would be:
Note: It might be interesting to consider creating a new type of WindowState that inherits the currently functionality of POP_UP but that can be extended to provide more specific functionalities.
Launch methods #
There are several methods to launch portlets as applications:
Method A) Extracting to a window from the portal #
A new button would be added in the portal decoration that when clicked opens a new browser window (without navigation controls) and shows the portlet inside it in POP_UP window state.
Method B) Opening directly from the local desktop #
An small native launcher application could be developed so that user's can have an icon in their local desktop to open the portal application. The launcher would open a browser window and invoke the portal automatically.
Session Handling #
Currently Liferay Portal is able to 'guess' that the session might be finishing and present a warning to the user. But once the portlet integrates as a desktop applications this brings new challenges:
- User are not used to renewing their session in desktop apps
- This types of portlets might allow more local interaction so that there is no requests to the server for longer periods of time
- Several browser windows pointing to the portal are used at the same time.
Some solutions for this would be:
- Automatic renewal of the session. This should not be done for all portlets, but only for those that request this feature through a new entry liferay-portlet.xml
- Improve the session timeout script to be aware of several browser windows. This way a server request made in one window makes all others aware that the session has been extended. While it is recommended to do a more detailed study of the best way to implement this, a simple way might be using a cookie to store the last time a request was made to the server instead of a regular js variable.