The following is an overview of how the requirements are met with documentation following in later sections:
RQ-CORE-PLUGIN is satisifed by:
The IRIS Platform is a collection of services, where sub-sets of services are encapsulated as plugins. A plugin is a set of functionality in the system that is either present or not present at startup. It is possible to run the Platform system with a pre-determined set of plugins. It is also possible to run a plugin in another IRIS distribution by copying it to the iris/plugins folder.
Using Spring to expose IRIS services as Spring Beans. An IRIS service is some encapsulation for providing utility to the rest of the system. IRIS services range from something as simple as parsing an email address, to a viewer host that hosts UIs for plugins.
Spring is also used to create a plugin framework. Spring is flexible enough to allow dynamic configurations to be loaded and also for plugins to specify custom class loaders. IRIS uses Spring with some small additions on top (documented in this chapter).
IRIS exposes a viewer host and other such services through Spring that allow plugins to hook in functionality. For example, IViewerHost allows plugins to add UI. In this way IRIS can function without those plugins being present and a minimal or baseline system can be created.
It is possible to add plugins to an IRIS distribution by dropping them in the iris/plugins directory and restartting IRIS. IRIS also has a rudimentory versioning system to detect when dependencies are not met.
RQ-CORE-SINGLE and RQ-CORE-SINGLE-MACHINE is a given for the IRIS system. There are no concflicts to prevent this (like 2 different services usign the same tcp port). IRIS also assumes a single-user login at startup.