Qcadoo application plugin is a ordinary Maven project.
Project structure
Please find attached file as a base of the new plugin.
- src/main/java/pluginpackage/
- src/main/resources/pluginidentifier/locales/pluginidentifier_en.properties
- src/main/resources/pluginidentifier/model/*.xml
- src/main/resources/pluginidentifier/view/*.xml
- src/main/resources/pluginidentifier/public/css/
- src/main/resources/pluginidentifier/public/img/
- src/main/resources/pluginidentifier/public/js/
- src/main/resources/WEB-INF/jsp/pluginidentifier/
- src/main/resources/root-context.xml
- src/main/resources/web-context.xml
- src/main/resources/qcadoo-plugin.xml
- pom.xml
Plugin inner structure
There is a plugin inner structure on the picture below.
Plugin state flow
There is a plugin state flow on the picture below.
...
Download
- This operation download plugin jar file to the application tmp directory and create database record on the data in plugin descriptor with status state "temporary". After this operation jar views aren't active.
Install
- This operation move plugin jar file from the application tmp directory to the application context and change database record status state to the "enabled". After this operation server is restarted. When server starts up plugin jar file is deployed. After this operation jar views are active.
Disable
- This operation change database record status state to the "disabled". After this operation jar views aren't active.
Enable
- This operation change database record status state to the "enabled". After this operation jar views are active.
...
Update
- This operation check the plugin version, if its version is lower than in plugin jar file, operation can update plugin. After this check old plugin jar file and its deployed resources are removed from the application context. New plugin jar is downloaded to the application context and database record version is changed to this from plugin jar file. Plugin status state is exactly the same as before update. After this operation server is could be restarted. When server starts up plugin jar file is deployed. After deploy jar views are active if state is "enabled".