tigerstripe @ eclipse summit 08

18
1 © 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0 Tigerstrip e Richard Craddock, Eric Dillon (Cisco) Integrated Model-Driven Engineering

Upload: eric-dillon

Post on 06-May-2015

868 views

Category:

Technology


2 download

DESCRIPTION

Introduction to Tigerstripe Model Driven Engineering workbench.

TRANSCRIPT

Page 1: Tigerstripe @ Eclipse Summit 08

1© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Richard Craddock, Eric Dillon (Cisco)

Integrated Model-Driven Engineering

Page 2: Tigerstripe @ Eclipse Summit 08

2

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Get started with Tigerstripe

• Quick project overview• Tigerstripe Workbench: highlights• Requirements for Real-life MDE• Customize the Tigerstripe Framework• Wrap-up – Q&A

Page 3: Tigerstripe @ Eclipse Summit 08

3

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Project Overview

• Technology sub-project, in Incubation–Model-Driven-Engineering framework for

large Telecom and Enterprise Models–Open-sourced by Cisco in Jan’08–Used in production (Cisco ANA)

• Website: www.eclipse.org/tigerstripe• Wiki: http://wiki.eclipse.org/Tigerstripe(all materials available at http://wiki.eclipse.org/TigerstripeAtEclipseSummit08 )

Page 4: Tigerstripe @ Eclipse Summit 08

4

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Tigerstripe: The Workbench

• A Scalable MDE environment–Class Diagrams, Instance Diagrams–Model Scoping (facets)– Integrated Code/Content Generation–Scalable, production-ready– Integration

with Continuous builds Env.

Page 5: Tigerstripe @ Eclipse Summit 08

5

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Concepts: Componentized Modelsre

fere

nce

s

• Models are hosted in a project• Cross-project dependencies can be used in a Java-Classpath fashion• Models can be packaged as .zip for read-only distribution.• Allow to “Componentize” large models• Buckminster integration to materialize large number of inter-dependent model projects.

• Models are hosted in a project• Cross-project dependencies can be used in a Java-Classpath fashion• Models can be packaged as .zip for read-only distribution.• Allow to “Componentize” large models• Buckminster integration to materialize large number of inter-dependent model projects.

Page 6: Tigerstripe @ Eclipse Summit 08

6

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Concepts: SCM Friendly Models

• Model Artifacts are stored in separate files in project• Allows SCM to handle them separately, and set own revisions• Reduces number of required merges when large distributed team work on large models.

• Model Artifacts are stored in separate files in project• Allows SCM to handle them separately, and set own revisions• Reduces number of required merges when large distributed team work on large models.

Page 7: Tigerstripe @ Eclipse Summit 08

7

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Concepts: Model Scoping

Out of

Scope

• Define model self-contained, valid, sub-models by walking all relevant relationships• Use Stereotypes/Annotations to control model lifecycle• Use sub-model as driver for code/content generation

• Define model self-contained, valid, sub-models by walking all relevant relationships• Use Stereotypes/Annotations to control model lifecycle• Use sub-model as driver for code/content generation

Page 8: Tigerstripe @ Eclipse Summit 08

8

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Template-based Code/Content Generation

Page 9: Tigerstripe @ Eclipse Summit 08

9

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Instance-based vs. Class-based Generation

Page 10: Tigerstripe @ Eclipse Summit 08

10

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Real-life Model-Driven Engineering

• The model…– Is shipped with product (partners/customers)– Is annotated

• To drive code generation• To document design• Documentation

• The platform…– Controls the model is valid– Facilitates distributed development– Generates content/code

Dev. Team (not shared with Partners/Customers)

Dev. Team (not shared with Partners/Customers)

Modeling Team (shared with Partners)

Modeling Team (shared with Partners)

Doc. Team (shared with Partners/Customers)Doc. Team (shared with Partners/Customers)

Page 11: Tigerstripe @ Eclipse Summit 08

11

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Tigerstripe Annotation Framework

• Principles– Associate Arbitrary

EMF object with URI– Independent of

Tigerstripe Core– Allow for custom UI,

both as property view or on GMF diagrams

– Control where they are persisted

package org.eclipse.tigerstripe.annotation.core;

import org.eclipse.emf.common.util.URI;import org.eclipse.emf.ecore.EObject;

public interface Annotation extends EObject { … URI getUri(); void setUri(URI value); … EObject getContent(); void setContent(EObject value); … String getId(); void setId(String value);

} // Annotation

package org.eclipse.tigerstripe.annotation.core;

import org.eclipse.emf.common.util.URI;import org.eclipse.emf.ecore.EObject;

public interface Annotation extends EObject { … URI getUri(); void setUri(URI value); … EObject getContent(); void setContent(EObject value); … String getId(); void setId(String value);

} // Annotation

Page 12: Tigerstripe @ Eclipse Summit 08

12

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

• Goals:1. Documentation Annotations created when

Entities are created

2. Visual indication of documentation, and design notes

3. Require documentation content for code/content generation.

4. Integrate with Continous Build Environment

Let’s build an example!

1. Define an Artifact pattern to ensure “Entities are created with ‘Documentation’ Annotations”

<pattern:creationPatternpatternName="org.eclipse.tigerstripe.samples.eclipseSummit08.DocumentedEntity"uiLabel="Documented Entity" iconPath="icons/cube-new.png" disabledIconPath="icons/cube-new-gs.png"patternType="node" index="100"xmlns:pattern="http://org.eclipse.tigerstripe/xml/tigerstripeCreationPattern/v1-0"xmlns:ts="http://org.eclipse.tigerstripe/xml/tigerstripeExport/v2-0"><pattern:description>Create a new Documented Entity</pattern:description>

<ts:artifact name="_user1” artifactType="org.eclipse.tigerstripe.workbench.model.deprecated_.IManagedEntityArtifact">

<ts:annotations> <![CDATA[<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"

xmlns:d="http:///org/eclipse/tigerstripe/samples/eclipseSummit08/annotations/documentation.ecore">

<d:Documentation author="" content=""/> </xmi:XMI>]]> </ts:annotations></pattern:creationPattern>

1. Define an Artifact pattern to ensure “Entities are created with ‘Documentation’ Annotations”

<pattern:creationPatternpatternName="org.eclipse.tigerstripe.samples.eclipseSummit08.DocumentedEntity"uiLabel="Documented Entity" iconPath="icons/cube-new.png" disabledIconPath="icons/cube-new-gs.png"patternType="node" index="100"xmlns:pattern="http://org.eclipse.tigerstripe/xml/tigerstripeCreationPattern/v1-0"xmlns:ts="http://org.eclipse.tigerstripe/xml/tigerstripeExport/v2-0"><pattern:description>Create a new Documented Entity</pattern:description>

<ts:artifact name="_user1” artifactType="org.eclipse.tigerstripe.workbench.model.deprecated_.IManagedEntityArtifact">

<ts:annotations> <![CDATA[<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"

xmlns:d="http:///org/eclipse/tigerstripe/samples/eclipseSummit08/annotations/documentation.ecore">

<d:Documentation author="" content=""/> </xmi:XMI>]]> </ts:annotations></pattern:creationPattern>

3. Define custom audit code (IArtifactAuditor & ext. pt into Tigerstripe Incremental Builder) to check on content of Annotation.

3. Define custom audit code (IArtifactAuditor & ext. pt into Tigerstripe Incremental Builder) to check on content of Annotation.

2. Define custom IconProvider and ITigerstripeLabelDecorator driven by presence/Content of Annotations

2. Define custom IconProvider and ITigerstripeLabelDecorator driven by presence/Content of Annotations

4. Use buckminster to materialize and Maven to generate code/content.4. Use buckminster to materialize and Maven to generate code/content.

Page 13: Tigerstripe @ Eclipse Summit 08

13

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Example: Define 2 Annotation Types

• Annotation content is defined thru .Ecore• Register as AnnotationType, with proper target• Add LabelProvider, Validators, Constraints, etc…• See http://wiki.eclipse.org/Tigerstripe_APIs

• Annotation content is defined thru .Ecore• Register as AnnotationType, with proper target• Add LabelProvider, Validators, Constraints, etc…• See http://wiki.eclipse.org/Tigerstripe_APIs

<extension point="org.eclipse.tigerstripe.annotation.core.annotationType"> <definition description="Documentation content" eclass="Documentation" epackage-uri="http:///org/eclipse/… /annotations/documentation.ecore" name="Documentation"> <target type="org.eclipse.tigerstripe.workbench.model.deprecated_.IModelComponent" unique="true"> </target> </definition> </extension>

<extension point="org.eclipse.tigerstripe.annotation.core.annotationType"> <definition description="Documentation content" eclass="Documentation" epackage-uri="http:///org/eclipse/… /annotations/documentation.ecore" name="Documentation"> <target type="org.eclipse.tigerstripe.workbench.model.deprecated_.IModelComponent" unique="true"> </target> </definition> </extension>

Page 14: Tigerstripe @ Eclipse Summit 08

14

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Install Annotations… … and annotate the model.

Selection-based viewSelection-based view

Native EditPart on GMF DiagramsNative EditPart on GMF Diagrams

Annotation “routed” to .ann fileAnnotation “routed” to .ann file

Page 15: Tigerstripe @ Eclipse Summit 08

15

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Customized Workbench

Page 16: Tigerstripe @ Eclipse Summit 08

16

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Materialize and Build

• Use Buckminster to materialize

• Drive headless generation

<cs:cspec xmlns:cs="http://www.eclipse.org/buckminster/CSpec-1.0" name="Equipment-model" componentType="tigerstripe">

    <cs:dependencies>        <cs:dependency name="common-model" componentType="tigerstripe" />        <cs:dependency name="ClassLevel-Generator" componentType="tigerstripe.generator" />    </cs:dependencies>    <cs:actions>        <cs:public name="install-generator" actor="ant">            <cs:properties>                <cs:property key="projectname" value="ClassLevel-Generator"/>            </cs:properties>        </cs:public>    </cs:actions></cs:cspec> `

<cs:cspec xmlns:cs="http://www.eclipse.org/buckminster/CSpec-1.0" name="Equipment-model" componentType="tigerstripe">

    <cs:dependencies>        <cs:dependency name="common-model" componentType="tigerstripe" />        <cs:dependency name="ClassLevel-Generator" componentType="tigerstripe.generator" />    </cs:dependencies>    <cs:actions>        <cs:public name="install-generator" actor="ant">            <cs:properties>                <cs:property key="projectname" value="ClassLevel-Generator"/>            </cs:properties>        </cs:public>    </cs:actions></cs:cspec> `

        <plugin>            <groupId>cisco-tigerstripe</groupId>            <artifactId>maven-tigerstripe-plugin</artifactId>            <version>1.1</version>            <executions>                    <execution>                    <configuration>                        <workspace>${basedir}/workspace</workspace>                        <projects>                            <param>${workspace}/base-defs</param>                            <param>${workspace}/common-model</param>                            <param>${workspace}/Equipment-model</param>                        </projects>                        <generationProject>${workspace}/Equipment-model</generationProject>                    </configuration>                    <goals>                        <goal>generate</goal>                    </goals>                </execution>            </executions>        </plugin>

        <plugin>            <groupId>cisco-tigerstripe</groupId>            <artifactId>maven-tigerstripe-plugin</artifactId>            <version>1.1</version>            <executions>                    <execution>                    <configuration>                        <workspace>${basedir}/workspace</workspace>                        <projects>                            <param>${workspace}/base-defs</param>                            <param>${workspace}/common-model</param>                            <param>${workspace}/Equipment-model</param>                        </projects>                        <generationProject>${workspace}/Equipment-model</generationProject>                    </configuration>                    <goals>                        <goal>generate</goal>                    </goals>                </execution>            </executions>        </plugin>

Page 17: Tigerstripe @ Eclipse Summit 08

17

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe

Wrap-up

• Tigerstripe–As a workbench–As a MDE framework

• Annotation Framework• Integration with Continuous build

environments.

Page 18: Tigerstripe @ Eclipse Summit 08

18

© 2008, Cisco Systems, Inc. – Made available under the Eclipse Public License 1.0

Tigerstripe