17 | | * Defines a DB-agnostic service provider interface for the storage layer. By implementing this interface developers can adapt DeepaMehta to any database system. The DeepaMehta Standard Distribution comes with an Neo4j-based implementation. |
| 23 | * The //Migration Manager// ensures the database model and content is compatible with the installed plugins. It does so by running database migrations when a plugin is installed or updated. |
| 24 | |
| 25 | * Defining a DB-agnostic low-level service provider interface for the storage layer. By implementing this interface developers can deploy any database system as the DeepaMehta storage. |
| 26 | |
| 27 | == DeepaMehta Plugins == |
| 28 | |
| 29 | A DeepaMehta plugin can have several parts: |
| 30 | |
| 31 | * **A data model**. The data model is a collection of domain-specific topic types and/or association types. |
| 32 | |
| 33 | * **Server-side logic**. Server-side logic comes in form of a) event handlers, and/or b) service methods. Server-side logic is written in Java. |
| 34 | |
| 35 | * **Client-side logic**. Client-side logic runs inside the DeepaMehta Webclient. Client-side logic comes in form of a) event handlers, b) custom renderers, and/or c) public API methods. Client-side logic is written in JavaScript?. |
| 36 | |
| 37 | Each of these parts is optional. Which parts a plugin provides depends on its purpose. |
| 38 | |
| 39 | == DeepaMehta Webclient == |
| 40 | |
| 41 | == Storage Implementation == |
| 42 | |
| 43 | The default storage implementation embeds Neo4j. Neo4j is accessed via its native Java API. |