1 / 54

Im Rahmen einer 3er-Studienarbeit von Thorsten Höllrigl, Frank Schell und Christoph Schaa

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

lyle
Download Presentation

Im Rahmen einer 3er-Studienarbeit von Thorsten Höllrigl, Frank Schell und Christoph Schaa

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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-

  4. Teil 1-Grafische Notation der DSD mit Beispielen Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD)

  5. 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

  6. <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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. Beispiel Provider Schema

  14. Beispiel Provider Instanz (Angebot)

  15. Beispiel Provider Anfrage

  16. 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

  17. Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Teil 2-Formalisierung der DSD

  18. Formalisierung der DSD Überblick • Allgemeines zur Sprache • Syntax & Semantik der Sprache • Dienstangebot • Dienstanfrage

  19. 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

  20. Geeignete Dienstbeschreibungssprache Mögliche Kandidaten Existierende Sprache: XML Schema, OWL … ? XML Schema Erstellen eines Schemas Verwendung komplexer Typen Dienstangebot Die Sprache für Dienstangebote

  21. 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>

  22. 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

  23. Dienstangebot Schema

  24. 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

  25. KLASSE → BEZEICHNER [ATTRIBUTLISTE] (PACK)? PACK → into (BEZEICHNER.)* (BEZEICHNER) ATTRIBUTLISTE→ ATTRIBUT (, ATTRIBUT)* ATTRIBUT → BEZEICHNER: ( EINZELATTRIBUT | MENGENATTRIBUT ) EINZELATTRIBUT → BEZEICHNER MENGENATTRIBUT → set (BEZEICHNER) Dienstangebot Klassen – Die Grammatik

  26. Dienstangebot Instanziierung – Grafikbeispiel

  27. 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)

  28. 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

  29. Dienstangebot Instanziierung – Grafikbeispiel myAktienDienst :as Service from upper myAktienDienst.presents := myAktienDienstProfil myAktienDienstProfil :as ServiceProfile from upper.profile myAktienDienstProfil.operatesWith := myAktie

  30. 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

  31. Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Teil 2b-Dienstanfrage

  32. 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

  33. DirectCondition Vergleich auf Objektreferenz Vergleich mit Primitiven Datentyp Vergleich mit einer Menge Dienstanfragen Arten von Bedingungen • PropertyCondition • Attribut

  34. from Service where Service == myAktiendienst Dienstanfrage Vergleich Objektreferenz • BEDINGUNG → BEZEICHNER (EQUALS) • EQUALS → = = BEZEICHNER

  35. 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

  36. from Service where providedBy = “Consors Direkt“ Dienstanfrage Vergleich eines Attributes mit primitivem Datentyp • BEDINGUNG → BEZEICHNER (EQUALS | VERGLEICH ) • VERGLEICH → OPERATOR (STRING|INT)

  37. 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

  38. 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

  39. Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Teil 3-Transformation in Java

  40. Transformation in JavaVorgehensweise 0 oder 1

  41. Transformation in JavaÜberblick • ANTLR • Dienstangebot: Resultierende JAVA-Dateien • Dienstanfrage: Einlesen von Anfragen und Ausgabe als Matcher • Übergabe der Dienstbeschreibungen in den Matcher

  42. ANTLR Überblick • Steht für Another Tool for Language Recognition • Erzeugt sprachspezifischen Parser, Lexer und Treewalkerin Java Formale Sprache Java Treewalker Parser C / C++ …

  43. 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

  44. Dienstangebot Schema

  45. 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

  46. Dienstangebot Instanziierung: Grafikbeispiel

  47. 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

  48. Dienstanfrage Grafik Beispiel

  49. 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

  50. Dienstanfrage Grafik Beispiel Dienstangebot: Anfrage: Rückgabewert: 0

More Related