Changes between Version 4 and Version 5 of ArchitectureOverview


Ignore:
Timestamp:
08.05.2013 02:07:05 (10 years ago)
Author:
jri
Comment:

DeepaMehta Webclient

Legend:

Unmodified
Added
Removed
Modified
  • ArchitectureOverview

    v4 v5  
    2929* 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. 
    3030 
    31 * 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. 
     31* The low-level //Storage Layer// access methods are specified in a DB-agnostic service provider interface. By implementing this interface developers can deploy any database system as the DeepaMehta storage. 
    3232 
    3333The DeepaMehta Core is an OSGi bundle. 
    3434 
    3535== DeepaMehta Plugins == 
     36 
     37DeepaMehta can be extended with domain-specific data models, application logic and presentation logic by the means of plugins. In the diagram above you can see that a DeepaMehta plugin (colored green) can have both, a server-side portion and a client-side portion. 
    3638 
    3739A DeepaMehta plugin can have several parts: 
     
    4143* **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. 
    4244 
    43 * **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?. 
     45* **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. 
    4446 
    45 Each of these parts is optional. Which parts a plugin provides depends on its purpose. 
     47A DeepaMehta plugin is an OSGi bundle. 
    4648 
    4749== DeepaMehta Webclient == 
    4850 
     51The DeepaMehta Webclient is a HTML5/JavaScript/AJAX-based single-page web application. It features the known graph-based DeepaMehta GUI along with the detail panel and main toolbar. In particular it provides the standard topicmap renders and detail panel renderers, most notably the HTML5 Canvas-based default topicmap renderer. The HTML5 History API is used to fight the problems inherent to single-page AJAX applications: a) each application resource get an unique URL which appears in the browser's address bar, and b) the browser's back and forward buttons work as usual. 
     52 
     53Technically the DeepaMehta Webclient is itself a DeepaMehta plugin that consist mainly of web resources (scripts, images, CSS). 
     54 
     55What is special about the DeepaMehta Webclient plugin is that it establishes a client-side application framework along with an event mechanism. This enables other DeepaMehta plugins to hook-in custom code in order to extend the DeepaMehta Webclient. Thus DeepaMehta plugins can e.g. provide custom renderers and widgets, add controls to the toolbar, or add commands to the context menus and the detail panel. Furthermore a DeepaMehta plugin can provide a client-side public (JavaScript) API, callable by other DeepaMehta plugins. 
     56 
    4957== Storage Implementation == 
    5058 
    51 The default storage implementation embeds Neo4j. Neo4j is accessed via its native Java API. 
     59The standard storage implementation is based on Neo4j and Apache Lucene. Neo4j and Lucene are embedded and accessed via the respective Java API.