540 likes | 683 Views
Schaffung einer formalen Grundlage für Dienstbeschreibungen in DIANE und Entwicklung von geeigneten Werkzeugen und Beispielen. Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD). Im Rahmen einer 3er-Studienarbeit von
E N D
Schaffung einer formalen Grundlage für Dienstbeschreibungen in DIANEund Entwicklung von geeignetenWerkzeugen und Beispielen Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Im Rahmen einer 3er-Studienarbeit von Thorsten Höllrigl, Frank Schell und Christoph Schaa
Universität Karlsruhe (TH) Gliederung der Arbeit • Sammlung von Beispieldiensten und grafische Darstellung in DSD → Christoph Schaa 2. Formale Sprache für die DSD • Dienstangebot → Thorsten Höllrigl • Dienstanfrage → Frank Schell 3. Transformation der Dienstbeschreibungen in Java → Frank Schell
Beispielangebote Beispielanfragen Basisrepräsentation NR NR NR Nebenrepräsentation in Java Universität Karlsruhe (TH) Grundlage: DIANE SERVICE DESCRIPTION (DSD) DIANE Service Description (DSD) -formale Sprache-
Teil 1-Grafische Notation der DSD mit Beispielen Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD)
Raum Gebäude Ort Gebäude XSD_Integer Raum Grafische Notation der DSD DIANE Elements Objektorientierter Ansatz liegtIn • Klassen: • Vererbung: • Primitive Typen: raumNr • Instanzen: liegtIn Hörsaal113:Raum Gebäude50:Gebäude
<Typ> <Typ> prop. condition direct conditions direct conditions XSD_Integer raumNr Raum >=100 Grafische Notation der DSD Set Set: • deklarative Menge – Teilmenge einer Klasse • direct condition: • in{<benamtesObjekt>,...} • <,>,=,<=,... • property condition: • Attribut muss sich in der referenzierten Menge befinden
Variable: Typ Grafische Notation der DSD Variablen Speziell bei Dienstbeschreibungen • Dienen als Schnittstelle für die Ein- und Ausgabe • Werden vor und bei der Ausführung belegt category: in, out e, x 1,2,3,... • IN: sind vom Dienstnehmer auszufüllen • OUT: sind vom Dienstgeber auszufüllen • Estimated: vor der eigentlichen Dienstausführung → z.B geschätzte Bearbeitungszeit • eXecution: Variablen für die eigentliche Ausführung • STEP: schrittweiser Informationsaustausch
Grafische Notation der DSD geschichtete Ontologien Problem: • DSD Elements sind zu generisch. • Dienstvergleich benötigt gemeinsames Schema → Schichtung von Ontologien • Obere Ontologie: “ein” allgemeingültiges oberes Schema • Kategorie Ontologien: wenige Dienstkategorien • Domänen Ontologien: viele Domänenspezifische Schemata
describes Model Service supports Grounding presents State Profile State precondition effect Grafische Notation der DSD Obere Ontologie Profile: Funktionalität → Was macht der Dienst? Model: prozeduraler Ablauf → Wie funktioniert der Dienst? Grounding: technische Grundlagen, z.B. Protokolle zustandsbasierte Beschreibung der Funktionalität
Dienste werden in Kategorien zusammengefasst Beispiele: State Information State Document entity Printed OnHD Service presents precon. effect Unknown Profile Known Grafische Notation der DSD Kategorie Ontologien InformationService:ändert Zustand von Dokumenten KnowledgeService:ändert Zustand von Wissen RealObjectService:ändert Zustand von Objekten in der realen Welt
Document XSD_Integer Textdocument Profile Printed XSD_Integer Textdocument Grafische Notation der DSD Domänen Ontologien Aufstellen eines domänenspezifische Schemas: • Spezielle Klassen z.B: • Konkrete Dienste numberOfPages effect entity numberOfPages
Erweiterung des ursprünglichen Profils für weitere Dienstbeschreibungen • invariant: Zustand während der Dienstausführung z.B bei Internetprovider describes Model Service supports Grounding presents State Profile State precondition effect invariant State Grafische Notation der DSD Erweiterung des Profils
Beispiel Provider Schema
Beispiel Provider Instanz (Angebot)
Beispiel Provider Anfrage
Zusammenfassung • Grafische Notation der DSD: • Objektorientiert, UML-artig • Besonderheiten: Variablen und Mengen • Erweiterung des Profils: Zustand „invariant“ • Beispiel Provider • Schema, Angebot, Anfrage • weitere Beispiele: Aktiendienst,Druckdienst,Routenplaner Nachrichtendienst
Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Teil 2-Formalisierung der DSD
Formalisierung der DSD Überblick • Allgemeines zur Sprache • Syntax & Semantik der Sprache • Dienstangebot • Dienstanfrage
Eigenschaften der Sprache Rechnerverständlich Keine Sekundärinformationen nötig Universal einsetzbar Alle möglichen Dienste, aller Domänen beschreibbar Menschenerstellbar In angemessener Zeit → DSD als Grundlage Dienstangebot Die Sprache für Dienstangebote
Geeignete Dienstbeschreibungssprache Mögliche Kandidaten Existierende Sprache: XML Schema, OWL … ? XML Schema Erstellen eines Schemas Verwendung komplexer Typen Dienstangebot Die Sprache für Dienstangebote
Dienstangebot Beispielhafte Dienstbeschreibung in XML Schema <xsd:complexeType name="class"> <xsd:attribute name="name" type="xsd:string"/> <xsd:sequence> <xsd:element name="attribute" type="attribute“ maxOccurs=unbounded /> <xsd:element name="attributeSet" type="attributeset" minOccurs=0 maxOccurs=unbounded /> </xsd:sequence> </xsd:complexeType> <xsd:complexeType name="attribute"> <xsd:sequence> <xsd:element name="name" type="xsd:string" /> <xsd:element name="type" type="xsd:string" /> </xsd:sequence> </xsd:complexeType>
Warum nicht XML Schnell unübersichtlich Beschreibung zu lang → Eigene Sprache Durch allgemeine Grammatik Alle Anforderungen erfüllbar Bessere Lesbarkeit Bessere Erstellbarkeit Dienstangebot Die Sprache für Dienstangebote
Dienstangebot Schema
Attribute Notation:Aktie [Name: String, WKN: Integer] 0 … * - Beziehungen:Aktie [Chart: set (Aktienkurs)] Vollständiges Beispiel: Dienstangebot Klassen & ihre Beziehungen – Die Sprache Aktie[ Name: String, WKN: Integer, Chart: set(Aktienkurs)] into domain.aktie das Paket hinter into gibt durch Konkatenation mit Standardpackage das Zielpaket an
KLASSE → BEZEICHNER [ATTRIBUTLISTE] (PACK)? PACK → into (BEZEICHNER.)* (BEZEICHNER) ATTRIBUTLISTE→ ATTRIBUT (, ATTRIBUT)* ATTRIBUT → BEZEICHNER: ( EINZELATTRIBUT | MENGENATTRIBUT ) EINZELATTRIBUT → BEZEICHNER MENGENATTRIBUT → set (BEZEICHNER) Dienstangebot Klassen – Die Grammatik
Dienstangebot Instanziierung – Grafikbeispiel
Dienstangebot Instanziierung – Die Sprache • Instanz erzeugen myAktie :as Aktie • Attribute Werte zuweisen myAktie.name := “Consors“ Beispiel: myAktie :as Aktie from domain.aktie myAktie.WKN := (in, x, 1, Integer, Eingabe) myAktie.AktuellerKurs := (out, e, 5, Integer, Ausgabe)
myAktie :as Aktie from domain.aktie myAktie erhält automatisch das Package dsd.instance.domain.aktie myAktie.WKN := (in,x,1,Integer,Eingabe) myAktie.AktuellerKurs := (out, e, 5, Integer, Ausgabe) in oder out für Klassifizierung durch Entität Dienstnehmer → IN – Variable Dienstgeber → OUT – Variable e oder x für Phase der Konkretisierung e für Variablen der Schätzphase (Kostenschätzung) x für Variablen der Ausführungsphase und Erhalt des Ergebnisses 1,2… ist die Stufe des Informationsaustausches Dienstangebot Instanziierung – Die Sprache
Dienstangebot Instanziierung – Grafikbeispiel myAktienDienst :as Service from upper myAktienDienst.presents := myAktienDienstProfil myAktienDienstProfil :as ServiceProfile from upper.profile myAktienDienstProfil.operatesWith := myAktie
INSTANZ → BEZEICHNER( KLASSENINSTANZ | ATTRIBUTINSTANZ ) KLASSENINSTANZ →:as BEZEICHNER (FROMPACK)? FROMPACK →from (BEZEICHNER.)* BEZEICHNER ATTRIBUTINSTANZ → .BEZEICHNER : ( ZUWEISUNG) ZUWEISUNG → = (VARIABLE | STRING |BEZEICHNER | INT (PUNKT INT)? ) VARIABLE → (( in | out ),( e | x ),INT, BEZEICHNER, BEZEICHNER) → FROMPACK: Paket der zu instanziierenden Klasse Dienstangebot Instanziierung – Grammatik
Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Teil 2b-Dienstanfrage
from <TYP> where <BEDINGUNG> and <BEDINGUNG> Dienstanfrage Grundlegender Aufbau Set: Teilmenge einer Klasse Grammatik: START → ANFRAGE ANFRAGE → from BEZEICHNER WHERE WHERE → where BEDINGUNG ( AND )* AND → and BEDINGUNG
DirectCondition Vergleich auf Objektreferenz Vergleich mit Primitiven Datentyp Vergleich mit einer Menge Dienstanfragen Arten von Bedingungen • PropertyCondition • Attribut
from Service where Service == myAktiendienst Dienstanfrage Vergleich Objektreferenz • BEDINGUNG → BEZEICHNER (EQUALS) • EQUALS → = = BEZEICHNER
from Service where Service in {myAktienDienst, consorsDirect} Alternativ: {myAktienDienst, consorsDirect} BEDINGUNG → BEZEICHNER (EQUALS|VERGLEICH|ELEMENTOF) ELEMENTOF → in { (OBJEKTLISTE) } OBJEKTLISTE → (BEZEICHNER ( , BEZEICHNER)*) | (PRIMITIVERDT ( , PRIMITIVERDT)*) Dienstanfrage Vergleich mit einer Menge
from Service where providedBy = “Consors Direkt“ Dienstanfrage Vergleich eines Attributes mit primitivem Datentyp • BEDINGUNG → BEZEICHNER (EQUALS | VERGLEICH ) • VERGLEICH → OPERATOR (STRING|INT)
from Service where presents in {from ServiceProfile where operatesWith in {from Aktie where Aktie == myAktie} ELEMENTOF → in { (OBJEKTLISTE | ANFRAGE) } Service s t n e s e r p ServiceProfile operatesWith Aktie == myAktie Dienstanfrage Vergleich mit einer geschachtelten Anfrage
START→ ANFRAGE | {(OBJEKTLISTE)} ANFRAGE →from BEZEICHNER WHERE WHERE →where BEDINGUNG ( AND )* AND →and BEDINGUNG BEDINGUNG→ BEZEICHNER (EQUALS | VERGLEICH | ELEMENTOF) EQUALS →= = BEZEICHNER VERGLEICH → OPERATOR (PRIMITIVERDT) ELEMENTOF→in { (OBJEKTLISTE | ANFRAGE) } OBJEKTLISTE → (BEZEICHNER ( , BEZEICHNER)*) | (PRIMITIVERDT ( , PRIMITIVERDT)*) Dienstanfrage Gesamte Grammatik
Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Teil 3-Transformation in Java
Transformation in JavaVorgehensweise 0 oder 1
Transformation in JavaÜberblick • ANTLR • Dienstangebot: Resultierende JAVA-Dateien • Dienstanfrage: Einlesen von Anfragen und Ausgabe als Matcher • Übergabe der Dienstbeschreibungen in den Matcher
ANTLR Überblick • Steht für Another Tool for Language Recognition • Erzeugt sprachspezifischen Parser, Lexer und Treewalkerin Java Formale Sprache Java Treewalker Parser C / C++ …
In welches Package kommen erzeugte Klassen? → Ini – Datei Package getrennt für Klassen und Instanzen Standardimports Beispiel: klassenpackage dsd.schema instanzpackage dsd.instance import dsd.elements.xsd.* import dsd.elements.* import dsd.schema.upper.* Dienstangebot Java – Dateien: Ini – File
Dienstangebot Schema
package dsd.schema.domain.aktie; import dsd.elements.xsd.*; import dsd.elements.*; import diane.diane3sa.*; import dsd.schema.upper.*; import dsd.schema.domain.*; import dsd.schema.upper.profile.*; public class Aktie extends Thing { public XSD_String AktienName; public XSD_Integer WKN; public XSD_Integer AktuellerKurs; public Aktienkurs Chart; } Dienstangebot Klassen: Die erzeugten Java-Dateien
Dienstangebot Instanziierung: Grafikbeispiel
package dsd.instance.domain.aktie; import ... public class myAktie { public static Aktie create() { Aktie myAktie = new Aktie(); myAktie.WKN = new XSD_Integer(); myAktie.WKN.addCategory("in","x",1); myAktie.AktuellerKurs = new XSD_Integer(); myAktie.AktuellerKurs.addCategory("out","e",5); return myAktie; } } Dienstangebot Instanzen: Die erzeugten Java-Dateien
Dienstanfrage Grafik Beispiel
public class Matcher { public double match(Thing input) { double out; Service serviceSet = new Service(); serviceSet.isSet = true; ((Service)serviceSet).providedBy= new XSD_String(); serviceSet.providedBy.isSet = true; DirectCondition providedBy = new DirectCondition(); providedBy.operator = "=="; providedBy.value = new XSD_String("providedBy","DianeConsors"); serviceSet.directConditions = new Vector(); serviceSet.directConditions.add(providedBy); out = serviceSet.contains(input); return out; } } DienstanfrageMatcher.java
Dienstanfrage Grafik Beispiel Dienstangebot: Anfrage: Rückgabewert: 0