What is Aragon Framework? The Aragon Framework was created to provide a simple (and also complex) framework for developing SWT (Standard Widget Toolkit) based desktop applications. The idea was to provide a basic functionality toolkit containing all the features needed for desktop application development in a highly customisable way. This is how it ended up: The Aragon framework actually has two main parts: the Aragon Toolkit and the Actual Framework. The Toolkit is asctually a huge set of utility classes, data access and modelling frameworks, Inversion of Control component containers, and lots of other stuff whitch provides the generic building blocks of the Actual Framework. The Aragon is a component based framework whitch splits the several aplication domains into the following types of components:
- Service – Thread safe singleton component providing concentrated functionality without a graphical part.
- Module – plugable atomic application part, grouping several graphical and logical components. (a set of screens implementing complex functionality)
- Component – atomic garphical aplication element grouping a screen together with its business logic
- ShellComponent – a component controlling the lifecycle of the SWT screens (Shell's) and hiding the complexity of working with SWT Shell's
- BusinessLogicComponent – atomic business logic implementation based on state machine pattern providing components to decouple the logic from GUI representation using the SWTConnector and DataManipulation framework from Aragon Toolkit.
From the Aragon point of view all the applications can be constructed from the above parts. A detailed description of the above will follow…soon. The Aragon comes with several bounded in services. The image below presents the overall stucture of the framework.
The Kernel is the main component of the framework witch is started first and creates the main component container (Aragon container) into witch all the bounded in services are started in. The services:
- Update service – Service implementing the application and module update functionality. This works with a defined update repository structure using basic user access right management.
- Module manager Service – Implements the module management functionality taking care of inspecting and instantiating installed modules. This creates an internal Component Container, the container where all the modules will be created. This module container is linked to the main Kernel container as child, to provide accesspoint for the modules to the rest of the application.
- Help Service – Implementation of the language dependent HelpSystem based on html pages defined by the modules. The Service collects all HelpNodes from all the created modules and if HelpScreen is show will provide access to all help nodes and associated html pages.
- Resource Manager Service – Implementation of management of the resources of an aplication like images, fonts, colors witch in SWT are critical resources and have to be manged carefully. This service uses a cache-ing mechanism to share the resources between the several aplication parts. This service also provides internationalization support.
- SWT Toolkit Service – SWT common functionality implementations, like MessageDialogs, Shell creation, and others.
- Database Service – Implementation of a complex database access API, conatining managed JDBC connection pool, data sources, compliance with Aragon data persistence framework, management of the module-assigned databases using version-ing functionality.
- Guardian Service – User management and access rights module. Provides a simple API of implementing the user access control in the different parts of the application. The access management is based on the following idea: The modules can define a set of logical right keys witch can be grouped in a hierachical data structure. The right keys can be assigned to any of the graphical components of the application using the SWTConnector framework. After user log in, every right key will receive an access value (one of the following: FULL_ACCESS , READ_ONLY_ACCESS, NO_ACCESS) witch will be aplied to the graphical componet to witch the key is assigned. Detailed description of how the Guardian Service works, will follow…
- Profile Manager Service – Management of the different configuration sets (module and data source configuration sets ) providing functionality of switching between different available profiles.
- Configuration Manager Service – Utility service implementing simple API to read and change configuration files (managed by the Profile Manager Service) from application modules
- Business Logic Context Service – A common context for the Business Logic components registered in the system, providing functionality to look up a BL components based on their identifying name and send application events to a BL components.
- Splash Service – Generic API for implementing custom SplashScreen for applications. The framework comes with a basic implementation of this service witch can be replaced by a custom implementation.
- License Manager Service – Implementation of a basic license management functionality for commercial modules implemented by third party using the Aragon Framework. (The licensing of the Aragon Framework permits implementation, running and distribution of commercial modules for the Aragon Framework. The binaries of the framework being licensed under GPL v.2.0, have to be distributed separately as free components and not as parts of the commercial application. For more information see the readme.txt file distributed with framework package).
Taking a look at the above structure You may think that the framework is kind of over-featured when used to make small application. Yes, You may be right there, but the whole idea was to make a FWK complex enough to support developing of more complex applications working with a complex data structures and also make it simple enough to develop on. Now that the FWK has reached it 0.1.3 (after almost 3 years of development) version I might consider it mature enough to stop implementing new features and concentrate on optimising and docummenting every portion of it. Unfortunately for the moment there is no comprehensive documentation about the FWK and its features, only the JAVA-DOC, witch is not enough to understand the whole concept behind Aragon, so I decided to start an online documentation campaign to provide help for those who are interested in this big bunch of code. Even if You are not interested in the whole FWK, You may find interesting stuff inthere. So until the next Doc part, I wish U all the best in the JAVA world. If you have any questions related to the things presented above or anything related to ARAGON please do not hesitate to contact me. Norbert Rakosi firstname.lastname@example.org