-
Notifications
You must be signed in to change notification settings - Fork 5
Architecture and Design
John Verhaeg edited this page Aug 21, 2014
·
41 revisions
- Design Goals
- Architectural Overview
- User Process
- Implementation Decisions
- GUI Design
- Under-the-Covers Architecture
- 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.
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.
- 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