This page contains a few resources related to the Tigerstripe presentation at Eclipse Summit Europe'08.
The goal of the presentation at Eclipse Summit'08 is to provide a quick jump-start on Tigerstripe, what it is and how it can be used.
All examples that are used or mentioned in the presentation are available from our CVS Repository. See below to download it.
The presentation is structured in 2 parts:
- Quick project overview and highlight of Tigerstripe Workbench, the end-user integrated MDE environment. Various key concepts in Tigerstripe are introduced:
- The notion of Tigerstripe Model Projects that host models and can cross-reference other model projects, thus allowing to "componentize" a model the same way you would componentize software.
- The notion of Tigerstripe Modules, that are read-only, "zipped-up" versions of a model, similar to the notion of .jar for software in Java. (allowing here again for model componentization)
- The granularity at which the model is persisted in projects: 1 file per model artifact. This makes it very friendly to use with Source Control Systems and reduces the number of potential merge conflicts even when models are developed by large distributed team.
- Model scoping: because multiple artifacts will be generated from a single model, it is necessary to have a powerful scoping mechanism to only consider the sub-models that are relevant for code/content generation. For example, documentation should on be generated for model artifacts corresponding to public APIs, yet code must be generated for model artifacts corresponding to both internal and external APIs.
- Generation is driven by the model (class-level generation), but also by instantiations of model artifacts (Instance-based generation) allowing for example to generate test data in sync with the model.
- The ability to leverage Buckminster and Maven to facilitate simplified workspace resolution and continuous build.
- A walk-through customizing the Tigerstripe framework to address a specific real-life scenario:
- The model needs to be annotated for multiple purposes
- for Code generation (multiple targets)
- for internal (proprietary) documentation
- for external (partners and customers) documentation.
- The model is shared with partners and customers to allow them to use Model-Driven techniques to ease enterprise integration and value added-solutions.
- The platform should enforce conventions and rules defined to ensure the model is consistent even when developed across distributed teams.
- The model needs to be annotated for multiple purposes
Throughout the presentation we are using 3 Tigerstripe Model projects with cross references to illustrate how models can be componentized. We show how to build 2 annotations namespaces through .ecore and customize both the modeling palette and the model auditing rules to enforce conventions.
Slides can be downloaded from this link: Tigerstripe-EclipseSummit Nov08 4.zip.
All code presented (even briefly) during the presentation is available from our CVS repository through anonymous access.
CVS Anonymous Access
To access the sample project/code used during the presentation, make sure you set up anonymous access to the Tigerstripe section of Eclipse's CVS repository.
- Host: dev.eclipse.org
- Repository Path: /cvsroot/technology
- User: anonymous
- Password: <blank>
- Connection Type: pserver
All content relevant to this presentation is located in the org.eclipse.tigerstripe/samples/EclipseSummit08 directory.
The directory contains Tigerstripe Projects:
- base-defs: a Tigerstripe model that contains basic type definitions. It has been exported as a Tigerstripe Module in the presentation and directly referenced in the common-model (see below)
- common-model: a Tigerstripe model that contains "common" artifacts that are meant to be extended. In a real-size scenario, an Enterprise Model would be componentized with common definitions that make the "top level" inheritance tree, this is the intent of this simple model.
- Equipment-model: a Tigerstripe model that is an extension of the "common-model" to model a Router and its Ports. This project contains a class diagram, an instance diagram and a facet definition.
- ClassLevel-Generator: a Tigerstripe Class-Level Generator, that contains 2 rules. The first rule (global rule) creates a file that lists the content of the model. The second rule mimics the (simplistic) generation of Java classes for entities in the model.
- Buckminster Configuration: the files required to resolve the tutorial projects to an Eclipse workspace. These include the .cquery, .cspec, and .rmap, and ANT XML files.
The directory also contains Eclipse plugin that leverage Tigerstripe Extension Points to customize the Tigerstripe Framework:
- EclipseSummit08_annotations: the .ecore files, Java code and configuration files requires to define an Eclipse plugin that leverage the Tigerstripe ext. points used during the presentation.
- Define_Tigerstripe_Annotations: walks you through the creation of a new annotation type for Tigerstripe.
- Tigerstripe_APIs: describes all the details of how to integrate with the Tigerstripe Annotation Framework.
- Pattern_Based_Artifact_Creation: details how the Tigerstripe palette can be customized thru patterns.
- Custom_Audit_Rules: explains how to define custom rules for validation of a Tigerstripe model.
- Tigerstripe_Custom_Naming_Rules: demonstrates how to define custom naming rules for newly created artifacts.
- Buckminster Integration Tutorial: demonstrates automation of complex Tigerstripe project resolution using Buckminster.