End-User interface
Overview
DILIGENT’s Graphical User Interface (GUI) is a combination of JSR 168 Portlets, GWT applications, Java Applets and Servlets aggregated under a portal engine.
GUI’s main goal is to receive requests from the end user and to pass the needed information to the underlying services so as to fulfil these requests. For this reason, all the aforementioned technologies are used in order to extensively invoke DILIGENT services. Whenever GUI has to call a service, it must first locate where running instances of this service lie. The entry point to DILIGENT infrastructure is the DIS (DILIGENT Information Service), which is responsible for informing the callers about where they can find running instances of specific type of services. In general, GUI makes use of almost all the DILIGENT services. To name but a few: Search Master, Content Manager, Metadata Manager, Annotation Manager, Personalization Service, etc.
Below you can find a short description of the technologies used by DILIGENT’s GUI:
- Portal Container, i.e. a form of web server that offers a broad array of resources and services. Its main goal is to aggregate different components called portlets in order to provide the user with the requested functionality. GridSphere is the portal engine that DILIGENT has decided to use. Furthermore, all portlets are developed as JSR 168 Portlets with extended use of Javascript both in the regular form and as GWT applications.
- JSR 168 is a standard API for creating java portlets. It defines a set of protocols so as any JSR168 compliant portlet can be deployed on any portal which supports the specification.
- Google Web Toolkit (GWT) is an open source Java software development framework that makes writing AJAX easy for developers. The developer codes in Java and then an interpreter is responsible for transforming Java code to JavaScript. Also, servlets are used in order the GWT application (client side) to communicate with the server.
Features
The capabilities offered by the End User UI, come out of generic, application-level components placed at the disposal of the user, or by service specific User Interface Elements offered by lower level services. Among others, these elements allows that through the UI, the end user:
- Queries Search Engine by using a user friendly interface, and allowing the user to select which type of search he/she wants to perform, such as Full Text, Geospatial, Fielded, Image Similarity Search or any combination of these.
- Browses the selected collections, and sees the results ordered by the field the user has selected.
- Navigates through Results: the way the results are presented is a customized option selected in user’s profile. Also, the results are paged in order to help the user to navigate through them. Furthermore, the user is able to drag & drop results in his/her personal basket for future use, in addition to applying an action on each result-record (like view content, view/edit metadata, manage annotations).
- Views Content of digital object in a separate window.
- Views Metadata of a specific digital object as well as editing it in case of being such a privileged user.
- Manages user’s personal annotations on a digital object.
- Generates reports based on templates and information found within DILIGENT content stored in user’s basket.
- Transfers content and metadata in the form of SCORM packages to an external yet integrated Course Management System.
- Edits user’s profile, allowing him/her to describe their personal preferences.
- Designs and submits a workflow.
- Manages the underlying infrastructure.
Operation
DILIGENT Portal is the Graphical User Interface through which the user is able to interact with the underlying infrastructure. Being such an intermediate, it must provide the users with a meaningful and friendly interface that will allow them to perform the desired actions.
The portal consists of the portal engine and a batch of about 25 distinct portlets. Portlets are divided in two main categories based on their design:
- The ones that directly interact with the user. These portlets are invoked every time the user submits a form to them.
- The ones that indirectly interact with the user. These portlets are used only for displaying the initial view and for passing the needed information to the corresponding GWT application. After this, the user interacts with DILIGENT through a GWT Servlet by applying asynchronous calls.
The lifecycle of a request is described bellow:
A user requests to see a web-page that contains a portlet. The portal engine decides whether or not to create a new instance of this class and it invokes the appropriate method(s). If needed, the portlet interacts with the DILIGENT infrastructure.
Each time a portlet needs to invoke a service, a string of actions must be performed. Firstly, it must retrieve user’s credential from the prtal engine. Then it has to query DIS (passing the credential) in order to receive the EPRs (End Point References) of this service’s running instances. Finally, it can call any of the received running instance EPRs in order to achieve the desirable result.
The outcome of the service invocation(s) is processed so as to construct the HTML in response to user’s request.
Figure 1: Portal in action
Whenever the user clicks an action, either the portlet itself or the GWT Servlet is invoked to serve this request. However, they both follow the aforementioned procedure for calling services.
Furthermore, sometimes intercommunication between portlets, servlets, or portlet-servlet is needed. This is achieved by passing information through the portal session from one component to another.
Read More
Detailed service design
