model driven dds with java - omg · instances java objects eobjects eclasses, eenums, edatatypes...

30
www.saabgroup.com © Saab AB 2008 Arlington, VA, 2008 Magnus Rundlöf Lars Millberg Model Driven DDS with Java using OMG EMOF and OSGi

Upload: others

Post on 15-Jul-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com© Saab AB 2008

Arlington, VA, 2008

Magnus RundlöfLars Millberg

Model Driven DDS with Javausing OMG EMOF and OSGi

Page 2: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com2© Saab AB 2008

Who are we?

� Lars Millberg and Magnus Rundlöf

� Saab AB, Saab Systems, Naval Systems Division Sweden

� Been working together for 1.5 years in an internal R&D project

� Worked a lot with open standards and model driven development

Page 3: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

Introduction

Page 4: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com4© Saab AB 2008

IDLGenerated Java types

QoSDomain ID

etc.DDS ModelManager

DDS

ApplicationJava code

ApplicationJava code

Model(s)

Applicationcode

Page 5: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

Model Driven DDS

Page 6: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

MDDS

Page 7: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

Prerequisite: EMF

Page 8: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com8© Saab AB 2008

Eclipse Modeling Framework

� A tool for domain-specific modeling

� Unifies three major technologies in modern software engineering

� A Java framework and code generation facility for building applications from structured (formal) data models

<xml/>

Page 9: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com9© Saab AB 2008

The Ecore Model

� The modeling language of EMF

� Almost equivalent to OMG EMOF

� Essentially a simplified subset of the UML Class Diagram package

Page 10: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com10© Saab AB 2008

EMF and MDDS

� MDDS heavily relies on EMF

� Three Ecore models constitute the MDDS Meta models

� Data Model

� QoS Model

� Interface Model

� Separated this way to enable reuse of data types and QoS settings

� The major part of code in MDDS is generated by EMF, including the Eclipse editors for creating and editing instances of the MDDS Meta classes

Page 11: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

To the limits!

Page 12: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com12© Saab AB 2008

EMF and MDDS

� MDDS heavily relies on EMF

� Three Ecore models constitute the MDDS Meta models

� Data Model

� QoS Model

� Interface Model

� Separated this way to enable reuse of data types and QoS settings

� The major part of code in MDDS is generated by EMF, including the Eclipse editors for creating and editing instances of the MDDS Meta classes

Page 13: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

The meta models…

Page 14: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com14© Saab AB 2008

MDDS Data Model

� A straight-forward model of the DDS specific IDL subset

� Instances of these model objects are used to specify user data types in MDDS

Page 15: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com15© Saab AB 2008

MDDS QoS Model

� Straight-forward model containing all the policycontainers and all the QoS policies

� Instances are applied tothe default QoS settingsin runtime

Page 16: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com16© Saab AB 2008

MDDS Interface Model

� Two concrete interface types:

� Subscriber interface

� Publisher interface

� An instance contains all pieces of information needed to subscribe or publish on a topic

Page 17: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

Comparison to traditional DDS

Page 18: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com18© Saab AB 2008

General equivalents

TypeSupport, TypeCode, Seq

Support Classes

EObjectsJava ObjectsInstances

EClasses, EEnums,

EDataTypes

Java Classes, Java Data Types

Type Language Mapping

Data ModelIDLType Declaration

Model Driven DDS with Java

Traditional DDS with Java

Man-made,persisted

Generatedoff-line, persisted

Generatedon-line

Page 19: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com19© Saab AB 2008

«java object»«java object»«java object»«java object»

foo : EObjectfoo : EObjectfoo : EObjectfoo : EObject

class = fooClassclass = fooClassclass = fooClassclass = fooClass

eSettings = {eSettings = {eSettings = {eSettings = {

i=42, s=”Hello” }i=42, s=”Hello” }i=42, s=”Hello” }i=42, s=”Hello” }

«java object»«java object»«java object»«java object»

foo : Foofoo : Foofoo : Foofoo : Foo

i = 42i = 42i = 42i = 42

s = ”Hello”s = ”Hello”s = ”Hello”s = ”Hello”

Instances

«java object»«java object»«java object»«java object»

fooClass : EClassfooClass : EClassfooClass : EClassfooClass : EClass

name = ”Foo”name = ”Foo”name = ”Foo”name = ”Foo”

eStructuralFeatures = {eStructuralFeatures = {eStructuralFeatures = {eStructuralFeatures = {

name = ”i” eType = EInt,name = ”i” eType = EInt,name = ”i” eType = EInt,name = ”i” eType = EInt,

name = ”s” eType = name = ”s” eType = name = ”s” eType = name = ”s” eType = EString }EString }EString }EString }

«java source»«java source»«java source»«java source»

public class Foo {public class Foo {public class Foo {public class Foo {

long i;long i;long i;long i;

String s; }String s; }String s; }String s; }

Type Language Mapping

«idl»«idl»«idl»«idl»

struct Foo {struct Foo {struct Foo {struct Foo {

long i;long i;long i;long i;

string s; };string s; };string s; };string s; };

Type Declaration

Model Driven DDS with Java

Traditional DDS with Java

Man-made,persisted

Generatedoff-line, persisted

Generatedon-line

Page 20: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com20© Saab AB 2008

The MDDS Manager

� Simple API� MDataReader createDataReader(MSubscriberInterface iface, MListener listener)

� MDataWriter createDataWriter(MPublisherInterface iface)

� Resource sharing

� Domain Participants, Subscribers and Publishers are shared wherever it is possible

� The MDDS Manager is implemented as an OSGi service

Page 21: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

Prerequisite: OSGi

Page 22: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com22© Saab AB 2008

Open Services Gateway initiative

� Dynamic module system for the Java Programming Language

� Open standard – Open Architecture

� Component model, binary re-use possible

� Components are called bundles

� Loose coupling

� SOA within a Java Virtual Machine

� www.osgi.org

Page 23: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com23© Saab AB 2008

MDDS and OSGi

� Again: The MDDS Manager is an OSGi service (implemented in a bundle)

� The component using an MDDS interface lives in another bundle, and asks the OSGi runtime for the MDDS Manager service

� Using OSGi we can reload a data model in a running system

� …except we haven’t found a way to unregister a type. Vendor’s limitation or spec requirement?

Page 24: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com24© Saab AB 2008

Benefits of Model Driven DDS

� Complete description of an interface – domain id, QoS settings etc. –is kept in one place without a man in the middle

� Tuning QoS is easy

� If types are kept unchanged this can be done in a running program, works beautifully with OSGi.

� IDL files and nice-to-look-at documentation can be generated from the models with little effort

Page 25: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com25© Saab AB 2008

Todo’s

� Extend to other vendors; OpenSplice, others?

� Implement remaining IDL constructs� Unions, Value types

� Add remaining QoS policies to the QoS Model

� Wait-based data access

� Unregister types?

� Extend the editor� Context menus (e.g. Goto Type Definition, Goto Publisher QoS)

� Refactoring

� Validation

Page 26: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

Demo

Page 27: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com27© Saab AB 2008

Demo

� Using Saab’s HMI Framework we have integrated a USB Missile Launcher

� Pre-conditions: a hacked launcher and an IDL for interfacing it

Page 28: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com28© Saab AB 2008

Launcher IDL(Namespace: com::saabgroup::enterprisebus::launcher)

struct LauncherStatus {ModuleId moduleId; //@keyboolean allocated;boolean firing;boolean video;LauncherConfigurationVideo videoConfiguration;

};

struct LauncherConfigurationVideo {string host;short port;short maxFps;

}

struct LauncherControl {ModuleId moduleId;LauncherCommand command;LauncherCommandMove move;LauncherCommandSetVideo setVideo;

};

enum LauncherCommand {MOVE,FIRE,STOP,SET_VIDEO,ALLOCATE,DEALLOCATE

};

enum LauncherDirection {UP,DOWN,LEFT,RIGHT

};

struct LauncherCommandMove {LauncherDirection direction;

};

struct LauncherCommandSetVideo {boolean active;

};

Page 29: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com29© Saab AB 2008

Linux (HMI node)JVM/OSGi

com.saabgroup.cms.launcher.hmi

com.saabgroup.cms.mdds

Linux (Launcher node) JVM/OSGi

com.saabgroup.cms.launcherHTTP server

com.saabgroup.cms.mdds

com.saabgroup.enterprisebus.launcher

com.saabgroup.enterprisebus.launcher

com.saabgroup.enterprisebus.launcher

com.saabgroup.enterprisebus.launcher

Setup

«topic»name = “LauncherStatus”

type =“com::saabgroup::enterprisebus::

launcher::LauncherStatus”

«topic»name = “LauncherControl”

type =“com::saabgroup::enterprisebus::

launcher::LauncherControl”

Page 30: Model Driven DDS with Java - OMG · Instances Java Objects EObjects EClasses, EEnums, EDataTypes Java Classes, Java Data Types Type Language Mapping Type Declaration IDL Data Model

www.saabgroup.com30© Saab AB 2008

www.saabgroup.com