Seminararbeit Erstellung dynamischer Templates anhand eines Datenbankmodells für ein webbasiertes „Decision Support System“ zur effizienten Kontrolle der Staubemissionen im Kohlentagebau Eingereicht von: Stefan Knauer Matrikelnummer: 844904 Studiengang: Scientific Programming 10.01.2013 Erstbetreuer: Yvonne Nix (M.Sc.) Zweitbetreuer: Lukas Bodych (MaTA) 0.1 Kurzfassung Abstract In dieser Seminararbeit wird das dynamische Erstellen von Templates anhand eines Datenbankmodells betrachtet. Diese Funktionsweise wurde speziell für die Entwicklung eines „Decision Support Systems“ benutzt. Das „Decision Support System“ dient Managern von Bergbaubetrieben bei Ihrem Entscheidungsprozess, Staubemissionen so zu verringern, dass sowohl Umweltfreundlichkeit als auch Kosteneffizienz optimiert werden können. Das „Decision Support System“ besteht aus zwei Teilmodulen, einmal dem Berechnungsmodul, welches Performanz- und Kostenparameter beinhaltet, und des Weiteren aus einem Anleitungsmodul in Form eines Media Wikis („Best Practice Guide“). Das Anleitungsmodul wird in dieser Arbeit jedoch nicht näher betrachtet. 1 Inhaltsverzeichnis 0.1 Kurzfassung.............................................................................................. 1 1. Einleitung und Motivation ....................................................................... 4 2. Grundlagen zu den angewandten Technologien ....................................5 2.1 Webapplikationen im Allgemeinen................................................. 5 2.2 HTML .............................................................................................. 6 2.3 PHP ................................................................................................. 6 2.4 MySQL ............................................................................................ 6 2.5 Smarty ............................................................................................ 8 3. Bergbautechnischer Hintergrund ...........................................................9 4. Ziele und Aufgaben.............................................................................. 11 5. 4.1 Der GUI-Entwurf als Entwicklungsgrundlage ................................ 11 4.2 Planung der Software als Webapplikation mit Datenbank ............ 14 Umsetzung im Projekt ......................................................................... 14 5.1 5.2 5.3 6. Datenbankmodell ......................................................................... 14 5.1.1 Projektdaten ............................................................. 16 5.1.2 Aktivitäten ................................................................ 16 5.1.3 Flächen (Areas) ......................................................... 17 5.1.4 Mitigationsmethoden und Kostenparameter ............ 17 5.1.5 Templatetypen ......................................................... 18 Die einzelnen Templates und deren Inhalt ................................... 19 5.2.1 Das Auswahltemplate ............................................... 19 5.2.2 Das Formulartemplate .............................................. 19 Ablaufsteuerung in PHP ................................................................ 20 Ausblick ............................................................................................... 22 2 Anhang Quellenverzeichnis ........................................................................................... 23 Abbildungsverzeichnis ...................................................................................... 24 Eidesstattliche Erklärung .................................................................................. 25 3 1. Einleitung und Motivation In der folgenden Seminararbeit liegt der Fokus auf der Generierung dynamischer Templates anhand eines Datenbankmodells. Somit kann der Inhalt, wie zum Beispiel Parameternamen und Werte, von technischen Elementen, wie Layout und Skripten getrennt werden und inhaltliche Anpassungen einfach durch Änderungen in der Datenbank umgesetzt werden. Das Ziel ist also eine einfache Erweiterbarkeit und die Möglichkeit zur Modifizierung bestehender Daten, vor allem auch von fachfremden Ingenieuren. So muss beim Hinzufügen neuer Methoden kein Template mehr speziell angepasst werden und vorhandene Skripte müssen nicht mehr geändert werden. Diese Methode wird spezifisch zur Entwicklung eines webbasierten „Decision Support Systems“ zur Staubemissionskontrolle im Kohlentagebau verwendet. Zum besseren Verständnis werden die einzelnen verwendeten Softwaretechniken im Allgemeinen vorgestellt und anschließend deren Umsetzung in der Entwicklung der Webapplikation erläutert. 4 2. Grundlagen zu den angewandten Technologien Das folgende Kapitel beinhaltet kurze Erklärungen zu der eingesetzten Software und deren Verwendung im Allgemeinen. 2.1 Webapplikationen im Allgemeinen Die typische Nutzung einer Webapplikation läuft prinzipiell so ab, dass ein Client eine Anfrage (HTTP-Request) durch Aufruf einer URL im Browser an einen Webserver stellt. Die Anfrage wird vom Server entgegengenommen, der mit Hilfe einer Skript- oder Programmiersprache, Daten entsprechend der Anfrage aus verschiedenen Quellen abruft. Diese Daten werden dann an durch Platzhalter definierte Stellen in ein vorgefertigtes Dokument eingefügt, das sogenannte Template. Das fertig erstellte HTML-Dokument schickt der Webserver dann zurück zum Client (HTTP-Response), dessen Browser den empfangenen Inhalt dann darstellt. Abbildung 1 Client-Server Schema (Quelle: http://de.wikipedia.org/wiki/Webanwendung) 5 2.2 HTML Die Bezeichnung HTML steht für “HyperText Markup Language“ und ist eine im Web verwendete, textbasierte Auszeichnungssprache zur Strukturierung von Inhalten wie Texten, Bildern und Hyperlinks in Dokumenten1. Durch Verwendung sogenannter Tags können Zeilenumbrüche, Block- und Containerelemente, Formulare, Tabellen und Listen erstellt werden, die der Browser interpretiert und darstellt. 2.3 PHP PHP (früher „Personal Home Page“ jetzt „PHP Hypertext Processor“) ist eine Skriptsprache, dessen Syntax an die von C und Perl angelehnt ist. PHP wird hauptsächlich zur Erstellung dynamischer Webseiten und Webanwendungen verwendet2, wobei 78,7% aller Webseiten PHP als serverseitige Programmiersprache benutzen3. Die sogenannten PHP Skripte sind in der Regel kleinere Programme, die auf dem Webserver abgearbeitet werden und dem User die von ihm angeforderten Daten bzw. den anzuzeigenden Inhalt aus unterschiedlichen Quellen sammeln und aufbereiten. Weiterhin zeichnet sich PHP durch eine breite Datenbankunterstützung4 und die Verfügbarkeit zahlreicher Funktionsbibliotheken aus5. 2.4 MySQL MySQL ist eines der am weitesten verbreiteten relationalen Datenbankverwaltungssysteme6. Es bildet die Grundlage für viele dynamische Webseiten und wird häufig in Verbindung mit dem Webserver Apache und der Skriptsprache PHP eingesetzt. MySQL hat laut Forrester die größte 1 http://de.wikipedia.org/wiki/Hypertext_Markup_Language http://de.wikipedia.org/wiki/PHP 3 http://w3techs.com/technologies/overview/programming_language/all 4 http://www.php.net/manual/de/refs.database.php 5 http://de.php.net/extensions 6 http://de.wikipedia.org/wiki/MySQL 2 6 Marktbedeutung im Open-Source-Datenbankmarkt7. Einsatzgebiet ist die Datenspeicherung für Webservices. Das bevorzugte Ein Datenbanksystem (DBS) wie MySQL besteht aus einer oder mehrerer Datenbanken (DB) und einem Datenbankmanagementsystem (DBMS)8. Eine relationale Datenbank besteht aus Tabellen, in denen Daten in vorgegebenen Datentypen gespeichert werden können. Bei der Erstellung einer Tabelle wird die Struktur festgelegt, also die Anzahl der Spalten mit ihren jeweiligen Namen (Attribute), sowie der jeweilige Datentyp (INT, DOUBLE, VARCHAR, BLOB, etc.). Es können bestimmte Zwangsbedingungen, die sogenannten „Contraints“, auf Attribute gelegt werden, wie beispielsweise „Primary Key“, welcher zur eindeutigen Identifizierung einer Zeile (eines Datensatzes) dient. Weiterhin gibt es sogenannte „Foreign Key“-Contraints, wobei ein Attribut einer Tabelle auf ein anderes Attribut in einer anderen Tabelle verweist und somit eine logische Verknüpfung von Tabellen realisiert werden kann. Durch eine „Foreign Key“Option kann dafür gesorgt werden, dass bei einer Änderung oder beim Löschen eines Attributs in einer referenzierten Tabelle die gleichen Änderungen auch in der aktuellen Tabelle übernommen werden. Das DBMS sorgt für die Einhaltung der Contraints und ermöglicht einen reibungslosen Ablauf von Transaktionen. Die Abfragesprache SQL (Structured Query Language) ermöglicht das Erstellen von Tabellen, das Einfügen, Löschen und Ändern von Datensätzen (Updates) und die Abfrage von Datensätzen (Queries). In unserem Fall wird ein PHP-Skript benutzt um eine Datenbankverbindung herzustellen. Des Weiteren kann man somit Abfragen und Aktualisierungsanforderungen an die Datenbank schicken und die Daten weiter verwerten. 7 8 http://www.mysql.de/why-mysql/marketshare/ Skript zur Vorlesung Datenbanken 2005 Sylvia Sieprath 7 2.5 Smarty Smarty ist eine Template-Engine für PHP, und soll die Anzeige (durch HTML und CSS) von der Anwendungslogik trennen. Eine Template-Engine sorgt dafür, dass in einer Datei befindliche Platzhalter (in diesem Fall Smarty-Variablen) dynamisch mit Werten gefüllt werden können9. Damit vermeidet man, dass im PHP-Skript Zeilen, wie echo“<table name=\“tabelle\“>; gefolgt von Logik, wie zum Beispiel einer Schleife, die die einzelnen Tabellenzeilen ausfüllt foreach($array as $element) echo“<td>$element</td>“; wiederholt auftauchen. Smarty selbst verfügt über rudimentäre Logik- und Schleifenoperationen und ermöglicht ein einfaches Einbinden von HTML-Dokumenten. Innerhalb der Dokumente kann mittels eigener Syntax auf die im PHP-Skript zugewiesenen Variablen zugegriffen werden. 9 http://www.smarty.net/about_smarty 8 3. Bergbautechnischer Hintergrund Das folgende Kapitel behandelt den bergbautechnischen Hintergrund um einen Einblick in die Problematik der Staubemissionen im Tagebau zu bekommen. Die Kohlegewinnung im Tagebau erfolgt entweder im Bohr- und Sprengverfahren oder im sogenannten Reißverfahren. Beim Bohr- und Sprengverfahren werden zuerst Sprengbohrlöcher in das Flöz gebohrt, welche anschließend mit Sprengstoff beladen werden. Anschließend erfolgt die Sprengung der abzubauenden Kohle. Im Reißverfahren hingegen wird die Kohle mit speziellen Betriebsmitteln aus dem Kohlenflöz gelöst und anschließend mit Baggern verladen. Bei beiden Verfahren entstehen somit sehr viele Emissionen, wie beispielsweise Staub, die die Umwelt und Gesundheit stark gefährden können. Abbildung 2 Kohlentagebau in Vietnam (Quelle: Institut für Bergbaukunde 1, RWTH Aachen) 9 Um die Staubemissionen zu reduzieren, gibt es für jede Bergbauaktivität, bei der Staub entstehen kann, eine oder mehrere Staubverminderungsmethoden. Zum Beispiel kann beim Transport der Kohle eine übermäßige Staubentwicklung verringert werden, indem die Transportwege asphaltiert werden, oder alternativ die Fahrbahnen mit Wasser, welches den Staub bindet, besprüht werden. Dabei weisen die verschiedenen Staubverminderungsstrategien unterschiedliche Emissionsreduzierungsfaktoren, diverse Anschaffungs- und Unterhaltskosten auf. Alle Parameter, die sowohl in den Aktivitäten, Staubverminderungsstrategien und Kosten aufzufinden sind, besitzen evaluierte Standardwerte (Default Parameter), sollen jedoch auch individuell an das eigene Unternehmen anpassbar sein. Das „Decision Support System“ soll dem Benutzer dabei helfen, aus der Vielzahl der Möglichkeiten eine passende Lösung für das eigene Bergbauunternehmen zu finden, um somit eine langfristige Planung der Staubminderungsstrategien zu realisieren. 10 4. Ziele und Aufgaben Im folgenden Abschnitt werden die Ziele und Aufgaben für das Softwareprojekt definiert und erläutert. 4.1 Der GUI-Entwurf als Entwicklungsgrundlage Der GUI-Entwurf der Ingenieure soll als grobe Richtlinie zur Entwicklung der Templates dienen. Daraus lassen sich strukturelle und inhaltliche Aspekte erschließen, die zur Anforderungsanalyse dienen. Abbildung 3 GUI-Entwurf: Projektdaten (Quelle: Institut für Bergbaukunde 1, RWTH Aachen) Die in der Abbildung gezeigte Eingabemaske für die Projektdaten besteht aus 3 Modulen: - allgemeine Projektinformationen - Informationen zu dem Bergbauunternehmen - und lokale Daten. 11 Abbildung 4 GUI-Entwurf: Aktivitätsauswahlfenster (Quelle: Institut für Bergbaukunde 1, RWTH Aachen) Im Aktivitätsauswahlfenster kann der Benutzer zwischen verschiedenen Aktivitäten wählen, welche in seinem Unternehmen auch tatsächlich benutzt werden. Beispielsweise gibt es diverse Methoden um die abgebaute Kohle zu transportieren, entweder per Förderband oder mittels eines Transportlasters. 12 Abbildung 5 GUI-Entwurf: Mitigationsmethoden (Quelle: Institut für Bergbaukunde 1, RWTH Aachen) Nach Auswahl der Aktivitäten hat der Benutzer die Möglichkeit, für eine spezifische Aktivität, eine oder mehrere Flächen festzulegen, in der diese Aktivität stattfindet und dort die benötigten Flächendaten einzutragen. Weiterhin können eine oder mehrere Staubminderungsmethoden, die für die gewählte Aktivität und die festgelegten Flächen benutzt werden soll, ausgewählt werden und die Standardparameter für die Staubminderungsmethoden angepasst werden. 13 4.2 Planung der Software als Webapplikation mit Datenbank Ziel dieses Softwareprojektes ist eine integrierte Webapplikation mit MySQL Datenbank. Die Vorteile eines webbasierten „Decision Support Systems“ sind: - keine lokale Installation nötig keine lokalen Softwareupdates notwendig plattformunabhängig Änderungen / Updates können zentral verwaltet und überwacht werden Ingenieure können die aktuellen Ergebnisse aus Forschung und Entwicklung in das „Decision Support System“ einfließen lassen Die eingegebenen Daten des Benutzers sollen in der Session gespeichert, serialisiert und dann in der Datenbank abgelegt werden, um Datenpersistenz sicherzustellen. Die Session kann dann durch Deserialisierung der Daten aus der Datenbank wiederhergestellt (geladen) werden. Weiterhin sollen dynamische Templates benutzt werden, deren Struktur und Inhalt aus der Datenbank generiert werden. Ein großer Vorteil besteht darin, dass bei Änderungen von Formularen oder Parametern durch die Ingenieure nur das Datenbankmodell geändert werden muss, um dadurch das manuelle Anpassen der Skripte weitestgehend vermeiden zu können. 5. Umsetzung im Projekt Der folgende Abschnitt befasst sich mit der softwaretechnischen Umsetzung der Anforderungen und Ziele im Projekt. 5.1 Datenbankmodell 14 Abbildung 6 Datenbankmodell vollständig (MySQL Workbench 5.2 CE) 15 5.1.1 Projektdaten Abbildung 7 Projektdatentabellen (MySQL Workbench 5.2 CE) Tabellen: project, mining info, local info, meteorological info Die Projektdaten werden semantisch in Tabellen untergliedert, so dass die Ingenieure später leichter Änderungen in den verschiedenen Modulen vornehmen können. Die Tabelle „project“ besteht beispielsweise aus folgenden Spalten: einem Primärschlüssel „ID“, einem Namen für das Projekt, einem Start und Enddatum für das Projekt, einem Gesamtbudget und einer Spalte für die Währung, in welcher später gerechnet werden soll. Die Wahl des Datentyps der einzelnen Spalten bestimmt den HTML-Input-Typ im Template und ist daher entscheidend für die Darstellung verantwortlich. Die Spalte „currency“ hat zum Beispiel den Datentyp „ENUM“, der dann im Template als HTML-Radio-Button erscheint. 5.1.2 Aktivitäten Abbildung 8 Aktivitätstabellen (MySQL Workbench 5.2 CE) Tabellen: activity category, activity subcategory, activity 16 Die Aktivitäten werden in Kategorien, Subkategorien und in die einzelnen Aktivitäten untergliedert und mit Hilfe von Mappingtabellen semantisch miteinander verknüpft, um die aufeinanderfolgenden Auswahlmöglichkeiten im Template steuern zu können. 5.1.3 Flächen (Areas) Abbildung 9 Flächentabelle (MySQL Workbench 5.2 CE) Tabelle: „areas“ Die Tabelle „areas“ beinhaltet Namen und Messdaten der Flächen, in denen Aktivitäten stattfinden. Eine Aktivität kann 1 bis n Flächen „benutzen“ und ist daher in einer Mappingtabelle mit der Aktivitätstabelle verbunden. 5.1.4 Mitigationsmethoden Kostenparameter (Staubminderungsmethoden) Abbildung 10 Mitigationsmethoden- und Parametertabelle (MySQL Workbench 5.2 CE) 17 und Tabellen: mitigation methods, mitmet param values Die Tabelle “mitigation_methods” beinhaltet die Namen aller Staubminderungsmethoden, den Typ dieser Methoden und deren Emissionsreduzierungsfaktoren. Die Tabelle „mitmet_param_values“ beinhaltet alle zu den Mitigationsmethoden zugehörigen Kostenparameter, deren Standardwerte (default values) und deren Einheit. Die Mitigationsmethodentabelle ist mit Hilfe einer Mappingtabelle mit der Aktivitätstabelle verbunden, um so mittels ID die zu einer Aktivität gehörigen Staubminderungsmethoden zu speichern. 5.1.5 Templatetypen Abbildung 11 Templatetypentabelle (MySQL Workbench 5.2 CE) Tabelle: template type Die Tabelle Template Type bestimmt, ob aus einer Tabelle ein Template generiert werden kann und von welchem Typ dieses Template sein soll. Die verschiedenen Templatetypen werden als „ENUM“ abgespeichert. Aus der Tabelle „project“ wird beispielsweise ein Formulartemplate erzeugt, aus der Tabelle „activity_category“ wird ein Selectiontemplate generiert. 18 5.2 Die einzelnen Templates und deren Inhalt 5.2.1 Das Selectiontemplate (Auswahlvorlage) Das Selectiontemplate bietet eine einfache Auswahlmöglichkeit, indem die auswählbaren Felder als Hyperlink aufgelistet und dargestellt werden. So kann der Benutzer zwischen den einzelnen Webseiten navigieren. Mittels SQL Query werden die Tabellenspalten geholt, in ein Array gespeichert, Smarty zugewiesen und dann mit einer foreach Schleife durchlaufen und im Template als HTML-Hyperlink dargestellt. 5.2.2 Das Formtemplate (Formularvorlage) Bei dem Formtemplate wird aus einer Datenbanktabelle ein HTML-Formular generiert und in das Template geladen. Die Struktur der Tabelle bestimmt somit das Aussehen des HTML-Formulars, indem alle Spaltennamen der Tabelle (bis auf Ausnahmen, wie zum Beispiel „ID“) als Label im Formular dargestellt werden. Direkt neben dem Label befindet sich dann ein HTML-Inputfeld, in welches der Benutzer Werte eintragen, oder eine Auswahl treffen kann. Die Art der Inputfelder wird dabei vom Datentyp in der Datenbank festgelegt. Falls der Datentyp „ENUM“ entspricht, wird ein HTML-Radio-Button mit den StringWerten des „Enums“ aus der Datenbank erzeugt. Wenn der Datentyp „INT“ oder „DOUBLE“ entspricht, wird daraus ein HTML Inputfeld des Typs „number“ erzeugt, andernfalls wird der HTML Inputtype auf „text“ gesetzt. Abbildung 12 Codebeispiel aus der Datei „Template.html“ (NetBeans 7.1) 19 5.3 Ablaufsteuerung in PHP In der Datei index.php wird im GET Parameter der URL nach der aktuell darzustellenden Seite gesucht und entsprechende Aktionen, wie zum Beispiel Projekt auswählen oder Projekt laden behandelt, indem benötigte Datenbankzugriffe ausgeführt, die Inhalte Smarty Variablen zugewiesen und im Template dargestellt werden. Abbildung 13 Codebeispiel aus der Datei „index.php“ (NetBeans 7.1) In der Datei acceptFormular.php wird im GET Parameter nach der Seite gesucht, von welcher der Benutzer kommt, dann ein neuer GET Parameter mittels header(„Location: ../../index.php?current=“neuer GET Parameter“) angehangen und das darauffolgende Template geladen. Somit kann der Ablauf der Templates gesteuert werden. Beispielsweise soll der Benutzer nach Eingabe der Projektdaten zum Auswahltemplate für die Aktivitätskategorien gelangen, also wird in der Datei acceptFormular.php die Variable $from in einem Switch Block überprüft und falls $from „project“ entspricht, die Funktion header(„Location: ../../index.php?current=selectActivityCategory“); ausgeführt und dadurch das Template geladen. 20 Abbildung 14 Codebeispiel aus der Datei „acceptFormular.php“ (NetBeans 7.1) 21 6. Ausblick Mit dieser Webapplikation und der Verwendung dynamischer Templates ist eine benutzerfreundliche Planung der Staubminderungsmethoden für Tagebauunternehmen möglich. Da die Ingenieure eine Möglichkeit brauchen, ohne Programmierkenntnisse inhaltliche Änderungen im „Decision Support System“ vornehmen zu können, ist ein Backend zur Steuerung der Datenbankeinträge geplant. Somit können später einzelne Werte geändert, Methoden angepasst und Parameter hinzugefügt werden. Weiterhin könnte man bei Bedarf der Applikation neue Funktionalitäten hinzufügen, wie zum Beispiel Ergebnisse als PDF exportieren oder Ergebnisse/Datenblätter per E-Mail versenden. 22 Quellenverzeichnis http://de.wikipedia.org/wiki/Webanwendung http://de.wikipedia.org/wiki/Hypertext_Markup_Language http://de.wikipedia.org/wiki/PHP http://w3techs.com/technologies/overview/programming_language/all http://www.php.net/manual/de/refs.database.php http://de.php.net/extensions http://de.wikipedia.org/wiki/MySQL http://www.mysql.de/why-mysql/marketshare/ Skript zur Vorlesung Datenbanken 2005 Sylvia Sieprath (rz.rwth-aachen.de) http://www.smarty.net/about_smarty Institut für Bergbaukunde I, RWTH Aachen University 23 Abbildungsverzeichnis Abbildung 1 – Client-Server Schema .................................................................. 5 Abbildung 2 – Kohlentagebau in Vietnam .......................................................... 9 Abbildung 3 – GUI-Entwurf: Projektdaten ........................................................ 11 Abbildung 4 – GUI-Entwurf: Aktivitätsauswahlfenster ..................................... 12 Abbildung 5 – GUI-Entwurf: Mitigationsmethoden .......................................... 13 Abbildung 6 – Datenbankmodell vollständig .................................................... 15 Abbildung 7 – Projektdatentabellen ................................................................. 16 Abbildung 8 – Aktivitätstabellen ...................................................................... 16 Abbildung 9 – Flächentabelle ........................................................................... 17 Abbildung 10 – Mitigationsmethoden- und Parametertabelle ......................... 17 Abbildung 11 – Templatetypentabelle ............................................................. 18 Abbildung 12 – Codebeispiel aus der Datei „Template.html“ ........................... 19 Abbildung 13 – Codebeispiel aus der Datei „index.php“ .................................. 20 Abbildung 14 – Codebeispiel aus der Datei „acceptFormular.php“ .................. 21 24 Eidesstattliche Erklärung Hiermit versichere ich, dass ich die Seminararbeit mit dem Thema Erstellung dynamischer Templates anhand eines Datenbankmodells für ein webbasiertes „Decision Support System“ zur effizienten Kontrolle der Staubemissionen im Kohlentagebau Selbstständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt habe, alle Ausführungen, die anderen Schriften wörtlich oder sinngemäß entnommen wurden, kenntlich gemacht sind und die Arbeit in gleicher oder ähnlicher Fassung noch nicht Bestandteil einer Studien- oder Prüfungsleistung war. 25