Application Manager
What is it?
It is a bundle which offers a GUI to perform management operations and to interact with RepositoryManager, TagManagerBackEnd and TagManagerNode. It follows a MVC pattern, so it can be easily extended.
Design
Connection with other bundles
ApplicationManager makes use of the services offered by the following bundles:
- Local bundles:
AwarenessApplicationManager: Necessary to send and receive information about the local applications.
AwarenessManager: Necessary to send and receive information about the local rules.
TagManagerNode: Necessary to manage the private tags.
OntologyManager: Necessary to assist the user in the application adaptation process using ontologies (this feature is not available in the current version, but ApplicationManager has been prepared to be easily extended).
- Remote bundles:
UserManager: Necessary to authenticate the users in the logging in process.
CommunityManager: Necessary to retrieve information about the communities joined by the user.
TagManagerBackEnd: Necessary to manage the public and community tags.
RepositoryManager: Necessary to share and retrieve applications with the rest of the users.
The following diagram shows graphically the relationship between the ApplicationManager and the rest of components through its interfaces:
Class diagram
ApplicationManager implements a MVC pattern. Therefore the class definition is based on the structural organization defined for this pattern which we can summarized:
Controller: It is represented by the class ApplicationManagerController, whose job is to contain the interactions of the user interface components and to interact with other "business logic" classes. It implements a singleton design pattern. It needs basically to perform two functions:
- To keep track of references to user interface components.
- To provide a set of methods that other components can directly call in their event handler.
Model: It is represented by the class ApplicationManagerModel, which contains the "business logic". Taking into account the bundle nature of ApplicationManager, the "business logic" in this case is simpler, summarizing its functions in:
- To manage the references to the rest of the bundles.
- To work as an "stub" to make use of the services provided by those.
- To take care of the session data, i.e.: the user identifier.
View: It is represented by several classes whose task consist of presenting the information to the user. This includes all the classes which represent the windows (i.e.: MainWindow, LoginWindow, etc.) and all the necessary classes that extend some of the graphical components (i.e.: TreeRenderer, TagListCellRenderer, etc.)
The following diagram shows the most important classes (click to zoom):
Current functionalities:
My applications:
- It allows the user to browse his/her applications, see the information about them and share them in the repository.
- It also allows the user to manage tags: it is possible to create and delete tags in a different scope (private, public or only for some communities).
Repository:
- It allows the user to browse the repository, see the information about the applications and retrieve them.
New: All the tags whose scope is visible for the user (public ones or the communities ones which belong to) are now displayed while browsing.
Search:
- It allows the user to perform queries (text-based search) to look for applications into the repository by different criteria:
- Any
- Description
- Tags
- Type
- It allows the user to perform queries (text-based search) to look for applications into the repository by different criteria:
Search by similarity
- It allows the user to search for similar applications to one he has already in his local space.
User interaction
In this section we will explain some of the main functionalities from the point of view of the user by showing different screenshots. We will focus on 3 actions: "tagging and sharing an application", "locating an application" and "retrieving and adapting and application from the repository".
Tagging and sharing
Once the user has successfully logged in the system, he can browse the tree to see all the information related to his applications in the tab "My applications" as is shown in the next figure.
In order to distinguish quickly between a focus and a nimbus application, the applications are presented with a different icon (cloud for nimbus, glasses for focus) depending on the type.
He can manage the tags associated to every application, deleting them or adding new ones. To make the GUI more intuitive, they are represented with a different icon depending on the scope as is shown in the previous figure. There is also a tool tip for every of them, where the user can see the scope and the community which belongs to in the case of a community tag.
When the user decides to add a tag, a new window where the user can customize the scope appears, as is shown in the next figure.
When the user desires to share an application by pressing the button "Share",another window is displayed. Here he can select the communities where the application is going to be visible, the rules he wants to share, change the description, etc. The next figure shows an screenshot with that window.
Locating an application in the repository
There are three different ways to locate an application in the repository. The first one is offered in the tab "Repository", where the user can browse the repository and see the main information (description, associated visible tags, etc) of the application which under within his scope. The next figure shows the interaction through this tab.
The second one is by performing a query, clicking on the tab "Search". Here the user has to select the criteria (any, by description, by tags or by type), type a query (in natural language, using keywords, etc.) and press the button "Go!". Then the results appear in the list below sorted by score, and the user can see the information related to that results by clicking on them. The next figure shows an screenshot of the interaction through this tab.
The last option to locate an application is offered in the tab "Search by similarity". Here the user selects one of his applications, and similar applications sorted by similarity are loaded on the list on the right. Selecting one of these applications, the user can see the information related to it. The next figure shows the interaction through this tab.
Retrieving and adapting an application from the repository
Once the user has located an application by one of the several ways explained in and he decides to get it, a new window where the user can adapt the application is displayed. He can change the description and choose the rules he wants to retrieve. The next figure shows an screenshot with the interaction through this window after having performed a search by similarity.
Other functionalities:
Other "common" functionalities like login/logout process and access to remote help through the menu bar have been added:
Ex.: User login/logout:
Ex.: User viewing the online help (currently stored at: http://astra.perseum.com/help/am-help.html):
New functionalities:
- Added rule description when sharing/retrieving a rule from the repository.
- Different threads are created now to perform time-consuming tasks (loading the tree hierarchy for remote and local applications).
+Info, contact, etc.:
Javadoc at: http://basar.idi.ntnu.no/svn/astra/WP3/Y3/SOA.2.0/ApplicationManager/doc/
GUI prototype at: http://basar.idi.ntnu.no/svn/astra/WP3/Y3/SOA.2.0/ApplicationManager/doc/prototype/Astra-Application-Manager-GUI-Prototype.pdf
Ontologies proposal at: http://basar.idi.ntnu.no/svn/astra/WP3/Y3/SOA.2.0/ApplicationManager/doc/ontologies-proposal/ontology-manager-extension-proposal.pdf
Search-engine proposal at: http://basar.idi.ntnu.no/svn/astra/WP3/Y3/SOA.2.0/ApplicationManager/doc/search-engine-proposal/Search_Engine_Proposal.pdf
