Skip to content

Architecture and Design

John Verhaeg edited this page Aug 21, 2014 · 41 revisions

Table of Contents

Design Goals

  • The project's main goal is to create design-time tooling to create and manage transformations for any data format, resulting in transformation representations that can be used by one or more external transformation runtime engines, and specifically Fuse/Fuse Service Works.
  • All user features should be supported by an API.
  • All user features should be supported by an easy, intuitive, graphical tooling that equals or exceeds the capabilities and easy-of-use of our competitors.
  • UI controller logic should be decoupled from the view to allow support for different GUI platforms, such as Eclipse or a web-based solution.
  • An SPI should be provided to extend the supported metamodels and runtime engines.
  • Initial version must minimally support Java and XML-related metamodels (e.g., xml, xsd, dtd, etc.) representation specific to a supported target transformation runtime engine.
  • The high-level workflow should involve:
    • Import one or more data or model resources into an internal repository.
    • Encode imported data into metamodel-specific internal structure using a common internal meta-metamodel.
    • Build transformations using source and target models.
    • Translate transformations to external representation specific to a supported target transformation runtime engine.
    • Deploy/publish engine-specific transformation, along with applicable source and target models, to be used by runtime engine.
  • For any supported metamodel, models can be created, edited, imported & exported, deleted, and published to ModeShape or S-RAMP repositories.
  • Very large models must be supported without out-of-memory concerns.

Architectural Overview

Architectural Overview

User Process

User Process

Implementation Decisions

Use ModeShape as a model repository

  • Provides a common meta-metamodel for all supported metamodels that is very simple and allows for dynamic extensions to models.
  • Provides a framework for easily defining supported metamodels.
  • Provides an SPI for easily parsing data resources into models.
  • Provides built-in support for numerous metamodels, including Java, XSD, XML, DDL, etc.
  • Runs on top of Infinispan, and basically acts as a very sophisticated cache, allowing it to be used entirely in memory or configured to persist to one of several types of data stores, including files and databases.
  • Ensures access to repository contents are done in such a way as to not require much memory, regardless of the size of data.

Provide Eclipse-based GUI tooling

  • There is an ever-growing drive, from both customers and within Red Hat, to provide web-based tooling instead of the tooling historically provided via the Eclipse-based JBDS.
  • Both of our foreseeable targeted runtime engines, Fuse/Fuse Service Works and Teiid, will eventually be using web-based tooling. For Teiid, this will be provided via both OpenShift and Komodo.

However...

  • Our primary targeted runtime engine, Dozer, uses an Eclipse-based GUI
  • The majority of JBoss tooling is still provided via the JBDS platform
  • Our GUI skill set currently lies mainly with Eclipse SWT development

GUI Design

Launch prototype

Under-the-Covers Architecture

Under-the-Covers