SlideShare une entreprise Scribd logo
1  sur  8
Télécharger pour lire hors ligne
1 Plugin Konzept
      Dieses Kapitel beschreibt den Aufbau der konzipierten und erstellten Plugins. Ziel
      dieses Kapitels soll es sein, dem Lesenden Einblick in den Plugin-Aufbau zu geben
      und die definierten Plugin-Punkte zu Erläutern und etwaige Entscheidungspunkte
      beim Aufbau des Plugins herauszuarbeiten und darzustellen.

      In dem ersten Punkt dieses Kapitels soll die Zielstellung eines Plugins im Hinblick
      auf das Gesamtprojekt definiert werden. Die Frage die in diesem Kapitel aufkommt
      lautet: „Weshalb werden Plugins verwendet und wozu dienen sie?“. Ein Plugin
      stellt im Blick auf das Gesamtgefüge des Projektes „Setup Script Maker“ den
      Zielanwendungscode bereit. Ein Plugin enthält somit Quellcode der Zielsprache
      oder sogar der Zielsprachen. Die Struktur dieses Projektes „SetupSkriptMakr“ ist
      somit in zwei Teilbereichen zu untergliedern. Der erste Teilbereich, das Frontend,
      stellt die Anwendungsoberfläche dar. In dieser kann der Anwender seine
      Zielsprache definieren und das Skript zusammenbauen. Der zweite Teilbereich, die
      Plugins, stellen den Quellcode der Zielsprache bereit. Das Vorgehen lässt sich
      somit folgend beschreiben. Die Plugins werden von dem System eingelesen und
      die Struktur und die Inhalte gespeichert.

      Hat der Anwender die gewünschte Struktur seines zu erstellenden und
      auszugebenden Skriptes definiert und etwaige notwendig Angeben über z.B.
      Pfadparameter und Zielparamater, angegeben, wird der Zielquellcode des
      jeweiligen Plugins dem Anwenderanforderungen angepasst und als Gesamtskript
      in Form eines Batch oder zum Beispiel Shell Files ausgegeben.

      Der zweite Punkt dieses Kapitels, soll sich mit der Struktur des Plugins
      beschäftigen. In unserem Projekt standen zwei Plugin-Aufbaustrukturen zur
      Auswahl.

         1. Ein Plugin enthält genau eine Quellzielsprache. Jedoch können in einem
            Plugin mehrere Aufgaben definiert werden.
         2. Ein Plugin enthält mehrere Quellzielsprache. In einem Plugin befindet sich
            jedoch nur ein Aufgabentyp.

      Folgendes UML Klassendiagramm soll den Aufbau eines Plugins näher
      verdeutlichen.




                             Abbildung 1. Pluginstruktur 1
Abbildung 1 zeigt die oben beschriebene erste Möglichkeit zur Strukturierung eines
Plugins.




                         Abbildung 2. Pluginstruktur 2

In Abbildung 2 wird mit Hilfe eines UML Klassendiagramm die 2te mögliche
Strukturierung eines Plugins beschrieben.

In unserem Projekt wird ein Plugin als ein elementares Objekt betrachtet, welches
eine bestimmte Aufgabe mit mehreren Quellzielsprachen bereitstellt. Die
Entscheidung viel Aufgrund der besseren Strukturierung. Da in unserem Projekt
die Gewichtung sehr stark auf den Aufgabenteil liegt, soll diese Gewichtung
ebenfalls auf die Plugin-Struktur überführt werden.

Im weiteren Verlauf wird der Plugin-Aufbau detaillierter betrachtet. Es werden die
von uns definierten Plugin-Parameter und erläutert. Der Plugin-Aufbau wird mit der
Extensible Markup Language [XML] beschrieben. Dabei ist XML eine
Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten in Form
von Textdaten.

Eine Plugin-Hierarchie erfolgt mit dem Element [plugin] welches ein Attribut [id]
enthält. Das Attribut [id] definiert dabei die Eindeutigkeit und Identität eines Plugin.
Innerhalb des Elementes [plugin] existieren eine Vielzahl von weiteren Elementen,
welche nachfolgend beschrieben werden.

Das Element [name] beschreibt den Namen des Plugin, welcher dem Anwender im
System angezeigt wird. Das Element [description] gliedert sich in die
Unterelemente [short] und [long] auf. Das Element [description] ist für die weitere
Beschreibung eines Plugin vorgesehen.




             Abbildung 3. Plugin Elemente Name und Beschreibung
Das Element [authors] beschreibt die Ersteller oder Autoren des Plugin. Das
Element [authors] kann Elemente vom Typ [author] enthalten




                    Abbildung 4. Plugin Element Autoren

Ein Autor besitzt hierbei die Element [name], [email], [homepage] und [nickname],
welche die den Plugin-Ersteller eindeutig beschreiben.

Das nachstehende Element [languagesupported] beinhaltet die vom Plugin
bereitgestellten und angebotenen Zielsprachen. Ein Element [languagesupported]
beinhaltet Elemente vom Typ [language]. Die Sprache welche durch das Element
[language] definiert wird, wird durch die Elemente [name] und [platform]
beschrieben.




            Abbildung 5. Plugin Element Angebotene Zielsprachen

Das Element [dependencies] enthält mögliche Abhängigkeiten eines Plugins. Ein
[dependencies] Element kann dabei mehrere Elemente vom Typ [dependency]
enthalten. Das Attribut [typ] in dem Element [dependency] sagt aus, von welchem
Typ die Abhängigkeit ist. Ein Typ kann dabei z.B. ein anderes Plugin oder eine
Software sein. Betrifft die Abhängigkeit ein anderes Plugin, muss das Attribut [id]
des Plugin angegeben werden. Eine Abhängigkeit besitzt die Elemente
[description], welche die Abhängigkeit beschreibt, und [filename] oder
[softwarename].
Abbildung 6. Plugin Element Abhängigkeiten

Das Element [parameters], beschreibt die Parameter welche der Quellzielcode
erwartet. Ein Element [parameter] besitzt die Attribute [name] –
Parameterbezeichnung, [type] – Typisierungsangabe des Parameters, [id] –
Eindeutigkeitsschlüssel, [lenght] – Länge des zu übergebenden Parameters und
[description] – Parameterbeschreibung.




                        Abbildung 7. Plugin Element Parameter

Das Element [codesnippets] enthält den Code der Aufgabe. Ein Element
[codesnippets] kann Elemente vom Typ [codesnippet] beinhalten. Ein Element
[codesnippet] muss ein Element [script] beinhalten, in dem der Quellzielcode
eingebunden wird. Durch das Attribute [language] wird die Zielsprache angegeben
und definiert. Das Element [script] kann ein Element vom Typ [imports] beinhalten,
welches mögliche Importdateien einer Zielsprache beinhaltet.




                 Abbildung 8. Plugin Element Quellzielcode
Im folgende wird eine Tabelle dargestellt welche die verwendeten und
     angebotenen Quellzielsprachen und die implementierten Aufgaben aufzeigt.

Id    Aufgabe                           Zielsprachen             Beschreibung
1.    Ordner/File Löschen               Windows Batch, Linux     löscht einen
                                        Shell und Ruby           bestehenden
                                                                 Ordner
2.    Ordner/File Kopieren              Windows Batch, Linux     Kopiert einen
                                        Shell und Ruby           bestehenden
                                                                 Ordner von A
                                                                 nach B
3.    Ordner/File Verschieben           Windows Batch, Linux     Kopiert einen
                                        Shell und Ruby           bestehenden
                                                                 Ordner von A
                                                                 nach B und löscht
                                                                 Ordner aus A
4.    Ordner erstellen                  Windows Batch, Linux     Erstellt einen
                                        Shell und Ruby           Ordner
5.    Ordnergröße ermitteln             Windows Batch, Linux     Ermittel die Größe
                                        Shell und Ruby           eines
                                                                 bestehenden
                                                                 Ordners
2 XML Parser
      In diesem Kapitel soll der XML Parser betrachtet werden. Analog zu dem
      vorherigen Punkt, soll geklärt werden, was die Aufgabenstellung und der Zweck
      des Parser darstellen.

      In dem Kapitel [Plugin Konzept] wurde die Plugin-Konzeption und deren Ziel
      erläutert. Das Ziel oder die Aufgabe des Parser besteht darin, die definierten
      Inhalte des Plugin auszulesen und der Anwendung bereitzustellen. Da das Plugin
      mit Hilfe der Extensible Markup Language (XML) beschrieben wurde, wird zum
      auslesen eines bestehenden Plugin ein XML-Parser benötigt.

      Die Anwendung wurde mit der Sprache Ruby umgesetzt. Somit muss auch der zu
      definierende XML Parser mit Ruby entwickelt werden. Ruby stellt dem Entwickler
      eine Reihe von XML Parsern zur Verfügung.

      In unserem Projekt soll der XML Parser [hpricot] zum Einsatz kommen. Dieser
      Ruby XML Parser kann auf der Seite [http://wiki.github.com/why/hpricot/hpricot-
      xml] kostenfrei heruntergeladen werden.

      Die ausgelesenen Informationen sollen, lautet interner Zielsetzung, in Hashtabellen
      abgelegt werden. Folgenden Hashtabellen wurden hierbei angelegt.

      PluginDescription:
      In dieser Hashtabelle werden die Plugin-ID, der Plugin-Name, die Plugin-Kurz- und
      die Plugin-Langbeschreibung gespeichert.

      Authors:
      Diese Hashtabelle beinhaltet Hashtabelle vom Typ Author.

      Author:
      Eine Hashtabelle Author beinhaltet die Parameter Name, E-Mail, Homepage und
      Nickname des Authors.

      LanguageSupported:
      Diese Hashtabelle beinhaltet Hashtabelle vom Typ Language.

      Language:
      Diese Hashtabelle speichert die Informationen der definierten und angebotenen
      Sprachen. Die hier gespeicherten Parameter sind der Sprachenname und die
      Platform.

      DependenciesSoftware:
      Beinhaltet Hashtabellen vom Typ DependencySoftware.

      DependencySoftware:
      Speichert die Informationen der Abhängigkeitsbeschreibung und den Namen der
      Software.

      DependenciesFile:
      Beinhaltet Hashtabellen vom Typ DependencyFile.
DependencyFile:
Beinhaltet alle Informationen einen Plugin-Abhängigkeit. Diese sind die Plugin-
Beschreibung und der Plugin-Name.

ParametersInput:
Beinhaltet Hashtabelle vom Typ ParameterInput.

ParameterInput:
Beinhaltet Parameter die den Parameterinput beschreiben. Diese sind der Name,
Typ, ID, Lenght und die Beschreibung.

ParametersOutput:
Beinhaltet Hashtabelle vom Typ ParameterOutput.

ParameterOutput:
Beinhaltet Parameter die den Parameteroutput beschreiben. Diese sind der Name,
Typ, ID, Lenght und die Beschreibung.

CodeShell:
Beinhaltet den Code der Quellzielsprache Shell.

CodeBatch:
Beinhaltet den Code der Quellzielsprache Batch.

CodeRuby:
Beinhaltet sowohl den Code der Quellzielsprache Ruby, als auch weitere
Hashtabellen vom Typ RubyRequire.

RubyRequire:
In dieser Hashtabelle werden die von Ruby benötigten Bibliotheken gespeichert.

Im nachfolgenden sollen die Schritte zum Auslesen eines Elementinhaltes
Beispielhaft aufgezeigt werden.

Um den [hpricot] XML Parser verwenden zu können, wird die Bibliothek [hpricot]
verwendet. Anschließend wird das XML File durch den Befehl




aufgerufen.

Ein Attribut kann durch den Befehl




ausgelesen werden. Mit Hilfe von [each do] Schleifen werden mehrere Elemente
vom selben Typ durchlaufen und der Inhalt ausgelesen. Das Beispiel zum
Auslesen der Unterstützten Programmiersprache soll dies verdeutlichen.
Ist das Gesamte XML File durchlaufen, werden Methoden bereitgestellt die zur
Verfügung stehenden Hashtabelle zu ermitteln.

Contenu connexe

En vedette

K B Unni Trainers Profile
K B Unni Trainers ProfileK B Unni Trainers Profile
K B Unni Trainers ProfileOpExHat
 
Exposicion final
Exposicion finalExposicion final
Exposicion finalBeto GalVez
 
Bases definitivas concurso__esculturas_de_arena
Bases definitivas concurso__esculturas_de_arenaBases definitivas concurso__esculturas_de_arena
Bases definitivas concurso__esculturas_de_arenaAyuntamiento de Calpe
 
Datascan Scanning Services
Datascan Scanning ServicesDatascan Scanning Services
Datascan Scanning Servicesocafferty
 
Handout for new blended learning
Handout for new blended learningHandout for new blended learning
Handout for new blended learningTaleo Research
 
Plan de gestión en tic del colegio técnico nuestra señora de la presentación
 Plan de gestión en tic del colegio técnico nuestra señora de la presentación Plan de gestión en tic del colegio técnico nuestra señora de la presentación
Plan de gestión en tic del colegio técnico nuestra señora de la presentacióngloriatematicas
 
Cia das artes cronograma março
Cia das artes cronograma   marçoCia das artes cronograma   março
Cia das artes cronograma marçociadasartes
 
Presentación colores
Presentación coloresPresentación colores
Presentación colorespilarica11q
 
Gagnant concours #lovepics
Gagnant concours #lovepicsGagnant concours #lovepics
Gagnant concours #lovepicsIberia
 
March unipsa jlt 15 02 2012
March unipsa jlt 15 02 2012March unipsa jlt 15 02 2012
March unipsa jlt 15 02 2012evercom
 
Ndërmarrësi testi 2
Ndërmarrësi  testi 2Ndërmarrësi  testi 2
Ndërmarrësi testi 2Veton Sopjani
 

En vedette (14)

Ìèíèé áàõàðõàë
Ìèíèé áàõàðõàëÌèíèé áàõàðõàë
Ìèíèé áàõàðõàë
 
K B Unni Trainers Profile
K B Unni Trainers ProfileK B Unni Trainers Profile
K B Unni Trainers Profile
 
Exposicion final
Exposicion finalExposicion final
Exposicion final
 
Bases definitivas concurso__esculturas_de_arena
Bases definitivas concurso__esculturas_de_arenaBases definitivas concurso__esculturas_de_arena
Bases definitivas concurso__esculturas_de_arena
 
Datascan Scanning Services
Datascan Scanning ServicesDatascan Scanning Services
Datascan Scanning Services
 
Handout for new blended learning
Handout for new blended learningHandout for new blended learning
Handout for new blended learning
 
O pontapé inicial
O pontapé inicialO pontapé inicial
O pontapé inicial
 
Plan de gestión en tic del colegio técnico nuestra señora de la presentación
 Plan de gestión en tic del colegio técnico nuestra señora de la presentación Plan de gestión en tic del colegio técnico nuestra señora de la presentación
Plan de gestión en tic del colegio técnico nuestra señora de la presentación
 
Cia das artes cronograma março
Cia das artes cronograma   marçoCia das artes cronograma   março
Cia das artes cronograma março
 
Presentación colores
Presentación coloresPresentación colores
Presentación colores
 
Gagnant concours #lovepics
Gagnant concours #lovepicsGagnant concours #lovepics
Gagnant concours #lovepics
 
March unipsa jlt 15 02 2012
March unipsa jlt 15 02 2012March unipsa jlt 15 02 2012
March unipsa jlt 15 02 2012
 
Machote sesiones de_soul
Machote sesiones de_soulMachote sesiones de_soul
Machote sesiones de_soul
 
Ndërmarrësi testi 2
Ndërmarrësi  testi 2Ndërmarrësi  testi 2
Ndërmarrësi testi 2
 

Similaire à Setup Skrip Makr Dokumentation

Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit WordpressBlogwerk AG
 
Multiple Domains mit Composite C1 verwalten
Multiple Domains mit Composite C1 verwaltenMultiple Domains mit Composite C1 verwalten
Multiple Domains mit Composite C1 verwaltenCGN Cloud Company
 
3.1 dateiein- und ausgabe
3.1   dateiein- und ausgabe3.1   dateiein- und ausgabe
3.1 dateiein- und ausgabeMichael Konzett
 
Ecm 5 13_djaafar_jas_forge
Ecm 5 13_djaafar_jas_forgeEcm 5 13_djaafar_jas_forge
Ecm 5 13_djaafar_jas_forgeJasmine Conseil
 
Java Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Java Magazin 5 / 2010 - Twitter nachgebaut mit LiftJava Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Java Magazin 5 / 2010 - Twitter nachgebaut mit LiftJohannes Hohenbichler
 
Schulung jQuery JavaScript-Bibliothek
Schulung jQuery JavaScript-BibliothekSchulung jQuery JavaScript-Bibliothek
Schulung jQuery JavaScript-Bibliothektutego
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code CookbookUlrich Krause
 
Suche und PyLucene
Suche und PyLuceneSuche und PyLucene
Suche und PyLuceneThomas Koch
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerStefan Oehrli
 
Addressroom
AddressroomAddressroom
Addressroomjoerg89
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerWolfgang Weigend
 
TYPO3 CMS 7.0 - Die Neuerungen - pluswerk
TYPO3 CMS 7.0 - Die Neuerungen - pluswerkTYPO3 CMS 7.0 - Die Neuerungen - pluswerk
TYPO3 CMS 7.0 - Die Neuerungen - pluswerkdie.agilen GmbH
 
Dokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenDokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenSebastian Hempel
 
Samuel Zürcher new power of search
Samuel Zürcher new power of searchSamuel Zürcher new power of search
Samuel Zürcher new power of searchDigicomp Academy AG
 

Similaire à Setup Skrip Makr Dokumentation (20)

Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit Wordpress
 
Multiple Domains mit Composite C1 verwalten
Multiple Domains mit Composite C1 verwaltenMultiple Domains mit Composite C1 verwalten
Multiple Domains mit Composite C1 verwalten
 
Openshift
OpenshiftOpenshift
Openshift
 
3.1 dateiein- und ausgabe
3.1   dateiein- und ausgabe3.1   dateiein- und ausgabe
3.1 dateiein- und ausgabe
 
C++ kompakt
C++ kompaktC++ kompakt
C++ kompakt
 
Ecm 5 13_djaafar_jas_forge
Ecm 5 13_djaafar_jas_forgeEcm 5 13_djaafar_jas_forge
Ecm 5 13_djaafar_jas_forge
 
Java Magazin - Lift
Java Magazin - LiftJava Magazin - Lift
Java Magazin - Lift
 
Java Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Java Magazin 5 / 2010 - Twitter nachgebaut mit LiftJava Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Java Magazin 5 / 2010 - Twitter nachgebaut mit Lift
 
Schulung jQuery JavaScript-Bibliothek
Schulung jQuery JavaScript-BibliothekSchulung jQuery JavaScript-Bibliothek
Schulung jQuery JavaScript-Bibliothek
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code Cookbook
 
Suche und PyLucene
Suche und PyLuceneSuche und PyLucene
Suche und PyLucene
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und Docker
 
Addressroom
AddressroomAddressroom
Addressroom
 
Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der Entwickler
 
TYPO3 CMS 7.0 - Die Neuerungen - pluswerk
TYPO3 CMS 7.0 - Die Neuerungen - pluswerkTYPO3 CMS 7.0 - Die Neuerungen - pluswerk
TYPO3 CMS 7.0 - Die Neuerungen - pluswerk
 
Dokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenDokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machen
 
Samuel Zürcher new power of search
Samuel Zürcher new power of searchSamuel Zürcher new power of search
Samuel Zürcher new power of search
 
The new power of search
The new power of searchThe new power of search
The new power of search
 

Setup Skrip Makr Dokumentation

  • 1. 1 Plugin Konzept Dieses Kapitel beschreibt den Aufbau der konzipierten und erstellten Plugins. Ziel dieses Kapitels soll es sein, dem Lesenden Einblick in den Plugin-Aufbau zu geben und die definierten Plugin-Punkte zu Erläutern und etwaige Entscheidungspunkte beim Aufbau des Plugins herauszuarbeiten und darzustellen. In dem ersten Punkt dieses Kapitels soll die Zielstellung eines Plugins im Hinblick auf das Gesamtprojekt definiert werden. Die Frage die in diesem Kapitel aufkommt lautet: „Weshalb werden Plugins verwendet und wozu dienen sie?“. Ein Plugin stellt im Blick auf das Gesamtgefüge des Projektes „Setup Script Maker“ den Zielanwendungscode bereit. Ein Plugin enthält somit Quellcode der Zielsprache oder sogar der Zielsprachen. Die Struktur dieses Projektes „SetupSkriptMakr“ ist somit in zwei Teilbereichen zu untergliedern. Der erste Teilbereich, das Frontend, stellt die Anwendungsoberfläche dar. In dieser kann der Anwender seine Zielsprache definieren und das Skript zusammenbauen. Der zweite Teilbereich, die Plugins, stellen den Quellcode der Zielsprache bereit. Das Vorgehen lässt sich somit folgend beschreiben. Die Plugins werden von dem System eingelesen und die Struktur und die Inhalte gespeichert. Hat der Anwender die gewünschte Struktur seines zu erstellenden und auszugebenden Skriptes definiert und etwaige notwendig Angeben über z.B. Pfadparameter und Zielparamater, angegeben, wird der Zielquellcode des jeweiligen Plugins dem Anwenderanforderungen angepasst und als Gesamtskript in Form eines Batch oder zum Beispiel Shell Files ausgegeben. Der zweite Punkt dieses Kapitels, soll sich mit der Struktur des Plugins beschäftigen. In unserem Projekt standen zwei Plugin-Aufbaustrukturen zur Auswahl. 1. Ein Plugin enthält genau eine Quellzielsprache. Jedoch können in einem Plugin mehrere Aufgaben definiert werden. 2. Ein Plugin enthält mehrere Quellzielsprache. In einem Plugin befindet sich jedoch nur ein Aufgabentyp. Folgendes UML Klassendiagramm soll den Aufbau eines Plugins näher verdeutlichen. Abbildung 1. Pluginstruktur 1
  • 2. Abbildung 1 zeigt die oben beschriebene erste Möglichkeit zur Strukturierung eines Plugins. Abbildung 2. Pluginstruktur 2 In Abbildung 2 wird mit Hilfe eines UML Klassendiagramm die 2te mögliche Strukturierung eines Plugins beschrieben. In unserem Projekt wird ein Plugin als ein elementares Objekt betrachtet, welches eine bestimmte Aufgabe mit mehreren Quellzielsprachen bereitstellt. Die Entscheidung viel Aufgrund der besseren Strukturierung. Da in unserem Projekt die Gewichtung sehr stark auf den Aufgabenteil liegt, soll diese Gewichtung ebenfalls auf die Plugin-Struktur überführt werden. Im weiteren Verlauf wird der Plugin-Aufbau detaillierter betrachtet. Es werden die von uns definierten Plugin-Parameter und erläutert. Der Plugin-Aufbau wird mit der Extensible Markup Language [XML] beschrieben. Dabei ist XML eine Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten in Form von Textdaten. Eine Plugin-Hierarchie erfolgt mit dem Element [plugin] welches ein Attribut [id] enthält. Das Attribut [id] definiert dabei die Eindeutigkeit und Identität eines Plugin. Innerhalb des Elementes [plugin] existieren eine Vielzahl von weiteren Elementen, welche nachfolgend beschrieben werden. Das Element [name] beschreibt den Namen des Plugin, welcher dem Anwender im System angezeigt wird. Das Element [description] gliedert sich in die Unterelemente [short] und [long] auf. Das Element [description] ist für die weitere Beschreibung eines Plugin vorgesehen. Abbildung 3. Plugin Elemente Name und Beschreibung
  • 3. Das Element [authors] beschreibt die Ersteller oder Autoren des Plugin. Das Element [authors] kann Elemente vom Typ [author] enthalten Abbildung 4. Plugin Element Autoren Ein Autor besitzt hierbei die Element [name], [email], [homepage] und [nickname], welche die den Plugin-Ersteller eindeutig beschreiben. Das nachstehende Element [languagesupported] beinhaltet die vom Plugin bereitgestellten und angebotenen Zielsprachen. Ein Element [languagesupported] beinhaltet Elemente vom Typ [language]. Die Sprache welche durch das Element [language] definiert wird, wird durch die Elemente [name] und [platform] beschrieben. Abbildung 5. Plugin Element Angebotene Zielsprachen Das Element [dependencies] enthält mögliche Abhängigkeiten eines Plugins. Ein [dependencies] Element kann dabei mehrere Elemente vom Typ [dependency] enthalten. Das Attribut [typ] in dem Element [dependency] sagt aus, von welchem Typ die Abhängigkeit ist. Ein Typ kann dabei z.B. ein anderes Plugin oder eine Software sein. Betrifft die Abhängigkeit ein anderes Plugin, muss das Attribut [id] des Plugin angegeben werden. Eine Abhängigkeit besitzt die Elemente [description], welche die Abhängigkeit beschreibt, und [filename] oder [softwarename].
  • 4. Abbildung 6. Plugin Element Abhängigkeiten Das Element [parameters], beschreibt die Parameter welche der Quellzielcode erwartet. Ein Element [parameter] besitzt die Attribute [name] – Parameterbezeichnung, [type] – Typisierungsangabe des Parameters, [id] – Eindeutigkeitsschlüssel, [lenght] – Länge des zu übergebenden Parameters und [description] – Parameterbeschreibung. Abbildung 7. Plugin Element Parameter Das Element [codesnippets] enthält den Code der Aufgabe. Ein Element [codesnippets] kann Elemente vom Typ [codesnippet] beinhalten. Ein Element [codesnippet] muss ein Element [script] beinhalten, in dem der Quellzielcode eingebunden wird. Durch das Attribute [language] wird die Zielsprache angegeben und definiert. Das Element [script] kann ein Element vom Typ [imports] beinhalten, welches mögliche Importdateien einer Zielsprache beinhaltet. Abbildung 8. Plugin Element Quellzielcode
  • 5. Im folgende wird eine Tabelle dargestellt welche die verwendeten und angebotenen Quellzielsprachen und die implementierten Aufgaben aufzeigt. Id Aufgabe Zielsprachen Beschreibung 1. Ordner/File Löschen Windows Batch, Linux löscht einen Shell und Ruby bestehenden Ordner 2. Ordner/File Kopieren Windows Batch, Linux Kopiert einen Shell und Ruby bestehenden Ordner von A nach B 3. Ordner/File Verschieben Windows Batch, Linux Kopiert einen Shell und Ruby bestehenden Ordner von A nach B und löscht Ordner aus A 4. Ordner erstellen Windows Batch, Linux Erstellt einen Shell und Ruby Ordner 5. Ordnergröße ermitteln Windows Batch, Linux Ermittel die Größe Shell und Ruby eines bestehenden Ordners
  • 6. 2 XML Parser In diesem Kapitel soll der XML Parser betrachtet werden. Analog zu dem vorherigen Punkt, soll geklärt werden, was die Aufgabenstellung und der Zweck des Parser darstellen. In dem Kapitel [Plugin Konzept] wurde die Plugin-Konzeption und deren Ziel erläutert. Das Ziel oder die Aufgabe des Parser besteht darin, die definierten Inhalte des Plugin auszulesen und der Anwendung bereitzustellen. Da das Plugin mit Hilfe der Extensible Markup Language (XML) beschrieben wurde, wird zum auslesen eines bestehenden Plugin ein XML-Parser benötigt. Die Anwendung wurde mit der Sprache Ruby umgesetzt. Somit muss auch der zu definierende XML Parser mit Ruby entwickelt werden. Ruby stellt dem Entwickler eine Reihe von XML Parsern zur Verfügung. In unserem Projekt soll der XML Parser [hpricot] zum Einsatz kommen. Dieser Ruby XML Parser kann auf der Seite [http://wiki.github.com/why/hpricot/hpricot- xml] kostenfrei heruntergeladen werden. Die ausgelesenen Informationen sollen, lautet interner Zielsetzung, in Hashtabellen abgelegt werden. Folgenden Hashtabellen wurden hierbei angelegt. PluginDescription: In dieser Hashtabelle werden die Plugin-ID, der Plugin-Name, die Plugin-Kurz- und die Plugin-Langbeschreibung gespeichert. Authors: Diese Hashtabelle beinhaltet Hashtabelle vom Typ Author. Author: Eine Hashtabelle Author beinhaltet die Parameter Name, E-Mail, Homepage und Nickname des Authors. LanguageSupported: Diese Hashtabelle beinhaltet Hashtabelle vom Typ Language. Language: Diese Hashtabelle speichert die Informationen der definierten und angebotenen Sprachen. Die hier gespeicherten Parameter sind der Sprachenname und die Platform. DependenciesSoftware: Beinhaltet Hashtabellen vom Typ DependencySoftware. DependencySoftware: Speichert die Informationen der Abhängigkeitsbeschreibung und den Namen der Software. DependenciesFile: Beinhaltet Hashtabellen vom Typ DependencyFile.
  • 7. DependencyFile: Beinhaltet alle Informationen einen Plugin-Abhängigkeit. Diese sind die Plugin- Beschreibung und der Plugin-Name. ParametersInput: Beinhaltet Hashtabelle vom Typ ParameterInput. ParameterInput: Beinhaltet Parameter die den Parameterinput beschreiben. Diese sind der Name, Typ, ID, Lenght und die Beschreibung. ParametersOutput: Beinhaltet Hashtabelle vom Typ ParameterOutput. ParameterOutput: Beinhaltet Parameter die den Parameteroutput beschreiben. Diese sind der Name, Typ, ID, Lenght und die Beschreibung. CodeShell: Beinhaltet den Code der Quellzielsprache Shell. CodeBatch: Beinhaltet den Code der Quellzielsprache Batch. CodeRuby: Beinhaltet sowohl den Code der Quellzielsprache Ruby, als auch weitere Hashtabellen vom Typ RubyRequire. RubyRequire: In dieser Hashtabelle werden die von Ruby benötigten Bibliotheken gespeichert. Im nachfolgenden sollen die Schritte zum Auslesen eines Elementinhaltes Beispielhaft aufgezeigt werden. Um den [hpricot] XML Parser verwenden zu können, wird die Bibliothek [hpricot] verwendet. Anschließend wird das XML File durch den Befehl aufgerufen. Ein Attribut kann durch den Befehl ausgelesen werden. Mit Hilfe von [each do] Schleifen werden mehrere Elemente vom selben Typ durchlaufen und der Inhalt ausgelesen. Das Beispiel zum Auslesen der Unterstützten Programmiersprache soll dies verdeutlichen.
  • 8. Ist das Gesamte XML File durchlaufen, werden Methoden bereitgestellt die zur Verfügung stehenden Hashtabelle zu ermitteln.