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)
(Component features)
(32 intermediate revisions by 3 users not shown)
Line 4: Line 4:
 
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.
 
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:Sphinx-0.8.0-Architecture.png]]
  
 
==Dependencies==
 
==Dependencies==
Line 14: Line 14:
 
!Dependencies to other Eclipse components
 
!Dependencies to other Eclipse components
 
|-
 
|-
|rowspan="5"|Navigator & Editor Sockets
+
|rowspan="4"|Navigator & Editor Sockets
 
|Common Navigator Sockets
 
|Common Navigator Sockets
 
|
 
|
 +
* Sphinx Core
 
|-
 
|-
 
|Form Editor Sockets
 
|Form Editor Sockets
 
|
 
|
 +
* Sphinx Core
 
|-
 
|-
 
|Nebula Extensions for Form Editors
 
|Nebula Extensions for Form Editors
 
|
 
|
 
* Nebula
 
* Nebula
 +
* Sphinx Core
 
|-
 
|-
 
|GMF Editor Sockets
 
|GMF Editor Sockets
 
|
 
|
 
* GMF
 
* GMF
|-
+
* Sphinx Core
|Graphiti Editor Sockets
+
|
+
* Graphiti
+
 
|-
 
|-
 
| Validation Runtime Extensions
 
| Validation Runtime Extensions
Line 37: Line 37:
 
|
 
|
 
* EMF Validation
 
* EMF Validation
|-
+
* Sphinx Core
|rowspan="2"|Compare & Merge IDE Integration
+
|Compare Engine & Editor
+
|
+
* EMF Compare
+
|-
+
|Compare Team Support (Subversive SVN)
+
|
+
* Subversive SVN Team Provider
+
 
|-
 
|-
 
|M2x IDE Integration
 
|M2x IDE Integration
Line 52: Line 44:
 
* EMF MWE
 
* EMF MWE
 
* M2T Xpand
 
* M2T Xpand
 +
* Sphinx Core
 +
* Sphinx PDE Extensions
 +
|-
 +
| Metamodel Generation
 +
|
 +
|
 +
* Sphinx EMF Runtime Extensions
 +
* Sphinx Eclipse Platform Extensions
 +
|-
 +
|PDE Extensions
 +
|
 +
|
 +
* PDE
 +
* JDT
 +
* Eclipse Platform
 +
|-
 +
|rowspan="2"|XML Persistence Mapping
 +
|XML Persistence Mapping based EMF Serialization
 +
|
 +
* EMF
 +
* Orbit
 +
|-
 +
|XML Persistence Mapping & XSD Schema Generators
 +
|
 +
* Sphinx XML Persistence Mapping based EMF Serialization
 +
* Sphinx EMF Runtime Extensions
 +
* Sphinx Eclipse Platform Extensions
 
|-
 
|-
 
|rowspan="3"|Core
 
|rowspan="3"|Core
 
|Workspace Management
 
|Workspace Management
 
|
 
|
 +
* Sphinx EMF Runtime Extensions
 +
* Sphinx Eclipse Platform Extensions
 
|-
 
|-
 
|EMF Runtime Extensions
 
|EMF Runtime Extensions
Line 62: Line 83:
 
* EMF Edit
 
* EMF Edit
 
* EMF Transaction
 
* EMF Transaction
 +
* Sphinx Eclipse Platform Extensions
 
|-
 
|-
 
|Eclipse Platform Extensions
 
|Eclipse Platform Extensions
Line 70: Line 92:
  
 
==Feature structure==
 
==Feature structure==
The structure of Sphinx features is on the one hand based on the Sphinx architecture introduced above and on 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: container 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 structure of Sphinx features is on the one hand based on the Sphinx architecture introduced above and on 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 container, 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 [https://dev.eclipse.org/svnroot/modeling/org.eclipse.mdt.sphinx/trunk/docs/org.eclipse.sphinx.doc.design/SphinxFeatureMap.xls Feature Map].
+
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 [https://dev.eclipse.org/svnroot/modeling/org.eclipse.mdt.sphinx/trunk/docs/org.eclipse.sphinx.doc.design/SphinxFeatureMap.xls Feature Map].
  
===Container features===
+
===Root features===
Container features are the primary deliverables of Sphinx and can be used to pull all Sphinx components or examples at once. They can be individually retrieved from the Sphinx [http://eclipse.org/sphinx/download.php Update Site] or obtained as individual archives from the Sphinx [http://eclipse.org/sphinx/download.php Downloads]. The following container features are provided:
+
Root features are the primary deliverables of Sphinx and can be used to consume all or predefined subsets of Sphinx components or examples at once. They can be individually retrieved from the Sphinx [http://eclipse.org/sphinx/download.php Update Site] or obtained as individual archives from the Sphinx [http://eclipse.org/sphinx/download.php Downloads]. The following root features are provided:
  
 
{|cellpadding="5" cellspacing="0" border="1"
 
{|cellpadding="5" cellspacing="0" border="1"
Line 84: Line 106:
 
|org.eclipse.sphinx
 
|org.eclipse.sphinx
 
|Runtime (i.e., binaries without source code and documentation)
 
|Runtime (i.e., binaries without source code and documentation)
|All component features as per [[#Component features]]
+
|All component features as per [[#Component features]] except Nebula Extensions
 
|-
 
|-
 
|org.eclipse.sphinx.sdk
 
|org.eclipse.sphinx.sdk
 
|SDK including runtime, source code and documentation (but no examples)
 
|SDK including runtime, source code and documentation (but no examples)
|All component features as per [[#Component features]]
+
|All component features as per [[#Component features]] except Nebula Extensions
 +
|-
 +
|org.eclipse.sphinx.nebula
 +
|Nebula Extensions Runtime (i.e., binaries without source code and documentation)
 +
|Nebula-related component features as per [[#Component features]]
 +
|-
 +
|org.eclipse.sphinx.nebula.sdk
 +
|Nebula Extensions SDK including runtime, source code and documentation (but no examples)
 +
|Nebula-related component features as per [[#Component features]]
 
|-
 
|-
 
|org.eclipse.sphinx.examples
 
|org.eclipse.sphinx.examples
Line 111: Line 141:
 
!Feature
 
!Feature
 
|-
 
|-
|rowspan="5"|Navigator & Editor Sockets
+
|rowspan="4"|Navigator & Editor Sockets
 
|Common Navigator Sockets
 
|Common Navigator Sockets
 
|org.eclipse.sphinx.emf.navigators
 
|org.eclipse.sphinx.emf.navigators
Line 123: Line 153:
 
|GMF Editor Sockets
 
|GMF Editor Sockets
 
|org.eclipse.sphinx.gmf.editors
 
|org.eclipse.sphinx.gmf.editors
|-
 
|Graphiti Editor Sockets
 
|org.eclipse.sphinx.graphiti.editors
 
 
|-
 
|-
 
| Validation Runtime Extensions
 
| Validation Runtime Extensions
 
|
 
|
 
|org.eclipse.sphinx.emf.validation
 
|org.eclipse.sphinx.emf.validation
|-
 
|rowspan="2"|Compare & Merge IDE Integration
 
|Compare Engine & Editor
 
|org.eclipse.sphinx.emf.compare
 
|-
 
|Compare Team Support (Subversive SVN)
 
|org.eclipse.sphinx.emf.compare.team.subversive
 
 
|-
 
|-
 
|M2x IDE Integration
 
|M2x IDE Integration
 
|Xtend/Xpand IDE Integration
 
|Xtend/Xpand IDE Integration
 
|org.eclipse.sphinx.xtendxpand
 
|org.eclipse.sphinx.xtendxpand
 +
|-
 +
| Metamodel Generation
 +
|
 +
|org.eclipse.sphinx.emf.metamodelgen
 +
|-
 +
|PDE Extensions
 +
|
 +
|org.eclipse.sphinx.pde
 +
|-
 +
|rowspan="2"|XML Persistence Mapping
 +
|XML Persistence Mapping based EMF Serialization
 +
|org.eclipse.sphinx.emf.serialization
 +
|-
 +
|XML Persistence Mapping & XSD Schema Generators
 +
|org.eclipse.sphinx.emf.serialization.generators
 
|-
 
|-
 
|rowspan="3"|Core
 
|rowspan="3"|Core
Line 148: Line 183:
 
|EMF Runtime Extensions
 
|EMF Runtime Extensions
 
|-
 
|-
|Eclipse Platform Extensions
+
|Eclipse Platform Extensions
 
|}
 
|}
  
Line 178: Line 213:
 
|org.eclipse.sphinx.examples.metamodels.hummingbird
 
|org.eclipse.sphinx.examples.metamodels.hummingbird
 
|
 
|
* Hummingbird metamodels and IDE integration
+
* Hummingbird metamodels
 +
* Hummingbird IDE integration
 +
* Hummingbird metamodel generation tools
 
|-
 
|-
 
|org.eclipse.sphinx.examples.metamodels.uml2
 
|org.eclipse.sphinx.examples.metamodels.uml2

Revision as of 06:50, 30 May 2014

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.

Sphinx-0.8.0-Architecture.png

Dependencies

Sphinx components may have dependencies to other Sphinx components and/or to other Eclipse (modeling) components. The dependencies to other Sphinx components are depicted in the architecture diagram above (upper components depend on lower components). The table below lists the dependencies to other Eclipse components. For the sake of a better overview, only directly required Eclipse components are listed.

Top-level service Sub services Dependencies to other Eclipse components
Navigator & Editor Sockets Common Navigator Sockets
  • Sphinx Core
Form Editor Sockets
  • Sphinx Core
Nebula Extensions for Form Editors
  • Nebula
  • Sphinx Core
GMF Editor Sockets
  • GMF
  • Sphinx Core
Validation Runtime Extensions
  • EMF Validation
  • Sphinx Core
M2x IDE Integration Xtend/Xpand IDE Integration
  • EMF MWE
  • M2T Xpand
  • Sphinx Core
  • Sphinx PDE Extensions
Metamodel Generation
  • Sphinx EMF Runtime Extensions
  • Sphinx Eclipse Platform Extensions
PDE Extensions
  • PDE
  • JDT
  • Eclipse Platform
XML Persistence Mapping XML Persistence Mapping based EMF Serialization
  • EMF
  • Orbit
XML Persistence Mapping & XSD Schema Generators
  • Sphinx XML Persistence Mapping based EMF Serialization
  • Sphinx EMF Runtime Extensions
  • Sphinx Eclipse Platform Extensions
Core Workspace Management
  • Sphinx EMF Runtime Extensions
  • Sphinx Eclipse Platform Extensions
EMF Runtime Extensions
  • EMF
  • EMF Edit
  • EMF Transaction
  • Sphinx Eclipse Platform Extensions
Eclipse Platform Extensions
  • Eclipse Platform
  • Orbit

Feature structure

The structure of Sphinx features is on the one hand based on the Sphinx architecture introduced above and on 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 consume all or predefined subsets of Sphinx components or examples at once. They can be individually retrieved from the Sphinx Update Site or obtained as individual archives from the Sphinx Downloads. The following root features are provided:

Feature Description Included features
org.eclipse.sphinx Runtime (i.e., binaries without source code and documentation) All component features as per #Component features except Nebula Extensions
org.eclipse.sphinx.sdk SDK including runtime, source code and documentation (but no examples) All component features as per #Component features except Nebula Extensions
org.eclipse.sphinx.nebula Nebula Extensions Runtime (i.e., binaries without source code and documentation) Nebula-related component features as per #Component features
org.eclipse.sphinx.nebula.sdk Nebula Extensions SDK including runtime, source code and documentation (but no examples) Nebula-related component features as per #Component features
org.eclipse.sphinx.examples Examples (with source code) All example features as per #Example features
org.eclipse.sphinx.testutils Test utilities for JUnit-based integration tests running against a predefined reference workspace (with source code)
org.eclipse.sphinx.thirdparty Required third-party components (selected Orbit plug-ins)

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 Feature
Navigator & Editor Sockets Common Navigator Sockets org.eclipse.sphinx.emf.navigators
Form Editor Sockets org.eclipse.sphinx.emf.editors.forms
Nebula Extensions for Form Editors org.eclipse.sphinx.emf.editors.forms.nebula
GMF Editor Sockets org.eclipse.sphinx.gmf.editors
Validation Runtime Extensions org.eclipse.sphinx.emf.validation
M2x IDE Integration Xtend/Xpand IDE Integration org.eclipse.sphinx.xtendxpand
Metamodel Generation org.eclipse.sphinx.emf.metamodelgen
PDE Extensions org.eclipse.sphinx.pde
XML Persistence Mapping XML Persistence Mapping based EMF Serialization org.eclipse.sphinx.emf.serialization
XML Persistence Mapping & XSD Schema Generators org.eclipse.sphinx.emf.serialization.generators
Core Workspace Management org.eclipse.sphinx.core
EMF Runtime Extensions
Eclipse Platform Extensions

Example features

Example features are auxiliary deliverables of Sphinx. They contain sets of example plug-ins demonstrating how adopters can use Sphinx capabilities and services in their applications. As such they are an important complement of Sphinx documentation (i.e., Sphinx Developer Guide, etc.). In addition to that, adopters may even want to include some of the examples features in their applications as is. The Sphinx Model Explorer or UML2 IDE Integration are typical candidates for such kind of features. The following example features are available:

Feature Description
org.eclipse.sphinx.examples.core
  • Sphinx Perspective
  • Generic model manipulation actions
org.eclipse.sphinx.examples.validation
  • Context menu contributions and actions for invoking validation in various ways
org.eclipse.sphinx.examples.xtendxpand
  • Model transformation and code generation context menu contributions
  • Preferences for Xpand outlets
org.eclipse.sphinx.examples.navigators
  • Generic Model Explorer view
org.eclipse.sphinx.examples.metamodels.hummingbird
  • Hummingbird metamodels
  • Hummingbird IDE integration
  • Hummingbird metamodel generation tools
org.eclipse.sphinx.examples.metamodels.uml2
  • UML2 IDE integration
org.eclipse.sphinx.examples.metamodels.library
  • IDE integration of EMF Extended Library example

Back to the top