OpenWGA java modules
Many features of the OpenWGA runtime are implemented as so called "OpenWGA Java Modules". Such a module is any Java functionality that is known to the OpenWGA runtime to serve a special, predefined purpose, and where OpenWGA knows how to use it. For example: All types of content store databases that OpenWGA supports are Java classes which are known to the OpenWGA runtime as Java modules of type "Content Store".
To keep track of the functionalities that are known OpenWGA has a module registry. This is some kind of internal database which has single entries for every known module, so called module definitions. The module definition contains all information that OpenWGA needs in order to use the module, like:
- The Java class which implements the module
- The type of the module, identifying what it is good for
- The configuration options which a module accepts
- A title and a description
- Additional properties which are dependent on the module type, helping OpenWGA to use the module correctly
A lot of this data is used by the OpenWGA admin client. When you create configurations there, like a new database server, then you get to choose a lot of configuration options, like what type of database server you are to configure, then eventually what the host name of this server is plus some other options that may depend on the type of server. What the admin client does to serve those options is: It queries the module registry for all module definitions of type "database server" and offers them to you, identified by their title. When you choose a server type - actually the module definition of a server type - then it asks that module definition what options are available and necessary for that type. These option definitions again are offered to you by their title. They also determine valid values, like strings, numbers, sometimes even a choice of predefined values.
The big advantage of this architecture is that it is completely open. While the OpenWGA core already brings a lot of modules with it any OpenWGA plugin could add more modules of any type to the installation. These additional modules are loaded the same way into the runtime as the predefined ones, therefor having the same capabilities.
Among types of modules that can be registered are the following:
- Content Store and Data Source types
- Database servers
- Authentication sources
- WebTML encoders
- WebTML elements
- Language choosing behaviours
- Request filters
- Additions to the standard HTML head content of published pages
- Scheduler task types
- Website access loggers
- Configuration options of the OpenWGA runtime