Provide ability to plug-in web functionality to WoOF. An example of a module would be an accounting module that allows an input to invoice and take payment.
To enable module re-use, the following would need to be configured (and be the interface for the module):
- template to inherit from to provide consistant "look and feel" of rest of website. It is expected that the module will define the sections that are required in the template for it to override.
- inputs with their parameter types that may be re-used by WoOF
- object types that the module depends on
- outputs that the module requires to be handled
- list of entities that must be registered with an EntityManager (allows managing persistent state). This is both at compile time for them to potentially be enriched and at runtime to registered with the EntityManager.
- possibility for flagging governance necessary for configuration (such as governance to provide transaction management)
- role based security to pages. This will likely need indirection to match module role to actual security roles
Thread Injection will continue to be configured for the entire WoOF application as the module should just provide encapsulation of additional pre-packaged and organised tasks, similar to a SectionSource (except that can provide templates and store persistent state).