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":
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:
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:
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:
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.