Apromore is using a Plug-in Framework to keep its architecture as modular as possible and to allow for flexible extension of its core features. The Plug-in Framework is based on some basic principles, some APIs and the industry standard OSGi. To use OSGi in the most convenient way, we are currently using the following technologies/tools under the "hood":
- Apache Felix Maven Bundle Plugin for build management and automatically adding OSGi meta-data
- Eclipse Gemini Blueprint/OSGi Services to dynamically install and uninstall Plug-ins at run time
- Eclipse Virgo (formerly Spring DM Server) as underlying application server
If you don't know anything about OSGi, DON'T PANIC! Development of a Plugin requires just little knowledge of the underlying technologies.
As described on the official website Apromore is layered into the three tiers: Presentation, Logic, Data. The Plug-in Framework sits directly under the Repository Manager and provides the "Plug-in" capabilities for the Toolbox and the Canonizer.
The following information should enable your to develop your own plug-in against one of the pre-defined plug-in interfaces of Apromore. If your want to know more about the plug-in framework of Apromore, add a new plug-in interface to Apromore or struggle with adding a new plug-in, you may want to readChapter 4 contains an in-depth description of Apromore's plug-in framework. Especially Section 4.3.2 is a MUST READ!
So before starting plugin development you should do the following:
- Read about out Code Quality and Code Style standards
- Install all tools required for Apromore Development
- Check out the Apromore "trunk" from our version control system
Now try to build Apromore as described in the included README file. Check if Eclipse Virgo is running after calling "ant copy-virgo start-virgo":
If Apromore does not start, then try to start Eclipse Virgo manually by using the start script located in the 'bin' directory of Eclipse Virgo:
If it still does not work, there may be more information to debug the issue located in the 'log' directory of Eclipse Virgo:
Choosing a Plug-in API
Next you need to decide against what kind of Plug-in API you want to develop. Currently there are the following Plug-in APIs available:
- Generic Plug-in API
- Canoniser Plug-in API
- Deployment Plug-in API
- Search Plug-in API
- Annotation Processing Plug-in API
Plug-in development takes place in the 'Apromore-Plugins' directory of Apromore. For an up-to-date list of Plug-in APIs you should always check out the available Maven sub-modules in this directory. If there is not yet a Plug-in API available that fulfills your need, then you need to develop a new Plug-in API together with our core development team.
- Plugin API JavaDoc (coming soon)
- Canoniser API JavaDoc (coming soon)
External Tutorials / FAQs
Maven Bundle Plug-in