Version 3 (modified by jri, 11 years ago) (diff)

DeepaMehta Core, DeepaMehta Plugins

Architecture Overview

DeepaMehta features an OSGi-based modular architecture that shares features with an service-oriented architecture (SOA). Each module's service can be consumed as an OSGi service. At the same time DeepaMehta can publish a module's service as an RESTful web service without requiring the module author to do extra coding.

In a distributed (client-server) setup the OSGi container runs at the server-side. Clients access the server via HTTP.

DeepaMehta Architecture

A central part of DeepaMehta is its plugin development framework. A DeepaMehta plugin is an OSGi bundle. However the DeepaMehta plugin developer must not know about OSGi intrinsics. Instead the developer can rely on facilities provided by the DeepaMehta Core.

DeepaMehta Core

The DeepaMehta Core is a dedicated OSGi bundle. Its responsibilities comprise:

  • Mediating between the DeepaMehta plugins and the underlying OSGi environment. The plugin developer must not know about OSGi intrinsics.
  • Providing the DeepaMehta Core Service.
    • Offers transactional database access to handle DeepaMehta's basic entities: topics, associations, topic types, association types.
    • Supports creating/retrieving/updating/deleting composite topic structures by levereging the type definitions.
  • Firing DeepaMehta Core Events.
  • 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.
  • 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.

DeepaMehta Plugins

A DeepaMehta plugin can have several parts:

  • A data model. The data model is a collection of domain-specific topic types and/or association types.
  • 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.
  • 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??.

Each of these parts is optional. Which parts a plugin provides depends on its purpose.

DeepaMehta Webclient

Storage Implementation

The default storage implementation embeds Neo4j. Neo4j is accessed via its native Java API.