Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Sphinx/architecture"

(Dependencies)
(Architecture)
Line 3: Line 3:
 
= Architecture =
 
= Architecture =
  
The following picture depicts the Sphinx architecture. It is constituted of 3 horizontal layers that form together the Sphinx core and several vertical slices on top of that. The core components provide essential modeling platform services that are commonly required and used by all other Sphinx components. They depend on a minimal set of existing Eclipse components. The vertical components provide individual modeling platform services that are independent of each other and typically based on specific additional exisiting Eclipse components.
+
The following picture depicts the Sphinx architecture. It is constituted of 3 horizontal layers that form together the Sphinx core and several vertical slices on top of that. The core components provide essential modeling platform services that are commonly required and used by all other Sphinx components. They depend on a minimal set of other Eclipse components. The vertical components provide individual modeling platform services that are independent of each other and typically based on specific additional exisiting Eclipse components.
  
 
[[Image:SphinxArchitecture.png]]
 
[[Image:SphinxArchitecture.png]]

Revision as of 16:26, 29 June 2011

Sphinx provides a relatively large set of services and uses or extends a wide set of other Eclipse (modeling) components. Adopters may not need all of these services or required Eclipse components in their applications. Sometimes they even might be constraint to not using some of them. Sphinx is therefore based on an architecture that makes the dependencies wrt required Eclipse components transparent and keeps them separated as much as possible. This architecture is at the same time the basis for the structure of the features in which Sphinx plug-ins are bundled up and delivered. The resulting features thus have well-defined and limited dependencies to other Eclipse components and make it happen that individual parts of Sphinx can be used independently of each other.

Architecture

The following picture depicts the Sphinx architecture. It is constituted of 3 horizontal layers that form together the Sphinx core and several vertical slices on top of that. The core components provide essential modeling platform services that are commonly required and used by all other Sphinx components. They depend on a minimal set of other Eclipse components. The vertical components provide individual modeling platform services that are independent of each other and typically based on specific additional exisiting Eclipse components.

SphinxArchitecture.png

Dependencies

The following table lists the dependencies of Sphinx components wrt other Eclipse (modeling) components. For the sake of a better overview, only directly required Eclipse components are listed (i.e., indirectly required Eclipse components as well as required other Sphinx components are intentionally omitted).

Top-level service Sub services Dependencies to other Eclipse components
Navigator & Editor Sockets Common Navigator Sockets
Form Editor Sockets
GMF Editor Sockets
  • GMF
Graphiti Editor Sockets
  • Graphiti
Validation Runtime Extensions
  • EMF Validation
Compare & Merge Integration Compare Engine & Editor
  • EMF Compare
Subversive SVN Team Support
  • Subversive SVN Team Provider
M2x Integration Xtend/Xpand Integration
  • EMF MWE
  • M2T Xpand
Core Workspace Management
EMF Runtime Extensions
  • EMF
  • EMF Edit
  • EMF Transaction
Eclipse Platform Extensions
  • Eclipse Platform
  • Orbit

Feature Structure

The structure of Sphinx features is one the hand based on the Sphinx architecture introduced above and one the other hand designed to separate the different types of deliverables, i.e., runtime, SDK, examples, etc. It is hierarchically organized and decomposed into three principal kinds of features: root features, component features, and example features. Adopters can freely choose which of these feature types they want to refer to and thus have full control over the Sphinx components and deliverables that get included in their applications.

The sections below summarize the root, component, and example features that Sphinx provides and briefly describe their content and relation to the Sphinx architecture. A complete specification of the Sphinx features including detailed information about included features and plug-ins can be found in the Sphinx Feature Map.

Root features

Root features are the primary deliverables of Sphinx and can be used to pull all Sphinx components at once. They are included in both Sphinx Update Site and Sphinx Downloads. The following root features are provided:

Feature Description Included features
org.eclipse.sphinx Runtime
(i.e., binaries without sources and documentation)
All component runtime features as per #Component features
org.eclipse.sphinx.sdk Runtime + sources + documentation
(but no examples)
All component SDK features as per #Component features
org.eclipse.sphinx.examples Examples
(including sources)
All example features as per #Example features
org.eclipse.sphinx.testutils Test utilities
(for JUnit-based unit and integration tests)

Component features

Component features enable adopters to select and include individual Sphinx components in their applications. They are essentially a one-to-one representation of the architecture detailed above. Their IDs always include the name of the principal required Eclipse component that they are based on or extend. If necessary, they also indicate the name of the Sphinx component that they represent. The table below lists the component features that Sphinx offers for each of its components.

Top-level service Sub services Features
Navigator & Editor Sockets Common Navigator Sockets
  • org.eclipse.sphinx.emf.navigators
  • org.eclipse.sphinx.emf.navigators.sdk
Form Editor Sockets
  • org.eclipse.sphinx.emf.editors.forms
  • org.eclipse.sphinx.emf.editors.forms.sdk
GMF Editor Sockets
  • org.eclipse.sphinx.gmf.editors
  • org.eclipse.sphinx.gmf.editors.sdk
Graphiti Editor Sockets
  • org.eclipse.sphinx.graphiti.editors
  • org.eclipse.sphinx.graphiti.editors.sdk
Validation Runtime Extensions
  • org.eclipse.sphinx.emf.validation
  • org.eclipse.sphinx.emf.validation.sdk
Compare & Merge Integration Compare & Merge Engine & Editor
  • org.eclipse.sphinx.emf.compare
  • org.eclipse.sphinx.emf.compare.sdk
Subversive Team Support
  • org.eclipse.sphinx.emf.compare.team.subversive
  • org.eclipse.sphinx.emf.compare.team.subversive.sdk
M2x Integration Xtend/Xpand Integration
  • org.eclipse.sphinx.xtendxpand
  • org.eclipse.sphinx.xtendxpand.sdk
Core Workspace Management
  • org.eclipse.sphinx.core
  • org.eclipse.sphinx.core.sdk
EMF Runtime Extensions
Eclipse Platform Extensions

Example features

Feature Description
org.eclipse.sphinx.examples.core
  • Sphinx Perspective
  • Generic Sphinx Core examples
org.eclipse.sphinx.examples.validation
  • Generic Sphinx Validation examples
org.eclipse.sphinx.examples.xtendxpand
  • Generic Xtend/Xpand examples
org.eclipse.sphinx.examples.navigators
  • Sphinx Model Explorer
  • Generic Common Navigator examples
org.eclipse.sphinx.examples.metamodels.hummingbird
  • Hummingbird metamodels and examples
org.eclipse.sphinx.examples.metamodels.uml2
  • UML2 IDE integration
org.eclipse.sphinx.examples.metamodels.library
  • Library IDE integration

Back to the top