Defines the interfaces that other programs can use to "plug themselves in" to JAS.
Currently we support two different types of plugins:
The first type of plugin normally extends class ExtensionPlugin, and the latter Plugin (should really be called JobPlugin, but for historical reasons just called Plugin). As an alternative to extending Plugin or ExtensionPlugin plugins can instead just implement IPlugin or IExtensionPlugin respectively.
Plugins communicate with the application they are embedded in using a PluginContext. This context is installed after the plugin's constructor is called but before the init() method is called, so most initialization should normally be done in the init method rather than the constructor.
Actions currently supported by both types of plugin include:
In addition ExtensionPlugins can install new Data Interface Modules (DIMS) and Job plugins can receive notification of changes in run state and get a copy of the current event.