Bachelorarbeit. Entwicklung einer Applikation zur Erfassung und Ausgabe von Titrationsmessdaten als webbasierter Workflow

Größe: px
Ab Seite anzeigen:

Download "Bachelorarbeit. Entwicklung einer Applikation zur Erfassung und Ausgabe von Titrationsmessdaten als webbasierter Workflow"

Transkript

1 Bachelorarbeit Entwicklung einer Applikation zur Erfassung und Ausgabe von Titrationsmessdaten als webbasierter Workflow Fachbereich Elektrotechnik und Informatik Fachrichtung Angewandte Informatik Name: Alexander Kuhn Matrikelnummer: Erstellt bei: Miele & Cie. KG in Gütersloh Erstprüfer: Zweitprüfer: Prof. Dr. rer. nat. Nikolaus Wulff, FH Münster Dipl.-Ing. Andreas Tono, Miele & Cie. KG

2 Danksagung Mein erster Dank gilt Herrn Prof. Dr. rer. nat. Nikolaus Wulff für seine Unterstützung und die Betreuung meiner Arbeit. Des Weiteren bedanke ich mich bei meinem Mitarbeiter und Miele internen Betreuer Herrn Dipl.-Ing. Andreas Tono für seine hilfreichen konstruktiven Kommentare und die angenehme Zusammenarbeit. Mein besonderer Dank gilt meiner Familie und meiner Freundin, auf die ich mich zu jeder Zeit verlassen kann und die hierdurch wesentlich zum Erfolg dieser Arbeit beigetragen haben. Weiterhin bedanke ich mich bei allen anderen Personen die mich bei der Anfertigung dieser Arbeit in unterschiedlicher Weise unterstützt haben. II

3 Eidesstattliche Erklärung Hiermit versichere ich, dass ich die vorliegende Arbeit selbstständig angefertigt und dabei nur die angegebenen oder bei Zitaten kenntlich gemachten Quellen und Hilfsmittel verwendet habe. Ennigerloh, den Alexander Kuhn III

4 Sperrvermerk Der Inhalt dieser Bachelorarbeit unterliegt der Geheimhaltung. Ohne die ausdrückliche Zustimmung der Firma Miele & Cie. KG ist die Veröffentlichung, Vervielfältigung oder Weitergabe an Dritte nicht gestattet. IV

5 Abstract Diese Bachelorarbeit wurde bei der Firma Miele & Cie. KG in Gütersloh im Zeitraum von Juli bis September 2011 erstellt und stellt den Abschluss meines Bachelorstudienganges Angewandte Informatik an der Fachhochschule Münster dar. In der Firma Miele wird ein neues System (ProLab) zur Verwaltung von Prüfungen eingeführt. Diese Bachelorarbeit ist ein Teilprojekt des Großprojekts ProLab. Inhalt dieser Bachelorarbeit ist die Konzeption und die Implementierung einer Web- Applikation, die als Modul in das Großprojekt eingebunden wird. Die Applikation soll Messdaten der Titrationsvorgänge erfassen und als webbasierten Workflow dem Anwender zur Verfügung stellen. Zunächst einmal werden die Grundlagen und Techniken, die für die Realisierung des Projekts benötigt werden, genannt. Im Anschluss wird der derzeitige Prüfprozess des Labors für Verfahrensprüfung vorgestellt und analysiert. Darauf aufbauend wird das von mir erstellte Lösungskonzept, welches den derzeitigen Prozess ersetzten soll, dargestellt. Danach wird das von mir zu implementierende Modul Titration vorgestellt. Es werden Masken aus der Web-Applikation gezeigt, die die Implementierung verdeutlichen sollen. Zum Schluss gibt ein Fazit Aufschluss darüber, in wie weit sich mein entwickeltes Modul auf das Großprojekt und die Prüflabore auswirkt. V

6 Inhaltsverzeichnis 1 Einleitung Unternehmensprofil Abteilung KEW und LD Hintergrund und Motivation Zielsetzung Gliederung der Arbeit 3 2 Grundlagen Miele Prüfungsverwaltungssystem LabDB ProLab Sprachen Java HTML CSS JSP SQL Server und Applikationen Apache Tomcat Informix Datenbank Netbeans Prozessanalyse Derzeitiger Prüfprozess im Labor VP Datenverarbeitung Prozessablauf Bewertung des aktuellen Prozesses Konzeption.. 28 VI

7 4.1 Analyse der Technik Dateneingabe Datenausgabe Anforderungen Konzeptionelle Anforderungen Technische Anforderungen Entwurf PC-System & die Schnittstelle Com-Server Modul Titration Applikation zur Netzwerkkommunikation Implementierung Organisatorisches Vorgehensmodell Eingesetzte Technologie und Werkzeuge Allgemeine in ProLab verwendete Techniken Include-Dateien JavaBeans in JSP-Seiten Datenbankverbindung Zugangskontrolle Label Modul Titration Messdatenerfassung Titrationsverwaltung 71 6 Test Verifikation mit JUnit Tests Validierung des Moduls Titration Fazit und Ausblick 87 8 Abbildungsverzeichnis 89 VII

8 9 Listingverzeichnis Tabellenverzeichnis Literaturverzeichnis.. 92 VIII

9 1 Einleitung In diesem Abschnitt der Bachelorarbeit erfolgt ein kurzer Einblick in das Unternehmen Miele und in die Abteilung Konstruktion und Entwicklung. Anschließend wird der Hintergrund und die Motivation sowie die Zielsetzung der Arbeit beschrieben und eine kurze Erläuterung zur Gliederung gegeben. 1.1 Unternehmensprofil Die Firma Miele & Cie. KG wurde am 01. Juli 1899 von Carl Miele und Reinhard Zinkann gegründet. Das Unternehmen begann zunächst mit der Fertigung von Milchzentrifugen in Herzebrock bei Gütersloh. Im Laufe der Zeit spezialisierte sich die Firma Miele auf die Produktion von Haushaltsgeräten. Heute ist Miele einer der führenden Hersteller in diesem Produktbereich. Immer Besser, so lautet das Firmenmotto von Miele. Seit der Gründung des Unternehmens haben Qualität und Langlebigkeit der Produkte die höchste Priorität. [1] Die Produktpalette umfasst neben Geräten zur häuslichen Wäschepflege, wie Waschvollautomaten, Wäschetrockner und Bügelmaschinen auch Küchengeräte, wie Geschirrspüler, Herde, Backöfen, Dampfgarer, Kochfelder, Kühl- und Gefrierschränke, Dunstabzugshauben, Mikrowellen, Kaffeevollautomaten und Staubsauger. Zudem bietet Miele die meisten der oben aufgezählten Geräte auch in Gewerbeversionen für den professionellen Einsatz an. Im Gütersloher Hauptwerk werden derzeit jährlich knapp eine Million Waschautomaten, eines der Kernprodukte, in verschiedenen Modellen, Ausstattungen und Ländervarianten produziert. [2] Das Familienunternehmen Miele ist an insgesamt elf Standorten vertreten, von denen acht Werke innerhalb Deutschlands und jeweils eins in Österreich, Tschechien und China liegen. Es werden zurzeit ca Mitarbeiter (Stand: Juni 2010), davon mehr als in Deutschland, beschäftigt. [1] 1

10 1.2 Abteilung KEW und LD Mit eigenen Vertriebsgesellschaften in 37 Ländern und durch zusätzliche Importeure ist Miele auf der ganzen Welt vertreten. Im Geschäftsjahr 2009/2010 wurde ein Umsatz von 2,83 Milliarden Euro erzielt. Das Unternehmen gehört seit der Gründung 1899 den Inhaberfamilien Miele und Zinkann, heute bereits in der vierten Generation. [1] 1.2 Abteilung KEW und LD Die Gruppe Labordienstleistungen (LD) ist der Konstruktion und Entwicklung (KEW) im Werk Gerätefertigung in Gütersloh untergeordnet. Es werden für die gesamte KEW Messgeräte und Software bereitgestellt und komplette Mess- bzw. Prüfplätze von der Gruppe LD eingerichtet. Des Weiteren bietet die Gruppe LD einige datenbank-basierende Dienstleistungen zur Speicherung von Messdaten und zur Zustands-visualisierung der Prüfplätze an. Der Second Level Support für IT- Probleme innerhalb der KEW wird ebenfalls von der Gruppe LD abgedeckt. Im Bereich Labordienstleistungen wird meine Bachelorarbeit durchgeführt. 1.3 Hintergrund und Motivation In der Firma Miele & Cie. KG werden, wie in zahlreichen anderen Unternehmen auch, Labore zur Entwicklung von neuen Produkten sowie zur Weiterentwicklung und Qualitätssicherung bereits bestehender Produkte betrieben. In diesen Laboren finden sowohl Prüfungen von Geräten während der Entwicklung als auch serienbegleitende Prüfungen statt. Dazu zählen auch Langzeitprüfungen, wie z.b Waschzyklen über ca. 2 Jahre für einen Waschautomaten. Es resultieren daraus große Mengen an Messdaten, welche dauerhaft, effizient und widerspruchsfrei gespeichert und verwaltet werden müssen. Um die einzelnen Prüfungen und die damit anfallenden Messdaten einfacher und strukturierter zu verwalten, wird zurzeit ein neues und für alle Labore identisches System (ProLab) zur Durchführung und Verwaltung der Prüfungen entwickelt. 2

11 1.4 Zielsetzung Die Verwaltung der Prüfaufträge geschieht mit Hilfe der Software Labordatenbank. Diese wurde von der Firma Werum Software & Systems AG, welche sich auf Messdatenmanagementsysteme und kundenspezifische IT-Lösungen spezialisiert hat, in Lüneburg entwickelt. [3] Der Labormitarbeiter arbeitet mit der Software ProLab, die ihn bei der Durchführung der Prüfung unterstützt. ProLab ist eine Eigenentwicklung der Firma Miele und wird derzeit erweitert. Unter den vielen Laboren ist das Labor Verfahrensprüfung für die Titrationsprüfung und der Erfassung der Titrationsmessdaten zuständig. Die Messdatenerfassung ist Kernpunkt meiner Bachelorarbeit. 1.4 Zielsetzung Diese Arbeit befasst sich mit dem Labor Verfahrensprüfung, speziell mit der Prüfung Titration. Im Folgenden geht es um die Umstellung einer zuvor manuellen Erfassung von Titrationsmessdaten auf eine teilweise automatisierte Erfassung und Verwaltung dieser Daten mit Hilfe der Software-Lösung ProLab. Die Realisierung erfolgt als ein webbasiertes Workflow-Modul, welches in das ProLab-System eingebunden wird. 1.5 Gliederung der Arbeit Auf den folgenden Seiten werden zunächst die Grundlagen und Techniken erläutert, die für die Realisierung des Projekts benötigt werden. Im Anschluss erfolgt eine Analyse der Prüfungsumgebung und der derzeitigen Vorgehensweise eines Labormitarbeiters beim Prüfungsverfahren Titration. Des Weiteren wird der bestehende Prüfprozess bewertet und ein Konzept zur Umstellung des Prozesses auf das neue System ProLab vorgestellt. Zum Schluss werden die Implementierung des Konzepts sowie die bei der Realisierung angewendeten Testverfahren erläutert. 3

12 2 Grundlagen Um ein Software-Modul zur Erfassung und Auswertung von Titrationsmessungen in einer zentralen Webanwendung wie ProLab konzeptionieren und realisieren zu können, werden verschiedene Sprachen und Technologien verwendet. Diese grundlegenden Techniken sollen in diesem Abschnitt der Arbeit kurz erläutert werden. 2.1 Miele Prüfungsverwaltungssystem Wie bereits zu Beginn der Arbeit erwähnt, werden bei Miele zahlreiche Prüfungen in den Laboren durchgeführt. Dabei werden zum einen Prüfungen von Seriengeräten durchlaufen, wie z.b. das Prüfen der Lebensdauer und Waschwirkung für die Qualitätssicherung, und zum anderen Prüfungen im Bereich der Forschung, um neue Entwicklungen zu testen und näher zu untersuchen. Prüfaufträge werden im System Labordatenbank (LabDB) und die zu einem Prüfauftrag gehörenden Prüfungen im System ProLab verwaltet. Beide Systeme sollen zunächst einmal erläutert werden LabDB Von der Firma Werum wurde eine auf der Hypertest-Plattform [4] basierende Software für das Unternehmen Miele entwickelt, welches die Verwaltungsebene als Prüfauftragsverwaltungssoftware abdeckt. Diese Software heißt Labordatenbank oder kurz: LabDB (s. Abb Miele Labordatenbank). Die Hypertest-Plattform kommt in einigen Laboren, wie z.b. der Autoindustrie oder Luftfahrtindustrie, zum Einsatz und wurde speziell zur Verwaltung von Prüfaufträgen und allen dazugehörigen Komponenten, wie Prüfobjekten oder Prüfreihen, entworfen. Des Weiteren sind eine Benutzerverwaltung und ein rollenbasiertes Rechte-Management integriert. Die Rollen entsprechen den Aufgaben der Mitarbeiter. So existieren z.b. Rollen für Auftragnehmer und -geber oder verschiedene Rollen zur Stammdatenpflege. 4

13 2.1 Miele Prüfungsverwaltungssystem Abb Miele Labordatenbank Technik Die grundlegende HyperTest-Software ist eine vollständig in Java entwickelte Applikation. Diese verwendet das relationale Datenbankmanagementsystem der Firma Oracle als Persistenzschicht. Darauf aufbauend wurde für das Unternehmen Miele eine speziell auf die geforderten Geschäftsprozesse angepasste Version der HyperTest-Software in einer längeren Entwicklungsphase erstellt. Diese Version ist die LabDB. Um den Mitarbeitern die LabDB zur Verfügung stellen zu können, wird die Applikation über den Java-Webstarter ausgeführt. Dieser ermöglicht das Starten von Java- Anwendungen über ein Netzwerk mit Hilfe eines Webbrowsers. Die Java- Anwendungen selbst benötigen dabei keinen Browser um lauffähig zu sein, da diese auf der Java Virtual Machine lokal ausgeführt werden können. Der Java-Webstarter lädt die entsprechende Anwendung, in unserem Fall die LabDB, vom Server und startet sie lokal auf dem benötigten System. Dabei wird vorher geprüft, ob bereits eine Kopie der Anwendung auf dem lokalen System vorliegt und ob diese Version sich im aktuellen Zustand befindet. 5

14 2.1 Miele Prüfungsverwaltungssystem Sind beim Start der Anwendung die serverseitige und die lokale Version identisch, dann wird die lokale Version sofort gestartet. Im anderen Fall findet eine Aktualisierung der lokalen Version statt, bei der ein Download auf das lokale System erfolgt. Dieses Verfahren vereinfacht die Pflege der Anwendung, da Aktualisierungen nur an einer Stelle durchgeführt und nicht an viele Rechner verteilt werden müssen. Die Oracle-Datenbank, die der LabDB zugrunde liegt, wird von der zentralen Miele IT zur Verfügung gestellt. Funktionsweise Die Nutzung der LabDB erfolgt hauptsächlich von Auftraggebern, z.b. anderen Laboren. Der Auftraggeber erstellt zunächst einmal einen Prüfauftrag in der LabDB. In dem Prüfauftrag werden zum einen die Prüfaufgabe und zum anderen die Verwaltungsdaten wie Innenauftrag oder Zieltermin festgelegt. Dabei wählt der Auftraggeber aus einem bereits vorgegebenen Katalog von möglichen Aufgaben die entsprechende Prüfaufgabe aus. Solch einem Prüfauftrag muss der Auftraggeber mindestens ein Prüfobjekt zuweisen. Dabei kann er ein bereits existierendes oder ein ganz neues Prüfobjekt, welches geprüft werden soll, erstellen. Es ist jedoch nicht möglich ein Prüfobjekt zur gleichen Zeit mehreren Prüfaufträgen zuzuordnen. Das Prüfobjekt kann ein vollständiges Gerät oder ein bestimmter Teiles eines Gerätes sein. Jedem Prüfobjekt wird wiederum wenigstens eine Prüfreihe zugewiesen. In dieser wird unter anderem der Prüfplatz, an dem die durchzuführenden Prüfungen stattfinden, spezifiziert. Zum Schluss werden die Prüfungen der entsprechenden Prüfreihe zugeordnet. Die Abbildung 2.2 soll den hierarchischen Aufbau eines Prüfauftrags verdeutlichen. 6

15 2.1 Miele Prüfungsverwaltungssystem Prüfauftrag Prüfobjekt 1 Prüfobjekt 2 Prüfreihe 1 Prüfreihe 2 Prüfung 1 Prüfung 2 Abb Hierarchischer Aufbau eines Prüfauftrags 7

16 2.1 Miele Prüfungsverwaltungssystem ProLab Die entsprechende Applikation für den Labormitarbeiter ist die Software ProLab (Provo en Laboratorio, Prüfungen im Labor). Diese ist kongruent zur Labordatenbank aufgebaut und dient zur Unterstützung der Prüfungsdurchführungen. Es bietet dem Labormitarbeiter Informationen zur Prüfung und ermöglicht das Einbinden von Messwerten und Ergebnissen. Abb Miele ProLab-System Technik ProLab ist als eine webbasierte Anwendung konzipiert, bei der die Programmiersprachen Java und JavaServer Pages (JSP) eingesetzt werden. Die Anwendung besteht aus mehreren einzelnen Modulen, die zusammen das System ProLab ergeben. Als Application-Server wird ein Apache Tomcat-Server verwendet (s. Kapitel 2.3.1). 8

17 2.1 Miele Prüfungsverwaltungssystem Die Kommunikation zwischen der LabDB und ProLab erfolgt mit Hilfe des Java Messaging System (JMS). Der JMS-Provider ist der JBoss-Application-Server der Firma Redhat. [5] Als Datenbank bzw. Persistenzschicht dient ProLab eine Informix- Datenbank (s. Kapitel 2.3.2). Des Weiteren verwendet ProLab eine Laufzeitumgebung (XulRunner), die stets die gleiche Funktionalität und das gleiche Aussehen der Anwendung garantiert. Die Informix-Datenbank ist auf einem Cluster aus zwei Servern installiert. Dies dient dem Zweck der Ausfallsicherheit, sodass das System, trotz Ausfall eines der Server, weiterhin verfügbar ist. Von den zwei Servern ist jeweils nur einer aktiv. Die Datenbank wird über eine interne Netzwerkverbindung ständig synchron gehalten. Außerdem dient die Leitung als Kommunikationsleitung zur Überprüfung der Aktivität des Rechners. Fällt der aktive Server nun aus, übernimmt der andere sofort seine Aufgaben. Meldet sich der zuvor ausgefallene Server als betriebsbereit zurück, dann werden die Datenbanken sofort synchronisiert und der Ausgefallene übernimmt die Rolle des Backup-Servers. Funktionsweise Der Labormitarbeiter kann anhand der ProLab-Software Prüfungen zu den entsprechenden Prüfreihen anlegen und durchführen. Die Ergebnisse und Auswertungen können als Datei einer Prüfung zugeordnet werden. Bei Abschluss einer Prüfung werden die Änderungen der LabDB mitgeteilt und synchronisiert. Es können aber auch Zwischenergebnisse einer noch nicht abgeschlossenen Prüfung an die LabDB gesendet werden. Des Weiteren werden die Mitarbeiter-Stammdaten aus der LabDB in das ProLab- System importiert, so dass jeder Benutzer, der einmal am Hypertest-System angemeldet war, auch Zugriff auf ProLab hat. Ein Rechtesystem ist aus den verschiedenen Bereichen und Kostenstellen bei Miele abgeleitet und ist mit dem Rollensystem in der LabDB zu vergleichen. 9

18 2.1 Miele Prüfungsverwaltungssystem Funktionsweise zwischen LabDB und ProLab Die Abbildung 2.4 soll die Funktionsweise zwischen der LabDB und ProLab verdeutlichen. Abb Funktionsweise zwischen LabDB und ProLab 10

19 2.2 Sprachen 2.2 Sprachen In diesem Teilkapitel sollen die für die Realisierung des Projekts benötigten Sprachen kurz erläutert werden. Die verwendeten Sprachen sind dabei zum einen Programmiersprachen und zum anderen beschreibende bzw. auszeichnende Sprachen Java Java ist eine objektorientierte Programmiersprache, die Anfang der 90er Jahre in den Entwicklungszentren der Firma Sun entstand. Zwar weist sie Ähnlichkeiten mit Sprachen wie C, C++ und Objective C auf, dennoch basiert sie nicht auf diesen. Eine Besonderheit von Java ist die Art, in der ein Programm übersetzt und ausgeführt wird. Ein Java-Programm wird zuerst von einem Compiler in ein Binärformat, den Bytecode, übersetzt. Dieser Bytecode wird dann von einer Java Virtual Machine (JVM) ausgeführt. Die Virtual Machine besteht hauptsächlich aus einem Interpreter und ist auf allen wichtigen Betriebssystemplattformen vorhanden. Wichtige Elemente von Java sind die sichere Ausführung von Programmen über Netzwerke und die (volle) Portabilität der erstellten Programme im Binärformat. [6] HTML HTML steht für Hypertext Markup Language und ist eine Auszeichnungssprache. Auszeichnende Sprachen beschreiben die Daten, die verarbeitet werden. Dies geschieht durch Steuerzeichen und befehle (Tags), die neben dem eigentlichen Inhalt im Dokument eingebettet sind. Dadurch erreicht die Sprache auch eine Plattformunabhängigkeit. HTML dient zur Strukturierung von Inhalten im World Wide Web (www) und wurde 1989 von Tim Berners-Lee am CERN entworfen. Dabei geht es nicht darum, den Text exakt zu formatieren; es werden die einzelnen Elemente (Überschriften, Tabellen, Eingabefelder usw.) definiert und deren Reihenfolge bestimmt. Das Textdokument lässt sich außerdem in einzelne Bereiche aufteilen. 11

20 2.2 Sprachen Beschreibende Informationen werden in Tags angegeben. Oft wird der Inhalt zwischen einem öffnenden und einen schließenden Tag aufgeführt. Ein Beispiel könnte folgendermaßen aussehen: <H1>Hallo Welt!</H1> und in einem Web Browser den gewünschten Text als Überschrift ohne die Tags darstellen. [7] Weiterhin zeichnet sich HTML dadurch aus, dass man an die feste Struktur des Werkes nicht gebunden sein muss. Durch Verweise in einem Text kann der Benutzer an bestimmte Stellen innerhalb des Dokuments springen. Des Weiteren sind Sprünge von einem Dokument in ein anderes möglich. Daraus ergibt sich der Vorteil, dass der Benutzer schnell zu den Stellen gelangt, die für ihn von Interesse sind. Solche Verweise auf andere Dokumente und Textstellen werden Links genannt CSS Das in HTML fehlende Werkzeug zur Formatierung des Dokuments liefern die Cascading Stylesheets (CSS). CSS ist eine Stilsprache, die es ermöglicht, strukturierte Dokumente zu formatieren. [8] Nachdem 1994 auf einer Konferenz - Mosaic and the Web in Chicago - ein Vorschlag zur Einführung eines CSS Standards gemacht wurde, hat das World Wide Web Consortium (W3C, Gremium für Internettechnik) das CSS Level 1 als Standard 1996 veröffentlicht JSP JavaServer Pages (JSP) ermöglichen das Server-seitige, dynamische Generieren von Webseiten in HTML. JSP sind Bestandteil der Java 2 Enterprise Edition (J2EE), die dazu dient, große und verteilte Anwendungen zu entwickeln. Grundlage dabei ist das Einbetten von Java-Code mit Hilfe spezieller Tags in den statischen HTML-Seiten. Dabei kann kein Standard-Webserver mehr zum Einsatz kommen. Dieser würde die Tags nicht erkennen und sie als normalen Text an den Client senden. Stattdessen wird ein Application-Server verwendet. Dieser erzeugt aus der JSP einen Java-Quellcode, kompiliert diesen und führt ihn in einer JVM aus. [9] Der genaue Ablauf des Lebenszyklus einer JSP wird im Folgenden betrachtet. Bei der Ausführung durchläuft eine JSP drei Phasen [10]: 12

21 2.2 Sprachen Übersetzungsphase In dieser Phase wird aus einer JSP-Seite ein Java-Quellcode, welches einem Servlet entspricht, generiert. Als Servlets bezeichnet man Java-Klassen, deren Instanzen innerhalb eines Java-Webservers Anfragen von Clients entgegennehmen, bearbeiten und beantworten. Das Generieren des Servlet-Quellcodes übernimmt der Application-Server. Dies geschieht zum einen beim allerersten Aufruf einer JSP-Seite und zum anderen wenn der Zeitstempel des JSP-Quellcodes neuer ist als der Zeitstempel des bereits generierten Servlet-Quellcodes. Eine Änderung an einer JSP führt also stets zu einer neuen Erzeugung des Servlet-Quellcodes. Dabei werden in dieser Phase des JSP-Lebenszyklus vom Übersetzer nur die Fehler erkannt, die direkt mit der JSP-Syntax zusammenhängen. Im Java-Code selbst enthaltene Fehler werden hier noch nicht aufgezeigt. Somit ist die Fehleranzeige in der Übersetzungsphase und der folgenden Kompilierungsphase unterschiedlich detailliert. Kompilierungsphase In der Kompilierungsphase startet der Tomcat-Server den Java-Compiler Jasper, um aus dem generierten Servlet-Quellcode eine Java-class-Datei zu erzeugen. Erst in dieser Phase des JSP-Lebenszyklus werden Fehler innerhalb eines Java- Codes einer JSP gefunden. Zu den Fehlern zählen z.b. nicht vorhandene Klassen, die jedoch per import-statements in einer JSP referenziert werden, oder allgemeine Java-Syntax-Fehler. Da die Übersetzung und Kompilierung für den ersten Aufruf der Seite vergleichsweise viel Zeit in Anspruch nehmen, gibt es auch die Möglichkeit, diese beiden ersten Phasen mit Hilfe spezieller Precompilation-Tools zusammenzufassen. Wird die Seite ein zweites Mal aufgerufen, entfallen die ersten zwei Phasen und die Anzeige erscheint wesentlich schneller. 13

22 2.2 Sprachen Ausführungsphase Die kompilierten Class-Dateien werden, wie jedes Java-Programm, in einer Java- Virtual-Machine ausgeführt. Beim Application-Server Tomcat ist dies der Container Catalina. Zum Laden der benötigten Klassen besitzt jede virtuelle Maschine einen Classloader. Da auch der Servlet-Container in einer JVM abläuft, muss auch für die Servlets zunächst der entsprechende Byte-Code in den Arbeitsspeicher geladen und dann ein passendes Objekt instanziiert werden, bevor es aufgerufen wird SQL Mit Hilfe der Structured Query Language (SQL) lassen sich Anfragen an Datenbanken stellen. Dabei ist es möglich, neue Daten in die Datenbank schreiben zu lassen, sie zu ändern bzw. zu aktualisieren und sie wieder auszulesen. Auch das Anlegen von Tabellen und das Verknüpfen der Daten von verschiedenen Tabellen ist so realisierbar. Eine Zugriffsverwaltung auf die Tabellen ist ebenfalls integriert. SQL ist einer der verbreitetsten Standards, um eine Client-Server-Kommunikation mit Datenbanken zu ermöglichen und bietet somit eine Möglichkeit der Kommunikation ohne Beachtung der darunterliegenden Software. [11] Die Semantik der Sprache ist stark an die englische Sprache angelehnt. Sie gliedert sich in drei Gruppen: Definition des Datenbankschemas, Datenmanipulation und Abfrage, Rechteverwaltung. Definition des Datenbankschemas Das Datenbankschema legt fest, welche Daten in einer Datenbank in welcher Form gespeichert werden können und welche Beziehungen zwischen den Daten bestehen. Speziell bei relationalen Datenbanken legt das Schema die Tabellen und deren Attribute sowie, zur Sicherstellung der Konsistenz, die Integritätsbedingungen fest. 14

23 2.2 Sprachen Dabei werden die Primärschlüssel und Fremdschlüsselbeziehungen festgelegt. CREATE TABLE Person( ID SMALLINT UNSIGNED NOT NULL, Name VARCHAR (40) NOT NULL, Postleitzahl SMALLINT UNSIGNED, Wohnort VARCHAR (40), Strasse VARCHAR (40), Hausnummer VARCHAR (40), PRIMARY KEY (ID) ); Listing Beispiel eines Create-Befehls Abb Beispiel einer Relation Listing 2.1 zeigt den Befehl zum Anlegen einer Tabelle (Relation). Sie ist über die sechs Spalten (Attribute) ID, Name, Postleitzahl, Wohnort, Strasse und Hausnummer definiert. Die Attribute ID und Postleitzahl vom Typ SMALLINT UNSIGNED fassen Werte von 0 bis Das Kommando NOT NULL in der Definition der Attribute besagt, dass die entsprechende Spalte mit Werten gefüllt werden muss (Pflichtfeld), sobald ein Datensatz (Tupel) in einer neuen Zeile angelegt wird. Attribute vom Typ VARCHAR (40) nehmen eine beliebige Zeichenkombination mit der maximalen Länge von 40 Zeichen auf. Als Primärschlüssel wird das Attribut ID definiert. Anhand eines Primärschlüssels lässt sich ein Datensatz innerhalb einer Relation eindeutig bestimmen, wobei er auch über mehrere Attribute definiert sein kann. Über die Befehle alter bzw. drop lassen sich die mit dem Befehl create erzeugten Schemata ändern bzw. löschen. 15

24 2.2 Sprachen Datenmanipulation und Abfrage Um in vorhandenen Tabellen Daten einzufügen, zu manipulieren oder zu löschen, gibt es die Befehle insert, update und delete. Ein typisches Statement zur Datenspeicherung in einer Tabelle zeigt Listing 2.2. INSERT INTO Person (ID, Name, Postleitzahl, Wohnort, Strasse, Hausnummer ) VALUES (4, 'Otto', 48565,'Steinfurt', 'Buchenweg', '14a'); Listing Beispiel eines Insert-Befehls Dabei wird in die Tabelle Person, die im vorangegangen Beispiel angelegt wurde, ein Datensatz eingefügt. Der Befehl in Listing 2.3 hat genau den zuvor eingegebenen Datensatz als Ausgabe. SELECT * FROM Person WHERE ID=4; Listing Beispiel eines Select-Befehls Die Befehle DELETE und UPDATE löschen bzw. verändern einen Datensatz, wobei über die WHERE-Klausel der exakte Datensatz bzw. die Gruppe von Datensätzen spezifiziert wird. Soll der Inhalt einer Tabelle vollständig gelöscht werden, kommt der Befehl TRUNCATE zum Einsatz. Rechteverwaltung Um eine rudimentäre Rechteverwaltung zu ermöglichen, können einzelnen Benutzern oder Gruppen Lese- und Schreibrechte auf die Relationen bzw. Views gegeben oder entzogen werden. Dieses wird über die Befehle GRANT und REVOKE ermöglicht. Listing 2.4 zeigt, wie dem Benutzer meier ein lesender und ändernder Zugriff an der Tabelle Person gegeben wird, Listing 2.5 verdeutlicht wie er ihm wieder entzogen wird. GRANT SELECT, UPDATE ON TABLE Person TO meier; Listing Beispiel eines Grant-Befehls REVOKE * ON TABLE Person FROM meier; Listing Beispiel eines Revoke-Befehls 16

25 2.3 Server und Applikationen 2.3 Server und Applikationen Neben den bereits vorgestellten Sprachen und Umgebungen, die in dieser Arbeit zur Anwendung kommen, werden auch einige Applikationen und Server mit verschiedenen Aufgaben eingesetzt. Diese werden auf den folgenden Seiten vorgestellt Apache Tomcat Der Web-Application-Server Tomcat ist eine offizielle Referenz-Implementierung für die von der Firma Sun Microsystems entwickelte Java-Servlet- und JavaServer- Pages-Technologie [12]. Tomcat wird in einer offenen und frei zugänglichen Umgebung entwickelt und ist unter der Apache-Software-Lizenz eingeführt worden. Ein Web-Application-Server ersetzt den normalen Web-Server. Der Web-Server würde die in die JSP-Dateien integrierten JSP-Tags als normalen Text ausgeben. Der Apache Tomcat-Server erkennt diese korrekt als Java- bzw. JSP-Code und führt sie entsprechend aus. In Kapitel wurde bereits die Abarbeitung einer JSP erläutert. Diesen Prozess übernimmt der Application-Server. Auf Grund der schlechten Arbeitsgeschwindigkeit und der damit begrenzten Einsatzszenarien, die Tomcat anfangs ermöglichte, wurde die Architektur in der Version 4 vollständig überarbeitet. Tomcat 6 ist zurzeit die aktuelle Version. Die Architektur dieses Systems basiert auf einer ineinander geschachtelten hierarchischen Struktur mit verschiedenen Objekten. Dabei werden die einzelnen Elemente voneinander unterschieden. Komponenten (Components) stehen in starrer Beziehung mit anderen Komponenten. Komponenten, die weitere Komponenten enthalten können, werden Container genannt. Ist es nicht möglich weitere Elemente in ihnen anzuordnen, sind es so genannte eingebettete Komponenten. Abbildung 2.6 zeigt die Struktur des Tomcat-Application-Servers. [13] 17

26 2.3 Server und Applikationen Folgende Component-Elemente existieren: Server, Service, Engine, Host, Context. Abb Struktur des Tomcat-Applikation-Servers Des Weiteren gibt es die folgenden eingebetteten Komponenten: Connector, Logger, Valve, Realm. Im Folgenden werden die Komponenten kurz erläutert. 18

27 2.3 Server und Applikationen Server Der Server ist eine einzelne Instanz des eigentlichen Tomcat-Servers. Sollten mehrere Server-Instanzen vom Anwender, z.b. für verschiedene Kunden, benötigt werden, lassen sich mehrere Instanzen mit unterschiedlichen Konfigurationen starten. Jedes der Server-Elemente läuft in einer eigenen JVM. Somit kann keine Instanz eine weitere beeinflussen. Das Server-Element besitzt einen Port zur Kommunikation, um die Instanz beenden zu können. Service Das Service-Component repräsentiert eine Gruppe von Schnittstellen. Es gruppiert die verschiedenen Engine-Objekte und entscheidet anhand seiner verschiedenen Konnektoren, an welche Applikation eine Anfrage weitergeleitet werden muss und von welcher Applikation eine Antwort zu erwarten ist. Die verschiedenen Konnektoren bieten zusätzliche Dienste wie etwa Verschlüsselung an. Mehrere Service-Komponenten können neben einer Server-Komponente stehen. Connector Wie bereits beschrieben, bietet ein Connector die Schnittstelle nach außen. Standardmäßig ist das ein HTTP-Port für die Verbindung mit einem Web-Browser des Klienten mit der Webapplikation. Es werden jedoch auch weitere Protokolle wie HTTPS oder AJP zur Verbindung mit anderen Klienten oder Servern angeboten. Das Connector-Element ist ein eingebettetes Objekt bzw. Element. Es lassen sich zudem eigene Connector-Objekte implementieren. Engine Die Engine ist ein Container-Element. Dieses Element hat Kindelemente. Das Objekt untersucht die ankommenden HTTP-Header, die es vom Service-Objekt erhält, und leitet es an die entsprechende Webapplikation bzw. den entsprechenden virtuellen Host weiter. Eine Engine kann mehrere Hosts bzw. Contexts (Webapplikationen) beinhalten. 19

28 2.3 Server und Applikationen Realm Ein Realm ermöglicht die Benutzer-Authentifikation am System. Ist dieses der Engine zugeordnet, nutzen alle Hosts bzw. Contexts die gleichen Ressourcen des Realms. Durch Verlagern des Realms in den Host oder die Webapplikation lassen sich die Ressourcen besser trennen. Es ist zudem möglich, neben der Engine den darunterliegenden Objekten einen Realm zuzuweisen. Diese Zuordnungen überschreiben die jeweils darüberliegenden. Es kann gegen Text-Dateien, LDAP-Server oder gegen das Windows-Netzwerk authentifiziert werden. Valve Die Valves sind eingebettete Komponenten, die eine Filter-Funktion ausüben. Sie sind wieder verwendbar und lassen sich kombinieren. Die eingehenden Anfragen werden auf das erste zugeordnete Valve in der Kette geleitet und werden, entsprechend der Reihenfolge in der Zuordnung, an die folgenden Valves weitergeleitet. Sie ermöglichen ein Single-Sign-On (Einmalanmeldung) am Host und können URIs, IP-Adressen, Server- Statistiken usw. protokollieren. Das Hinzufügen eines Valves erhöht die Rechenzeit, die eine Anfrage erzeugt. Logger Logger geben Auskunft über den aktuellen Status der Komponenten. Sie können an der Engine, dem Host oder dem Context platziert sein, wobei ein platziertes Logger- Objekt an die darunterliegenden Komponenten vererbt wird. Das bedeutet, dass ein an der Engine platziertes Logger-Element auch den Status oder die Fehler eines darunterliegenden Context-Elements protokolliert. Host Die Host-Komponente ermöglicht das Nutzen verschiedener virtueller Web-Server auf einem Rechner. Diese können anhand von verschiedenen IP-Adressen oder ihres Host- und Domain-Namens unterschieden werden. Der Host ist ein Kindelement der Engine, wobei diese natürlich mehrere verschiedene Host-Definitionen beinhalten kann. 20

29 2.3 Server und Applikationen Context Der Context ist die eigentliche Web-Anwendung. In ihr werden alle benötigten Methoden und Klassen implementiert. Auch der Context ist als Container ausgelegt und trägt als Kindelement z.b. die Servlets Informix Datenbank Zur dauerhaften Datenhaltung, also als Persistenzschicht, wird in ProLab eine Informix Dynamic Server (IDS) Datenbank genutzt. In Datenbanken können Daten in Strukturen verwaltet werden, die denen der realen Welt ähneln. Es werden z.b. Daten über ein Produkt und seine Eigenschaften gesammelt. Diese lassen sich dann miteinander verknüpfen. Außerdem lassen sich verschiedene Anwendungen so entwickeln, dass sie auf eine gemeinsame Datenbasis, nämlich die Datenbank, zugreifen. Sie bieten in diesem Fall nur unterschiedliche Sichten auf die Daten. So ist auch ein Parallelbetrieb sinnvoll nutzbar und geänderte Daten stehen sofort jeder Anwendung zur Verfügung, ohne dass die Änderung auf verschiedene Systeme repliziert werden muss. Datenbanken tragen somit zur Vermeidung von Redundanzen bei. Anwendungsprogrammierer müssen sich bei der Entwicklung der Applikationen nicht um die Datenablage, die vom Filesystem abhängig ist, kümmern. Es lassen sich jederzeit flexible neue Anfragen an die Datenbank richten. Ein weiterer wichtiger Punkt ist, dass die Datenbank für die Integrität der Daten sorgt. Es lassen sich über Constraints (Zwangsbedingungen) Abhängigkeiten so definieren, dass dafür gesorgt wird, dass z.b. beim Löschen einiger Datensätze andere Datensätze, die im Bezug zu den löschenden Datensätzen stehen, mitentfernt werden oder zumindest diese Abhängigkeiten aufgelöst werden. IDS ist ein relationales Datenbank Management System (RDBMS) der Firma IBM. Ein RDBMS ist ein System, in dem Daten in Tabellen (Relationen) gehalten und durch Operatoren miteinander verknüpft werden können. Die Spalten der Tabellen werden oft auch als Attribute bezeichnet. Die Attribute müssen innerhalb einer Relation eindeutig definiert sein. Die Zeilen repräsentieren jeweils einen Datensatz und sind somit ein Tupel über die Attribute. 21

30 2.3 Server und Applikationen Um Datensätze eindeutig identifizieren zu können, wird ein Schlüssel, der Primärschlüssel (Primary Key), innerhalb der Relation gesetzt. Er kann über mehrere Attribute definiert sein, die dann aber in jedem Datensatz der Relation eindeutig sind. Über diese Schlüssel können dann weitere Operationen leicht abgewickelt werden. In Kapitel wurde die Verwendung der Sprache SQL beschrieben, um Anfragen an die Datenbank richten zu können Netbeans Als Entwicklungsumgebung für Java und JSP wird Netbeans IDE der Firma Sun Microsystems eingesetzt. Netbeans unterstützt zahlreiche Programmiersprachen, z.b. Java, C, C++, Fortran oder Groovy. Neben der Unterstützung beim Programmieren durch Syntax-Highlighting, Code-Vervollständigung, Debugging und einem GUI-Builder kann Netbeans auch den Software-Entwicklungsprozess durch ein UML-Modelling-Werkzeug mit Code-Generierung unterstützen. Durch Plugins lässt sich die Entwicklungsumgebung noch um weitere Funktionalitäten oder Programmiersprachen erweitern. 22

31 3 Prozessanalyse Im folgenden Abschnitt erfolgt eine Analyse des Labors Verfahrensprüfung (VP) und des derzeitigen Prüfprozesses Titration. Dabei werden die darin enthaltenen Abläufe und technischen Gegebenheiten aufgezeigt und erläutert. Im Anschluss wird eine Beurteilung des aktuellen Prüfprozesses durchgeführt und die Problematiken aufgezeigt. 3.1 Derzeitiger Prüfprozess im Labor VP Um die Effizienz eines Waschautomaten bezüglich seiner Reinigungsleistung zu ermitteln, wurde bei der Firma Miele das Labor Verfahrensprüfung (VP) eingerichtet. Dort werden unter anderem fest definierte Wäscheposten gewaschen und die Waschwirkung ermittelt. An den einzelnen Wäschestücken aus dem Wäscheposten sind Textil-Teststreifen mit genormten Anschmutzungen oder Woll-Teststreifen angenäht. Nach dem Waschvorgang werden diese wieder entfernt und die verbliebene Verschmutzung sowie das Schrumpfen der Wolle gemessen. Des Weiteren wird der Restbestand des Spülmittels (Spülwirkung) innerhalb des Wäschepostens analysiert. Die für diese Bachelorarbeit relevanten Messungen beziehen sich auf die Spülwirkung der Wäscheposten Datenverarbeitung Grundlage der gesamten Datenverarbeitung ist eine Sammlung verschiedener Excel- Dateien. Die Dateien selbst beinhalten unterschiedliche Arbeitsmappen bestehend aus Tabellen, Reports und Makros, die miteinander verknüpft sind. Die Dateneingabe in die entsprechenden Tabellen erfolgt durch automatisierte Prozesse während des Messvorgangs oder manuell durch den verantwortlichen Sachbearbeiter. Die dabei manuell einzupflegenden Messdaten in die zuständigen Excel-Dateien werden dem Sachbearbeiter von einem Labormitarbeiter bereitgestellt, der die Messdaten zuvor am Messgerät abliest oder diese über einen Ausdruck erhält. 23

32 3.1 Derzeitiger Prüfprozess im Labor VP Prozessablauf Messung der Spülwirkung Nachdem ein Waschautomat einen Waschvorgang (Waschen der Wäsche mit dem Waschmittel) abgeschlossen hat, erfolgt im Anschluss ein Spülvorgang, der die Wäsche vom Waschmittel befreit. Dieser Vorgang wird mit reinem, klarem Wasser durchgeführt. Um die Wirkung eines Spülvorgangs prüfen zu können, wird der Restanteil der Waschlauge in der Wäsche ermittelt. Dazu wird die Wäsche nach dem Spülvorgang aus dem Waschautomaten entnommen und in einer separaten Zentrifuge zentrifugiert. Die dabei aufgefangene Waschlauge (auch Probe genannt) wird im Anschluss gemessen. Für die Messung der Probe wird das Titrationsverfahren angewendet. [14] Dabei wird die Probe durch das Hinzufügen einer Säurelösung solange versetzt, bis sie einen neutralen PH- Wert erreicht (s. Abb. 3.1). Die dabei benötigte Menge der Säurelösung wird für die Bestimmung der Spülwirkung notiert. Abb Titrationsverfahren Um für die Messung der Spülwirkung einen Referenzwert zu erhalten, wird auch das reine Wasser, welches für den Spülvorgang verwendet wurde, mit Hilfe des Titrationsverfahrens gemessen. Das reine Wasser wird dabei Blindprobe genannt. Auch in diesem Fall wird die benötigte Menge der Säurelösung für die Bestimmung der Spülwirkung notiert. Die für einen Spülvorgang gemessenen Lösungen (Probe und Blindprobe) gehören stets als Paar zusammen und werden einer entsprechenden Prüfung zugeordnet. 24

33 3.1 Derzeitiger Prüfprozess im Labor VP Prozess Titration Der Ablauf der Titrationsprüfung erfolgt in folgenden Schritten: Zunächst entnimmt der Labormitarbeiter nach dem Vorgang des Waschens und des Zentrifugierens die Lösung. Dies wird pro Waschgang durchgeführt, so dass z.b. bei 5 Waschvorgängen 5 Lösungen in Glasbehältern entnommen werden. Die Glasbehälter werden beschriftet, um eine eindeutige Zuordnung der Waschlauge zu der entsprechenden Prüfung zu gewährleisten. Des Weiteren werden die entsprechenden 5 Blindproben dazu geholt, die ebenfalls mit einer eindeutigen Beschriftung am Glasbehälter einer Prüfung zugeordnet sind. Im Anschluss erfolgt eine Vorbereitung der Proben und Blindproben für den Titrierautomaten. Der zuständige Labormitarbeiter füllt die Proben und Blindproben der Reihe nach in kleinere Plastikbehälter um. Die Behälter sind von der Größe passgenau für das Rondell des Titrierautomaten vorgesehen. Die Füllmenge soll ein Gewicht zwischen 70 und 90 Gramm aufweisen. Die abgefüllten Lösungen werden danach, ebenfalls der Reihe nach, in das Rondell gestellt. Dabei achtet der Mitarbeiter darauf, dass das Paar aus Probe und Blindprobe, die zu einer Prüfung gehören, stets nebeneinander stehen. Nachdem alle Behälter im Rondell platziert wurden, muss der Titrierautomat für die Messungen vorbereitet werden. Abb Titrierautomat mit Rondell 25

34 3.1 Derzeitiger Prüfprozess im Labor VP Beim Einrichten der Messvorgänge am Titrierautomaten muss der Labormitarbeiter, entsprechend der vorher festgelegten Messreihenfolge, die Messabläufe am Bedienfeld des Titrierautomaten einpflegen. Dazu legt er die Anzahl der zu prüfenden Lösungen in einer Tabelle (Sample Table) fest. Im Anschluss wählt er zu den Lösungen die passenden Messmethoden (01_Blind für Blindprobe und 02_Probe für Probe) am Titrierautomaten aus. Zusätzlich müssen noch weitere Kenndaten eingetragen werden. Die benötigten Kenndaten sind die eindeutigen Identifikationsnummern der Lösungen. Diese Daten werden in die Felder ID1 und ID2 mit Hilfe der Ziffernblock-Tastatur eingepflegt. Nachdem alle Daten im Titrierautomaten vorhanden sind, wird der Messvorgang gestartet. Eine Messung pro Lösung dauert ca. 2 bis 3 Minuten. Das Rondell bietet Platz für 5 Paare bzw. 10 Lösungen, so dass ein kompletter Messvorgang ca. 30 Minuten andauert. Der komplette Messvorgang muss dabei nicht beaufsichtigt werden. Anders als in der Reflektionsmessung, bei der die Messdaten automatisch mit Hilfe einer Messdatenerfassungssoftware als Datei abgespeichert werden, erfolgt die Ausgabe der Titrationsmessdaten in Papierform. Dabei werden die Messdaten mit Hilfe eines Thermodruckers, der am Titrierautomaten angeschlossen ist, automatisch ausgedruckt. Die Ausdrucke erscheinen sofort nach jeder abgeschlossen Teilmessung (Messung pro Lösung), so dass während des gesamten Messvorgangs die Ergebnisse der Teilmessungen vom Labormitarbeiter eingesehen und nach grober Plausibilität geprüft werden können. Nachdem der komplette Titrationsmessvorgang durchgeführt wurde, sichtet der Labormitarbeiter die Ergebnisse und überbringt die Ausdrucke dem zuständigen Sachmitarbeiter. Dieser pflegt die Messdaten manuell in die entsprechende Excel- Tabelle Prüfungsverwaltung ein und weist die Tabelle dem Prüfauftrag in der Labordatenbank zu. Damit ist ein kompletter Messvorgang abgeschlossen und der Titrationsprozess beginnt wieder von vorne. 26

35 3.1 Derzeitiger Prüfprozess im Labor VP Bewertung des aktuellen Prozesses Mit der Einführung der Auftragsverwaltung LabDB Anfang diesen Jahres (2011) und der geplanten Einführung im 4. Quartal 2011 des dazugehörigen webbasierten Laborsystems ProLab, welches sich derzeit noch in der Entwicklungs- und Testphase befindet, wurden bereits einige Prüfprozesse in die Systeme eingebunden. Dabei ist das Ziel der Systeme ein möglichst automatisiertes Verfahren der Erfassung, Verwaltung und Zusammenführung aller Messungen eines Prüfauftrages durchzuführen. Das Verfahren der Titrationsprüfung ist jedoch, wie man es bereits in der Prozessanalyse feststellen konnte, bis auf den Titrationsautomaten selbst keineswegs automatisiert. Zwei wichtige Faktoren sprechen ganz besonders für die Umsetzung einer teilweisen Automatisierung. Zum einen ist die Fehleranfälligkeit sowohl bei der Eingabe der Kenndaten am Titrierautomaten als auch beim Übertragen der Messdaten vom Ausdruck in die Excel-Tabellen hoch. Zum anderen ist die manuelle Bearbeitung sehr zeitaufwendig, sodass ein automatisiertes Verfahren eine enorme Zeiteinsparung einbringen würde. Dies gab den Verantwortlichen des Labors Verfahrensprüfung und den Miele- Entwicklern des Laborsystems ProLab den Anlass, auch diesen Bereich des Prüfprozesses möglichst zu automatisieren. 27

36 4 Konzeption Auf Grund der grundsätzlich geplanten Umstellung der Prüflabore auf das neue System ProLab und der zuvor gewonnen Erkenntnisse im Bereich der Titrationsmessung, soll die Machbarkeit (das Ob) und Realisierung (das Wie) des Projekts analysiert und konzeptioniert werden. 4.1 Analyse der Technik Zunächst einmal soll die Arbeitsplatzumgebung und der Titrierautomat innerhalb des Labors untersucht werden. Bei der Prozessanalyse wurde bereits festgestellt, dass der Titrierautomat das Hauptaugenmerk darstellt und für die automatisierte Erfassung der Messdaten von großer Relevanz ist. Der Titrierautomat 848 Titrino plus der Firma Metrohm AG besteht aus folgenden Komponenten: Titrierautomat 848 Titrino plus, Compact Sample Changer, auch Rondell genannt, USB Thermodrucker Neo s, Numerische USB-Tastatur, Waage, RS-232/USB Box. 28

37 4.1 Analyse der Technik Die Abbildung 4.1 zeigt die ersten 5 Systemkomponenten, die bereits im Labor Verfahrensprüfung verwendet werden. Abb Systemkomponenten v.l.: Drucker, Tastatur, Titrino, Rondel und Waage In der Abbildung 4.2 ist die RS-232/USB Box sichtbar. Diese Box ist für das Empfangen der Messdaten vom Titrierautomaten relevant. Abb RS232/USB Box 29

38 4.1 Analyse der Technik Des Weiteren stellt die Abbildung 4.3 den Aufbau der Systemkomponenten dar. Titrierautomat RS232 Rondell USB NumBlock Tastatur USB USB-HUB USB Thermodrucker USB RS232/USB Box RS232 Waage Abb Aufbau der Systemkomponenten im Labor 30

39 4.1 Analyse der Technik Dateneingabe Die erforderliche Dateneingabe am Titrierautomaten erfolgt sowohl über das Bedienfeld am Automaten selber als auch über die numerische USB-Tastatur. Optional kann über eine Messwaage, die ebenfalls über eine USB-Verbindung an den Automaten angeschlossen ist, das Gewicht der Proben übertragen werden Datenausgabe Die am Titrierautomaten gemessenen Daten werden über den angeschlossenen Thermodrucker direkt nach der Messung ausgedruckt. Die Übertragung der Daten geschieht über eine USB-Schnittstelle. Des Weiteren ist das Auslesen der Messdaten mit Hilfe eines Computersystems über eine weitere RS-232 Verbindung, dem COM2 Anschluss, möglich. Die Daten werden als maschinenlesbarer Report mittels der ASCII-Kodierung übertragen. In Listing 4.1 ist ein Auszug des Reports, der auch für Menschen gut lesbar ist, dargestellt. $S MPL V2 $S Mode 1 04 SET ph V $E $E $S Sensor V1 $S Sensor1 V2 ph-41h00248/0002 ph $E $E Listing Reportauszug vom 848 Titrino plus 31

40 4.2 Anforderungen 4.2 Anforderungen Nach der durchgeführten Prozessanalyse und der Technikanalyse kann die Machbarkeit zur Einbindung der Titrationsmessungen ins ProLab-System grundsätzlich als durchführbar eingestuft werden. Daraufhin wird zunächst ein Lastenheft mit groben Anforderungen definiert. Die Anforderungen werden durch ein von mir erstelltes Pflichtenheft konkretisiert und festgelegt Konzeptionelle Anforderungen Folgende Anforderungen werden dabei festgelegt: Integration der Titration in die ProLab Web-Oberfläche, Automatische Erfassung der Messdaten, Suchfunktion und Verwaltung, Manueller Abbruch und Fehlerinformationen. Integration der Titration in die ProLab Web-Oberfläche Der Prozess Titration soll in das System ProLab weitestgehend voll integriert werden. Dabei sollen die in ProLab allgemein eingesetzten Technologien und Techniken, die in Kapitel 5.2 genauer erläutert werden, sowie die Aspekte der Benutzerfreundlichkeit und der Intuitivität (Look and Feel) beachtet und angewendet werden. Eine der wichtigsten Bedingungen ist das Entwickeln des webbasierten Vorgangs als Workflow, anhand dessen der Labormitarbeiter die Titrationsmessung Schritt für Schritt durchführen kann. Automatische Erfassung der Messdaten Die bei der Titration anfallenden Messdaten sollen, wie in anderen Modulen des ProLab-Systems auch, automatisiert erfasst werden. Die Messdaten sollen dabei nicht mehr wie zuvor in Excel-Tabellen hinterlegt werden, sondern vom Titrierautomaten empfangen und mit Hilfe der Informix-Datenbank als Datensätze in die relationalen Datenbanktabellen gespeichert werden. Dabei soll die Eindeutigkeit einer Messung ständig gewährleistet sein. 32

41 4.2 Anforderungen Suchfunktion und Verwaltung Die Zuweisung einer Prüfung zu den Messdaten ist Grundvoraussetzung zur Integration des Moduls Titration ins ProLab-System. Dazu ist eine Suchfunktion innerhalb des Moduls gewünscht, um die Messdaten mit den Prüfungen zu verknüpfen. Ebenfalls soll eine Verwaltung der erhaltenen Messdaten möglich sein. Manueller Abbruch und Fehlerinformationen Ein weiterer wichtiger Punkt der Anforderungen ist das manuelle Abbrechen durch den Labormitarbeiter während eines laufenden Messvorgangs. Dabei soll der webbasierte Workflow und die technische Erfassung der Messdaten kontrolliert gestoppt und mit einer Informationsmeldung zur Startseite des Moduls Titration gelangen. Des Weiteren sollen die bereits erfolgreich abgeschlossenen Teilmessungen eines kompletten Messvorgangs nicht verloren gehen, sondern zur Überprüfung und Verwaltung in der Datenbank vorliegen. Auch bei unvorhersehbaren Fehlern soll sich die Anwendung weitestgehend kontrolliert beenden und dem Benutzer eine verständliche Fehlermeldung liefern. Schlussfolgerung Aus den oben genannten Anforderungen, wie z.b. der manuellen Messvorbereitung durch einen Labormitarbeiter, ist nun ersichtlich, dass in diesem Projekt kein vollautomatisierter, sondern nur ein teilautomatisierter Vorgang erwünscht und realisierbar ist. Dies erfolgt als webbasierter Workflow. Das Messen der Proben und das Abspeichern der gewonnen Messdaten soll jedoch vollautomatisiert erfolgen. 33

42 4.2 Anforderungen Technische Anforderungen Folgende Anforderungen wurden dabei festgelegt: Technische Erfassung der Messdaten, Analyse des Reports und Erstellung eines Parsers. Technische Erfassung der Messdaten Eines der wichtigen Aspekte bei den technischen Anforderungen ist das Erfassen der Messdaten, die vom Titrierautomaten gesendet werden. Dabei sollen die Daten nicht direkt vom Titrierautomaten zum PC-System übertragen, sondern über das interne Netzwerk empfangen werden. Hierzu ist eine technische Lösung nötig, die sowohl die Netzwerk- als auch die RS-232-Schnittstelle beherrscht und eine Übertragung der Daten, auch Report genannt, gewährleistet. Analyse des Reports und Erstellung eines Parsers Eine weitere technische Anforderung ist das richtige Auslesen und Interpretieren der über die Schnittstelle übertragenen Daten. Hierzu wird eine Anwendung benötigt, die die entsprechenden Messdaten aus dem gesamten Report herausfiltert, aufbereitet und zur Verfügung stellt. Solch eine Anwendung wird Parser bzw. das Vorgehen parsen genannt. Des Weiteren sollen die aufbereiteten Messdaten zur Sicherung in die Datenbank gespeichert werden. 34

43 4.3 Entwurf 4.3 Entwurf Anhand der zuvor durchgeführten Analyse und der definierten Anforderungen wird ein Entwurf des Moduls Titration konzeptioniert. Der Entwurf beschäftigt sich hauptsächlich mit der Entscheidung, wie die Anforderungen optimal umgesetzt werden können. Das Modul Titration stellt dabei einen webbasierten Workflow dar, welches den gesamten Prozess der Titration in das ProLab-System integriert PC-System & die Schnittstelle Com-Server In der Firma Miele werden weitestgehend PC-Systeme als ThinClient-Komponente verwendet. Das ThinClient-Prinzip ist ein Client-Server-Modell, welches einen oder mehrere relativ leistungsschwache MiniPCs und einen leistungsstarken Server als Hardware-Landschaft zur Verfügung stellt. Der MiniPC dient als Terminal und ist grundsätzlich nur für die Ein- und Ausgabe der Daten verantwortlich. Für die Datenverarbeitung und Datenspeicherung ist der Server zuständig. Zwei der genannten Anforderungen in diesem Projekt sind das Übertragen der Messdaten über das interne Netzwerk sowie die Verwendung des Titrations-Moduls über ein Terminal (ThinClient-Komponente) innerhalb des ProLab-Systems. Für das Übertragen der Messdaten übers Netzwerk soll die Hardwarekomponente Com-Server Highspeed Industry von der Firma W&T GmbH verwendet werden. Diese Komponente verbindet die RS-232-Schnittstelle vom Titrierautomaten mit dem internen Netzwerk über einen Ethernet-Port. Die Entscheidung für dieses Produkt fiel zum einen, weil es die Norm sowohl für die Büro- als auch für die Industrieumgebung einhält und somit für die Labore geeignet ist und zum anderen, weil das Produkt nicht mehr zusätzlich dazugekauft werden muss, da mehrere solcher Komponenten bei Miele bereits vorliegen und eingesetzt werden. Des Weiteren bietet der Com-Server eine komfortable Fernkonfigurierung über den Browser (Web Based Management). 35

44 4.3 Entwurf Der Terminal (Monitor, MiniPC, Maus und Tastatur) soll ebenfalls dem Labor zur Verfügung gestellt werden. Dieser wird im Bereich der Titration neben dem Titrierautomaten aufgebaut und an das interne Netzwerk angeschlossen. Die Abbildung 4.4 weist die Systemkomponenten auf, die für die Durchführung des ProLab-Moduls Titration zusätzlich benötigt werden. Abb Com-Server und Terminal im Labor Verfahrensprüfung 36

45 LAN 4.3 Entwurf Abbildung 4.5 soll den Aufbau der Systemkomponenten verdeutlichen. Der rechte, gräulich dargestellte Bereich, ist der Bereich der bereits bestehenden Systemkomponenten. Der linke, bläuliche Bereich stellt die Komponenten dar, die für die Durchführung des Moduls Titration an die bestehenden Komponenten angebunden werden müssen. Terminal Titrierautomat RS232 Rondell LAN USB NumBlock Tastatur USB Netzwerk USB-HUB USB Thermodrucker USB Com-Server RS232 RS232/USB Box RS232 Waage Abb Systemkomponenten und Kommunikation 37

46 4.3 Entwurf Modul Titration Anhand der klar definierten Anforderungen ist dem Modul Titration bereits eine gewisse Richtung für den Entwurf und die Implementierung vorgegeben. Mit Hilfe des Programms CmapTools wird ein Ablaufdiagramm erstellt, welches den webbasierten Workflow des Moduls erläutert. Dabei wird eine Interaktion zwischen dem Labormitarbeiter und dem ProLab-System dargestellt. Die Abbildungen 4.6 bis 4.8 stellen den webbasierten Ablauf des Moduls dar. Abb Ablaufdiagramm Titration Teil1 38

47 4.3 Entwurf Abb Ablaufdiagramm Titration Teil2 39

48

49 4.3 Entwurf Synchronisationsvorgang Die Abbildung 4.6 (Titration Teil 1) des Ablaufdiagramms weißt am Anfang einen Vorgang auf, der im grundsätzlichen Prozess Titration nicht im Labor Verfahrensprüfung vorzufinden ist. Jedoch sind während der Prozess- und der Technikanalyse die Anforderungen aufgekommen, eine Eindeutigkeit und eine fehlerfreie Übertragung der Messdaten übers Netzwerk zu gewährleisten. Somit wird, in Absprache mit dem Auftraggeber, ein Synchronisationsvorgang als Kontrollinstanz definiert, welcher vor dem eigentlichen Messvorgang in das Titrationsmodul eingebunden werden soll. Anhand des vom Titrierautomaten mitgelieferten Benutzerhandbuchs und der Analyse des Datenausgabestroms (Report) ist bekannt, dass zu jeder Messung zwei Identifikationsnummern (relative ID und absolute ID) vom Automaten generiert werden. Die relative ID ist eine Nummer, die bei jeder neuen Messung hochgezählt und auf dem Ergebniszettel zusätzlich ausgedruckt wird. Erfolgt ein Abschalten des Titrierautomaten, so geht die aktuelle Zahl verloren und der Titrierautomat beginnt nach dem Einschalten wieder bei der Zahl 1. Im Gegensatz dazu geht die absolute ID, bei der die Nummer ebenfalls pro Messung hochgezählt wird, beim Aus- und Einschalten nicht verloren und garantiert somit stets die Eindeutigkeit einer Probe. Ein Ausdruck der absoluten ID auf dem Ergebniszettel erfolgt dabei nicht. Des Weiteren ist das direkte Auslesen der IDs am Titrierautomaten nicht möglich. Es werden jedoch beide Identifikationsnummern, erst nach einer abgeschlossenen Messung, im Report über das Netzwerk übertragen und stehen somit dem ProLab- System zur Verfügung. Aus den gewonnen Erkenntnissen wird ein Synchronisationsvorgang konzipiert, der eine Kontrolle der Übertragung von Messdaten gewährleisten soll. Dazu soll zu den bereits bestehenden Messmethoden 01_Blind und 02_Probe eine weitere Messmethode 03_Sync am Titrierautomaten hinzugefügt werden. Diese Methode simuliert am Automaten eine Messung, die ca. 10 Sekunden andauert. Nach Abschluss der simulierten Messung soll der Titrierautomat die benötigten IDs als Report übers Netzwerk senden und einen Ausdruck am Thermodrucker durchführen. Der gesendete Report soll vom ProLab-System empfangen und die IDs zur Kontrolle ausgegeben werden. Der Labormitarbeiter vergleicht die relative ID auf dem Ausdruck mit der relativen ID in ProLab und bestätigt bei Gleichheit den 41

50 4.3 Entwurf korrekten Synchronisationsvorgang. Gibt es keine Übereinstimmung, so soll der Vorgang erneut ausgeführt werden können. Der Synchronisationsvorgang dient somit als Kontrolle der Netzwerkkommunikation zwischen Titrierautomat und System, die vor jedem kompletten Messvorgang durchgeführt wird. Messvorgang Nachdem ein Synchronisationsvorgang abgeschlossen und als korrekt bestätigt wurde, erfolgt der eigentliche Messvorgang. Dieser besteht aus mehreren Messungen und wird durch eine eindeutige Vorgangsnummer identifiziert. Zunächst wird eine Vorbereitung der Messungen durchgeführt. In dieser Messvorbereitung legt der Labormitarbeiter die zu prüfenden Proben im Titrations-Modul fest. Wie bereits im Kapitel Prozessablauf erwähnt, werden das Paar aus Probe und Blindprobe zu einer Prüfung mit einer festgelegten Prüfungsnummer zugeordnet. Der Mitarbeiter wählt mit Hilfe einer Suchfunktion die Prüfungsnummer aus und weist diese dem Messvorgang zu. Das ProLab-System erfasst die gewünschte Prüfung und legt automatisch zwei Messungen, eine für die Probe und die andere für die Blindprobe, im Messvorgang an. Danach kann der Mitarbeiter weitere Prüfungen dem Messvorgang zuordnen. Die Abbildung 4.9 soll den Zusammenhang zwischen Vorgangsnummer, Prüfungsnummer und den Proben zu dem Messvorgang verdeutlichen. Abb Zusammenhang eines Messvorgangs 42

51 4.3 Entwurf Nachdem die Messvorbereitung am ProLab-System abgeschlossen wurde, bereitet der Labormitarbeiter die Messungen am Titrierautomaten vor und setzt die Proben in das Rondell des Titrierautomaten ein. Danach kann der Messvorgang durchgeführt werden. Dazu startet er zunächst den Messvorgang am ProLab-System und im Anschluss die Messungen am Automaten. Die kompletten Messungen sowie die Kommunikation zwischen dem Titrierautomaten und dem ProLab-System laufen dann voll automatisch. Der Labormitarbeiter wird vom ProLab-System informiert, sobald der komplette Messvorgang durchgeführt wurde. Jedoch kann der Mitarbeiter schon während des Messvorgangs sehen, ob Teilmessungen abgeschlossen wurden. Um den Verlauf einer Messung kontrollieren bzw. verfolgen zu können, wird jeder Messung ein Status im ProLab-System zugewiesen. Während des laufenden Messvorgangs können sich die Status ändern und werden aktualisiert im ProLab- System dargestellt. Folgende Status werden verwendet: Statuswert Beschreibung erfasst Die Vorbedingungsdaten (z.b. Prüfungsnummer und Vorgangsnummer) sind in der Datenbank erfasst. Messung läuft Es werden die Messdaten zu dem Datensatz gemessen. Messung beendet Die Messdaten zum Datensatz liegen vor. freigegeben Die Daten sind als richtig bestätig worden. deaktiviert Ein anderer Datensatz ist an die zugehörige Prüfung neu hinterlegt worden bzw. der Datensatz ist vom Anwender manuell deaktiviert worden. Tabelle Status der Messungen im ProLab-System Bereits abgeschlossene Messungen führen den Status Messung beendet und noch laufende Messungen den Status Messung läuft. Des Weiteren wird automatisch erkannt, ob es sich bei einer Messung um eine Probe oder Blindprobe handelt, welche dann im ProLab-System bei der entsprechenden Messung korrekt eingetragen wird. 43

52 4.3 Entwurf Messdatenprüfung Im Anschluss der abgeschlossenen Messungen müssen die erfassten Messdaten vom Labormitarbeiter geprüft werden. Dazu soll das Modul eine Übersicht der zuletzt gemessenen Daten, nach der Vorgangsnummer sortiert, darstellen. Die aktuellsten Messungen werden dabei in der Übersichtstabelle an oberster Stelle angezeigt. Der Mitarbeiter vergleicht die Messdaten auf dem Ausdruck mit den Messdaten im ProLab-System. Sind die Messdaten korrekt, so werden diese mit dem Button Speichern als Status freigegeben abgespeichert. Bei falsch erfassten Messdaten kann der Mitarbeiter mit dem Button Löschen den Status der jeweiligen Messung auf deaktiviert setzten. Wählt der Mitarbeiter den Button Bearbeiten, so wird ebenfalls die jeweilige Messung auf den Status deaktiviert gesetzt und zusätzlich wird eine neue JSP-Maske aufgerufen. In dieser Maske kann der Mitarbeiter händisch die richtigen Messdaten einpflegen Applikation zur Netzwerkkommunikation Um die übers Netzwerk gesendeten Messdaten clientseitig zu empfangen, wird eine Anwendung benötigt, die die gesamte Kommunikation verwaltet. Diese Anwendung soll in das Modul Titration integriert und an den entsprechenden Seiten ausgeführt werden. Dazu erfolgt die Realisierung der Anwendung mittels der Programmiersprache Java, welche durch eine JavaBean instanziiert und im Tomcat-Application- Server ausgeführt wird. Als Entwurf dieser Anwendung wird folgendes Klassendiagramm (Abb. 4.10) zugrunde gelegt. Das Klassendiagramm ist in 3 grobe Bereiche gegliedert. Der erste, obere Bereich stellt die wichtigen benötigten Klassen Thread und Socket aus der Java-Package dar. Der zweite, untere Bereich weist die Klassen DBConnection und SQLIQuery auf, die aus der Miele-Package stammen. Diese werden für die Datenbankverbindung und die Datenverwaltung benötigt. Der dritte, mittlere Bereich stellt die Klassen TitrationStarterBean, TitrationControler und SocketReader dar, die zur Lösung der Netzwerkkommunikation und zur Speicherung der Messdaten für das Modul Titration entwickelt werden müssen. In diesem Abschnitt der Arbeit werden die drei Klassen vorgestellt und kurz erläutert. Eine detaillierte Beschreibung der Funktionen erfolgt später im Kapitel 5 Implementierung. 44

53 4.3 Entwurf Abb Klassendiagramm Titration Klasse: SocketReader Damit man sich beim Übertragen von Daten übers Netzwerk nicht mit verschiedenen Übertragungsprotokollen wie http, oder noch tiefer, TCP/IP kümmern muss, gibt es das Software-Modul Socket. Der Socket ist für die grundlegende Netzwerkkommunikation, d.h. für die Verbindung und für den Datenaustausch, zuständig. Die Sockets bilden somit eine plattformunabhängige, standardisierte Schnittstelle zwischen der Netzwerkprotokoll-Implementierung des Betriebssystems und der eigentlichen Anwendungssoftware. 45

54 4.3 Entwurf Als plattformunabhängige Programmiersprache unterstützt Java ebenfalls die Socket-Programmierung, wobei die Implementierung der Sockets für die verschiedenen Plattformen über die Klassenbibliotheken der virtuellen Maschine erfolgt. Der SocketReader hat die Aufgabe, mit Hilfe eines Socket-Objekts eine Netzwerkverbindung zum Com-Server aufzubauen und die vom Com-Server gesendeten Daten zu empfangen. Weil die Messdaten in unregelmäßigen Abständen und mit Wartezeiten von bis zu 4 Minuten pro Messung gesendet werden, soll die Anwendung dauerhaft im Netzwerk auf dem entsprechenden Port lauschen und Daten entgegennehmen. Die bereits empfangenen Daten sollen zunächst einmal zwischengespeichert und dann an die TitrationControler-Anwendung weitergereicht werden. Damit die Anwendung parallel bzw. nebenläufig zu den anderen Anwendungen laufen kann, erbt die Klasse SocketReader von der Klasse Thread und führt die Aufgaben als eigene Thread-Instanz aus. Klasse: TitrationControler Die TitrationControler Anwendung soll für das Entgegennehmen, Aufbereiten und Speichern der Messdaten zuständig sein. Dabei instanziiert es ein Objekt der Klasse SocketReader und prüft, ob dieser empfangene Daten für ihn bereithält. Sollten Daten empfangen worden sein, so nimmt die Anwendung die Daten entgegen, analysiert sie und bereitet sie für das Speichern in die Datenbank auf. Der Vorgang des Analysieren und Aufbereiten (Zerlegen und Umwandeln) wird parsen bzw. die Anwendung Parser genannt. Das Parsen erfolgt durch vorher definierte Regeln. Dabei werden die Messdaten von den übrigen Daten, die übers Netzwerk gesendet wurden, herausgefiltert und aufbereitet zur Verfügung gestellt. Die gefilterten Messdaten werden in einer Hashtable zwischengespeichert. Nach dem Parsen sollen die eigentlichen Messdaten in die Persistenzschicht gespeichert werden. Dazu werden die Objekte der Miele-Klassen DBConnection und SQLIQuery verwendet. DBConnection ist für den Auf- und Abbau der Datenbankverbindung zuständig, während die Klasse SQLIQuery die SQL-Statements mit den entsprechenden Operationen wie Select, Insert, Update oder Delete entgegennimmt und ausführt. Des Weiteren stellt es die mit der Select-Anweisung angeforderten Daten zur Verfügung. 46

55 4.3 Entwurf Die TitrationControler Anwendung soll ebenfalls von der Thread-Klasse erben und als nebenläufige Instanz ausgeführt werden. In den gesamten Anwendungen soll dabei stets das Prinzip gewahrt werden, dass alle benötigen Daten, wie z.b. die Regeln/Bedingungen für den Parser oder die Verbindungsdaten zum Com-Server, in der Informix-Datenbank hinterlegt sind und nicht im Quellcode hart eingetragen werden. Klasse: TitrationStarterBean Die TitrationStarterBean stellt eine JavaBean (siehe folgenden Kapitel 5.2.2) dar, die die Aufgabe hat, die Klasse TitrationControler als Objekt zu instanziieren und die Anwendung zu starten. Des Weiteren soll die Bean den aktuellen Status der laufenden Anwendung abfragen und an die entsprechenden JSP-Seiten bekannt geben. Zusätzlich soll die Bean, bei Aufruf eines manuellen Abbruchs der Messungen in den JSP-Seiten, ein Abbruchsignal an die TitrationControler- Applikation weiterreichen. Das Abbruchsignal führt zu einem kontrollierten Schließen des Sockets und der Datenbankverbindung sowie zum Beenden der Applikation selbst. Das Setzen und Erfragen von Werten/Signalen erfolgt mittels der öffentlichen Getter- und Setter-Methoden. 47

56 5 Implementierung Neben der Analyse des bestehenden Prozesses und der Erstellung des Konzeptes zur Umsetzung des neu entwickelten Titrationsprozesses innerhalb von ProLab ist auch die Realisierung des gesamten Moduls Titration Aufgabe der Bachelorarbeit. Die für die Integration des Moduls benötigten Masken und Funktionalitäten werden in diesem Abschnitt erläutert. 5.1 Organisatorisches Vorgehensmodell Bei der Firma Miele im Bereich Labordienstleistungen ist kein spezielles Vorgehensmodell zur Durchführung von Softwareprojekten vorgeschrieben, sodass die einzelnen Projektteams selbst entscheiden können, wie sie vorgehen möchten. Ich habe mich für ein iterativ inkrementelles Vorgehensmodell entschieden, da es mir sehr gut aus der Vorlesung Software Engineering bekannt ist und es bestens während der Realisierung dieses Projekts angewandt werden kann Eingesetzte Technologie und Werkzeuge Die Webapplikation ProLab wird mit der JSP-Technologie entwickelt (vgl. Kap ). Dies setzt voraus, dass das Modul Titration ebenfalls mit denselben Techniken und Technologien realisiert wird. Als Entwicklungsumgebung wird Netbeans der Firma Sun Microsystems genutzt. Netbeans bietet für die Entwicklung von JSP-Projekten komfortable Möglichkeiten zur Programmierung und zum Debugging an. Um die Projekte testen zu können, ist unter anderem der Tomcat-Application-Server integriert, der auch im Produktivbetrieb eingesetzt wird. Neben JSP wird stellenweise auch JavaScript eingesetzt. Zum Betrachten der Seiten kommt während der Entwicklungsphase ein normaler Web-Browser, wie etwa Firefox oder der Internet Explorer, zum Einsatz. Im Produktivbetrieb wird dieser Browser durch eine bei Miele intern entwickelte Laufzeitumgebung auf Firefox-Basis ersetzt. 48

57 5.2 Allgemeine in ProLab verwendete Techniken 5.2 Allgemeine in ProLab verwendete Techniken Das System ProLab, welches als webbasierte, modular aufgebaute Applikation entwickelt wurde, umfasst einen recht großen Umfang. Deshalb wurden einige Hilfsmittel geschaffen, die ein paralleles Entwickeln ermöglichen und den Komfort bei der Anwendung (schnelle Antwortzeiten und sicheres, unabhängiges Arbeiten) gewährleisten. Einige davon werden im Folgenden kurz vorgestellt Include-Dateien Um leichter eine wiederholte Nutzung von einem bereits erstellten Code zu ermöglichen, werden seit Projektstart einige Blöcke in ein include-verzeichnis ausgelagert. Diese Dateien werden mit dem Aufruf include file="/includes/dateiname.include"%> eingefügt. Ein Beispiel dafür ist die Datei /web/includes/getstandardclassimports.include : <%-- misc. java classes --%> import="java.util.*"%> import ="java.io.*"%> <%-- SQLInterface --%> import ="net.miele.de.gtg.kew.itms.sqlinterface.con.*"%> import ="net.miele.de.gtg.kew.itms.sqlinterface.dbaccess.*"%> import ="net.miele.de.gtg.kew.itms.sqlinterface.err.*"%> <%-- some ProLab classes --%> import ="net.miele.de.gtg.kew.itms.prolab.gui.codesnippets"%> import ="net.miele.de.gtg.kew.itms.prolab.gui.datahandling. DBColumnObject"%> import ="net.miele.de.gtg.kew.itms.prolab.gui.navigation. NavSection %> Listing Include-Beispiel Anhand des Listing 5.1 ist zu erkennen, wie einfach die Möglichkeit gegeben ist, Klassen, die in jeder einzelnen jsp-datei eingebunden werden müssen, auszulagern und durch eine einzelne include- Anweisung wieder einzubinden. Die mit der include-anweisung eingebunden Dateien werden beim Kompilieren in die aufrufende Datei eingefügt und mit übersetzt. 49

58 5.2 Allgemeine in ProLab verwendete Techniken JavaBeans in JSP-Seiten Eine JavaBean ist eine Java-Klasse, die einem Komponentenmodell entspricht, um automatisierten Zugriff auf ihre Eigenschaften und Operationen zu erlauben. Diese werden z.b. als Container zur Datenübertragung verwendet. Alle JavaBeans zeichnen sich durch folgende Eigenschaften aus: Öffentlicher Standardkonstruktor, Serialisierbarkeit, Öffentliche Zugriffsmethoden. Um eine Bean, z.b. die DatenTestBean.java, den entsprechenden JSP-Seiten zur Verfügung zu stellen, wird der Aufruf <jsp:usebean id="testbean" class="net.miele.de. DatenTestBean.java" scope="session" /> in die Seiten eingebettet. Da das HTTP-Protokoll zustandslos ist und Informationen über den Client zwischen dem Aufruf verschiedener Seiten verloren gehen, wurden für die Verfügbarkeit der Beans in den JSPs vier Gültigkeitsbereiche (scopes) festgelegt. Tabelle 5.1 zeigt die Gültigkeitsbereiche auf und erläutert die Funktionen. Name Bedeutung application Mit dem Starten der Applikation (bspw. durch Hochfahren des Tomcat) steht dieser Gültigkeitsbereich bis zum Beenden der Applikation zur Verfügung. session Eine Session umfasst eine Nutzersitzung und umfasst mehrere Anfragen. So kann z.b. der Status eines Benutzers während der Nutzung gespeichert werden request Dieser Gültigkeitsbereich umfasst genau eine Anfrage eines Nutzers. Aufgrund eines möglichen Forwardings der Anfrage an weitere JSPs kann ein Request sich über mehrere JSPs erstrecken. page Dieser Gültigkeitsbereich ist nur innerhalb genau einer JSP gültig. Bei einem Forwarding gehen Attribute dieses Gültigkeitsbereichs verloren. Tabelle Gültigkeitsbereiche einer JavaBean in JSPs Mit Hilfe der Tags <jsp:getproperty> und <jsp:setproperty> kann auf ein Attribut der Bean zugegriffen bzw. ein Attribut gesetzt werden. [15] 50

59 5.2 Allgemeine in ProLab verwendete Techniken Datenbankverbindung Um Datenbankverbindungen in ProLab effektiv nutzen zu können, gibt es die Java- Bean net.miele.de.gtg.kew.itms.sqlinterface.dbaccess.beans.dbconpoolbean, welche einen Pool von Connect-Objekten anbietet. Mit dieser Bean ist es einer JSP-Seite möglich, eine Verbindung zur Datenbank anzufordern und diese zu verwenden. Dabei übernimmt die Bean das Verbindungs-Management. Aufgrund der langen Anmeldevorgänge an der Datenbank werden Verbindungen nach der Benutzung nicht sofort geschlossen, sondern für eine vorgegebene Zeit gehalten und als Status nicht in Benutzung markiert. Sollte in diesem festgelegten Zeitfenster erneut eine Verbindung angefordert werden, so übergibt die Bean zunächst ein Objekt mit einer bereits bestehenden, aufgebauten Verbindung an die entsprechende JSP-Seite. Erst wenn keine freien Objekte mit aufgebauter Verbindung mehr vorhanden sind, wird ein Neues angelegt, für das der Anmeldevorgang ausgeführt werden muss. Die maximale Anzahl der Verbindungsobjekte, sowie die maximale Zeitdauer, nach der bei Inaktivität die Verbindungen gehalten werden, können über eine Administrationsseite innerhalb ProLabs konfiguriert werden Zugangskontrolle Das ProLab-System ist mit zahlreichen Sicherheitsmechanismen ausgestattet. Bevor ein Benutzer das System verwenden kann, ist eine Authentifizierung des Users nötig. Dies erfolgt über einen LDAP-Server, der mit dem ProLab verbunden ist. Dem Benutzer sind über Rollen verschiedene Access-Objects (ACOs) zugeordnet. Diese ACOs werden beim Aufruf einer Seite, mittels der Include-Datei PageIdent.include, überprüft. Die Include-Datei liegt dabei in jedem Verzeichnis vor und wird beim Aufruf einer Seite eingelesen. In der Datei steht der Name eines ACOs. Ist das zu dem Namen gehörige ACO dem Benutzer über die Benutzerverwaltung ProLabs zugeordnet, so wird die Seite erfolgreich aufgebaut. Dem Benutzer wird jedoch der Zugriff verweigert und die gewünschte Seite nicht aufgebaut, wenn dieser den entsprechenden Eintrag der ACO in der Benutzerverwaltung nicht vorliegen hat. Die Überprüfung erfolgt durch die Java-Bean net.miele.de.gtg.kew.itms.apps.beans.checkaccessbean. 51

60 5.2 Allgemeine in ProLab verwendete Techniken Label Die Software ProLab soll zum einen nicht nur modular, webbasiert entwickelt werden, sondern auch die Aspekte der Benutzerfreundlichkeit beachten. Dazu zählt auch das Verwenden der Applikation in mehreren Sprachen. Derzeit sind die Sprachen deutsch und englisch vorgesehen. Es können jedoch auch Weitere problemlos nachgerüstet werden. Dabei werden die in den Webseiten dargestellten Texte nicht direkt im Quellcode der Anwendung, sondern in der Datenbank hinterlegt. Der Quellcode selber verwendet dabei die sogenannten Labels, die als Platzhalter für die entsprechenden Texte agieren. Über die Label-Bean net.miele.de.gtg.kew.itms.prolab.gui.beans.labelbean und dem Aufruf AppLabel.getLabelValue( TestLabel ) wird das Label durch den gewünschten Text ersetzt und auf der Seite in der vorgegebenen Sprache angezeigt. Des Weiteren hat das Label-Verfahren, neben der Mehrsprachigkeit, den zusätzlichen Vorteil, dass Änderungen am Quellcode nicht vorgenommen werden müssen, falls sich die Bezeichnungen ändern. Somit kann umgehend auf Benutzer- Anfragen reagiert werden. Das Erstellen und Pflegen der Labels erfolgt in einem administrativen Bereich von ProLab. 52

61 5.3 Modul Titration 5.3 Modul Titration In diesem Abschnitt der Arbeit werden die relevanten Applikationen und Masken des Moduls Titration detailliert erläutert und mit kurzen Quellcode-Ausschnitten veranschaulicht. Wie bereits in Kapitel 4.3 Entwurf genannt, besteht das ProLab-Modul Titration aus zwei wesentlichen Bereichen: Der Messdatenerfassung (s. Kapitel 4.3.3) und der Titrationsverwaltung (s. Kapitel 4.3.2). Die Implementierung der Messdatenerfassung erfolgt ausschließlich durch die Programmiersprache Java, wohingegen die GUI bzw. die Masken der Titrationsverwaltung als JSP-Technologie sowohl die Programmiersprache Java als auch die Auszeichnungssprache HTML verwenden Messdatenerfassung SocketReader Der SocketReader ist eine in Java entwickelte Klasse, die für die Netzwerkverbindung und den Datenempfang zwischen dem Com-Server und dem Titrations-Modul verwendet wird. Um den SocketReader parallel bzw. nebenläufig im Tomcat- Application-Server laufen lassen zu können, erbt dieser von der Klasse Thread und führt die Aufgaben als eigene Thread-Instanz aus. Dabei müssen die Methoden, die nebenläufig sein sollen, in der geerbten und überschriebenen Thread-Methode run() aufgerufen werden. Die run()-methode ist der zentrale Punkt des SocketReaders, in der die meisten Methoden ausgeführt werden. Ein weiterer wichtiger Punkt, ohne den eine Netzwerkkommunikation gar nicht erst zustande kommen würde, ist die Klasse Socket. Diese dient als plattformunabhängige, standardisierte Schnittstelle zwischen der Netzwerkimplementierung des Betriebssystems und der eigentlichen Applikation SocketReader. Dazu verwendet die Applikation eine Socket-Instanz, mit deren Hilfe eine Netzwerkverbindung und der Empfang der Messdaten ermöglicht werden. Das Listing 5.2 zeigt einen Ausschnitt der Aufrufe von Methoden in der run()- Methode sowie die Deklarierung der Objekte der drei benötigten Klassen Socket, InputStreamReader und BufferedReader. 53

62 5.3 Modul Titration public class SocketReader extends Thread{ private Socket socket; private InputStreamReader isr; private BufferedReader public void run(){ try{ getsocketconnnection(); while(stopsocket == false){ //getdata from Socket catch(){ finally { closesocketconnection(); Listing Verwendung der Run()-Methode Der InputStreamReader wird benötigt, um die vom Socket-Objekt empfangenen Daten als Datenstrom entgegenzunehmen und einen sequentiellen Zugriff auf die Daten zu gewährleisten. Dabei wird der vom Socket zur Verfügung gestellte byteorientierte Datenstrom in einen zeichen-orientierten Datenstrom umgewandelt. Da der InputStreamReader die Daten nur zeichenweise oder als festgelegte Feldgrößen ausgeben kann, wird zusätzlich der BufferedReader verwendet. Dieser erlaubt mit Hilfe der Methode readline() das Puffern und zeilenweise Auslesen der Daten. Das Objekt des InputStreamReaders wird dabei dem Konstruktor des BufferedReader- Objekts übergeben. In Listing 5.3 sind die Instanziierung der Klassen und der Aufbau der Socket-Verbindung durch Angabe von Host und Port zu erkennen. 54

63 5.3 Modul Titration private void getsocketconnection() throws Exception{ socket = new Socket(host, Integer.parseInt(port)); isr = new InputStreamReader(socket.getInputStream()); indata = new BufferedReader(isr); Listing Instanziierung der benötigen Klassen und Aufbau der Socketverbindung Das eigentliche, zeilenweise Auslesen der Daten geschieht in einer while-schleife innerhalb der run-methode. Da die Messdaten in unregelmäßigen Abständen und mit Wartezeiten von bis zu 4 Minuten pro Messung gesendet werden, ist ein dauerhaftes Lauschen im Netzwerk nötig. Dabei wird die Socket-Verbindung solange gehalten, bis eine Abbruchbedingung die while-schleife beendet und die Verbindung schließt. Eine der Abbruchbedingungen ist die zuvor definierte Variable maxtimetorun, welche eine maximale Zeit für die Applikation festlegt. Die zweite Bedingung reagiert auf ein von außen erhaltenes Abbruchsignal. Das Abbruchsignal wird gesendet, wenn alle Messungen abgeschlossen sind oder der Labormitarbeiter einen manuellen Abbruch des Messvorgangs ausführt. Aber auch bei unerwarteten Fehlern wird ein Abbruchsignal an den SocketReader gesendet, damit dieser die Verbindung sauber schließt und die Anwendung beendet. Die in der while-schleife zeilenweise ausgelesenen Daten werden vom BufferedReader an ein Vector-Objekt übergeben. Das Vector-Objekt stellt eine Liste dar, die die zeichen-orientierten Zeilen (String-Zeilen) aufnimmt und als Zwischenspeicher verwaltet. Der Vektor wird anschließend nebenläufig von der TitrationControler-Klasse ausgelesen und die darin enthaltenen Daten werden weiterverarbeitet. Das folgende Listing 5.4 zeigt die while-schleife mit den Abbruchbedingungen und der Übergabe der Daten an den Vektor. 55

64 5.3 Modul Titration public Vector<String> indataline; private String public void run(){ try{ getsocketconnnection(); while(stopsocket == false){ // checks if time is over if(currenttime >= stoptime){ stopsocket = true; System.out.println("The Sockettime is over."); // checks if an Interrupt-Signal was send if(this.isinterrupted() == true){ stopsocket = true; System.out.println("An Interrupt-Signal was send."); line = indata.readline(); if((line!= null) && line.trim().length() > 0){ indataline.add(line); line = ""; catch(){ finally { closesocketconnection(); Listing Abbruchbedingungen und Datenzwischenspeicherung Eine weitere relevante Methode stellt die öffentliche Setter-Methode setthreadinterrupt() dar. Diese ist von außerhalb aufrufbar und dient zum Setzen des Abbruch- bzw. Unterbrechungssignals. Sie ist deshalb so relevant, weil das Signal in der while-schleife als zweite Abbruchbedingung verwendet wird und das Beenden und Schließen der Verbindung erst ermöglicht. In Listing 5.5 wird der Aufruf der Methode dargestellt. public void setthreadinterrupt(){ this.interrupt(); Listing Interrupt-Methode 56

65 5.3 Modul Titration Die SocketReader-Applikation stellt zwei Konstruktoren zur Verfügung. Dem ersten Konstruktor müssen bei Instanziierung des Objekts die Parameter Host und Port übergeben werden. Der zweite Konstruktor bietet die Alternative, die entsprechend benötigen Daten aus einer Konfigurationsdatei auszulesen. Dazu wird dem Konstruktor der Speicherort der Config-Datei als Parameter mitgeteilt. Listing 5.6 stellt die zwei Konstruktoren dar. public Socket Reader(String host, String port){ this.host = host; this.port = port; public SocketReader(String[] args){ this.argstringarray = args; this.readconfstatus = true; Listing Konstruktoren der Klasse TitrationControler Mittels der Klasse ConfigReader aus dem Miele Package net.miele.de.java.tools.io werden die aus der Config-Datei benötigten Daten ausgelesen und dem SocketReader in einem Hashtable<String,String>-Objekt bereitgestellt. Das Entgegennehmen der Config-Daten aus der Hashtable erfolgt durch die readconfigdata( )-Methode (siehe Listing 5.7). private Hashtable<String,String> conparms = new Hashtable <String,String>(); private boolean readconfigdata(string[] args) throws Exception{ confreader = new ConfigReader(); // first parameter is config file name. Rest should be redefinitions // of parameters like conecthost or conncetport confreader.createconfiguration(this.conparms, confreader.getconfigstring(args)); this.host = this.conparms.get("connecthost"); this.port = this.conparms.get("connectport"); maxtimetorunstring = this.conparms.get("maxtimetorun"); return true; Listing Konfigurationsmethode readconfigdata() 57

66 5.3 Modul Titration TitrationControler Der TitrationControler ist eine ebenfalls in Java entwickelte Applikation. Diese Klasse ist für das korrekte Speichern der Messdaten in die Informix-Datenbank zuständig. Dazu werden die vom SocketReader bereitgestellten Daten von der Applikation entgegengenommen, weiterverarbeitet und zum Schluss in die Datenbank gespeichert. Das Weiterverarbeiten erledigt der Parser. Listing 5.8 zeigt den internen Aufbau der Klasse mit den wichtigsten Methoden. public class TitrationControler extends Thread { run(){ readconfigdata(){ setmaxtimetorun( ); updatetransactionnumber(); getdatasets(){ init(); connectclient( ); while( ){ getnextdataset( ){ savedata( ); Listing Interner Aufbau des TitrationControlers Tabelle 4.1 weist die für die TitrationControler Anwendung benötigten Datenbanktabellen auf. Tabellenname Funktion zzz_sys_app_config Dient als Konfigurationstabelle in der die Konfigurationsdaten wie z.b. Host oder Port eingetragen sind. zzz_sys_parser_values Wird für den Parser benötigt. In dieser Tabelle stehen die Regeln bzw. Bedingungen drin, nach denen das Parsen ausgeführt wird. a04_dat_test_titration Diese Tabelle speichert die Messdaten, die für das Modul Titration benötigt werden. Tabelle Übersicht der Datenbanktabellen 58

67 5.3 Modul Titration Zunächst einmal erfolgt eine Vorbereitung des TitrationControlers auf die eigentliche Arbeit. Dazu werden die benötigten Konfigurationsdaten mit Hilfe der readconfigdata()- Methode aus der Datenbank ausgelesen. Zu den Konfigurationsdaten zählen die Verbindungsdaten zum Com-Server (connecthost, connectport) sowie die maximal vorgegebene Laufzeit (maxtimetorun). Mit der Hilfsmethode setmaxtimetorun( ) wird der String in eine Zahl umgewandelt, um diese für den Socket-Aufbau lesbar zu machen. Zusätzlich wird die updatetransactionnumber() Methode verwendet, die die letzte Transaktionsnummer aus der Datenbank ermittelt und für den durchzuführenden Messvorgang eine neue Transaktionsnummer (letzte Nummer + 1) generiert. Der etwas detaillierte Aufbau der readconfigdata() Methode wird in Listing 5.9 dargestellt. private boolean readconfigdata(){ try { setdbconinformix(new DBConnectionInformix(dbServer, dbhost, dbport, dbname, dbuser,dbpasswd)); sqldataobject.addstatement("select_config_data", "select valuename, value from informix.zzz_sys_app_config WHERE valuename LIKE 'Titration%'"); sqldataobject.execute("select_config_data"); maxtimetorun = sqldataobject.getresultvalue("select_config_data", 2, x).tostring().trim(); setmaxtimetorun(maxtimetorun); catch (Exception ex) { return false; return true; Listing readconfigdata()-methode zur Ermittlung der Konfigurationsdaten Nachdem die Konfigurationsdaten ermittelt wurden, erfolgen die Vorbereitung und der Aufbau des Parsers sowie die Verbindung zum Com-Server in der getdatasets()- Methode. Die getdatasets()- Methode führt dabei die Aufgaben, gekapselt in weiteren internen Methoden (siehe Listing 5.8), aus. Die erste interne Methode ist die init()-methode. Diese ist für die Initialisierung des Parsers zuständig, d.h. es werden die Regeln bzw. Bedingungswerte für das Parsen aus der Informix-Datenbank ausgelesen und in eine Hashtable datafields eingetragen. Wie bereits genannt, wurden die Bedingungswerte zuvor in der Analyse festgelegt. 59

68 5.3 Modul Titration Dazu wurde der Report, der übers Netzwerk gesendet wurde, analysiert und die benötigen Daten in der entsprechenden Ausgabezeile ermittelt. Die Tabelle 5.3 zeigt einen Ausschnitt der Regeln, die für das Parsen relevant sind. Key Value datasetstart $S PC/LIMS V1 datasetend $S 07 T+ Report $S Result 1C.R1_Col_0 res1name $S Result 1C.R1_Col_1 res1value $S Result 1C.R1_Col_2 res1unit $S Props V2_Col_0 method $S System_V1_Col_1 relativeid $S System_V1_Col_2 absoluteid Tabelle Parser-Tabelle Die ersten zwei Einträge (datasetstart und datasetend) in der Tabelle sind für das Erkennen eines kompletten Datensatzes innerhalb des Datenstroms zuständig. Die weiteren Einträge dienen zum Ermitteln des gewünschten Messwerts (Key) und des Eintragens in die entsprechende Spalte (Value) der Datenbank. Das Listing 5.10 zeigt den Aufbau der init()-methode. private boolean init(){ try { // define an informix sqlquery object SQLIQuery sqlinitobject = new SQLIQuery(dbConInformix); sqlinitobject.addstatement(parserdataname, selectparserdata); sqlinitobject.execute(this.parserdataname); for(row=1; row <= sqlinitobject.getnumofresultrows(parserdataname); row++){ key = sqlinitobject.getresultvalue(parserdataname, "key", row).tostring().trim(); value = sqlinitobject.getresultvalue(parserdataname, "value", row).tostring().trim(); datafields.put(key, value); catch(exception ex){ return false; return true; Listing Aufbau der init()-methode 60

69 5.3 Modul Titration Zunächst einmal wird in der init()-methode ein SQLIQuery-Objekt (sqlinitobject) instanziiert, welches für die Anfragen an die Datenbank zuständig ist. Dem Objekt wird mit der addstatement( )-Methode eine Select-Anweisung zugewiesen und mit sqlinitobject.execute( ) ausgeführt. Danach werden die aus der Parser-Tabelle selektierten Werte key und value in die Hashtable datafields mit der put(key,value)- Methode eingetragen. Nach der init()- wird als nächstes die connectclient()- Methode ausgeführt. Diese ist zuständig für das Instanziieren eines Socket-Objekts der SocketReader-Klasse sowie das Starten dieser Instanz. Zusätzlich wird dem Objekt die maximale Laufzeit mitgeteilt, die zuvor aus der Konfigurationstabelle ermittelt wurde. Des Weiteren prüft die Methode, ob ein Verbindungsaufbau zustande kam. In Listing 5.11 wird die Methode zur Socket-Verbindung dargestellt. private boolean connectclient(string host, String port){ try{ socketreader = new SocketReader(host, port); socketreader.setmaxtimetorun(timetorun); socketreader.start(); //Wait 1sec till the socket is connected TitrationControlBean.sleep(1000); if(socketreader.getisconnected()!= true){ return false; catch( Exception ex ){ return false; return true; Listing connectclient()-methode für die Socketverbindung Nachdem die Verbindung mit der connectclient()-methode aufgebaut und geprüft wurde, wird das Auslesen bzw. das Entgegennehmen der Daten vom SocketReader- Objekt innerhalb der getdatasets()-methode in einer while()-schleife durchgeführt. Dabei wird die Schleife solange ausgeführt, bis die maximale Laufzeit erreicht ist oder alle Messdaten in der Datenbank eingepflegt wurden und von außen ein Abbruchsignal den Durchlauf beendet. Listing 5.12 zeigt den Ablauf der Schleife innerhalb der getdatasets()-methode. 61

70 5.3 Modul Titration datasetcount = 1; while(!socketreader.getisclosed()&&((datasetcount <= noofdatasetstoread) && (currenttime < stoptime))){ indatalinebuffer = socketreader.indataline; if(getnextdataset(indatalinebuffer, datafields.get("datasetstart"), datafields.get("datasetend"))){ datasetcount++; Listing while-schleife in der getdatasets()-methode In der Schleife werden zunächst die empfangen Daten, die vom SocketReader als Vector-Objekt bereitgestellt werden, entgegengenommen und an die interne Methode getnextdataset() weiter gereicht. Diese benötigt als Übergabe Parameter das Vector-Objekt indatalinebuffer sowie die in der Hashtable datafields eingetragen Werte zu den Keys datasetstart und datasetend. Die Werte wurden zuvor aus der Parser-Tabelle in die Hashtable eingetragen (siehe Listing 5.10 init()- Methode). 62

71 5.3 Modul Titration Nach den ganzen Vorbereitungen, wie die Initialisierung und der Verbindungsaufbau, erfolgt das eigentliche Parsen und Speichern der Messdaten in der Methode getnextdataset( ). Um den Vorgang des Parsen zu verdeutlichen, soll das Listing 5.13 noch einmal ein Beispiel eines Report-Auszuges zeigen. In dem Auszug ist der Datensatzstart (grün) und das Datensatzende (gelb), wie in der Parser-Tabelle festgelegt, zu erkennen. Innerhalb eines kompletten Datensatzes einer Messung werden die Daten zeilenweise im Report dargestellt. Dabei werden die Messdaten in einer geschachtelten Form ausgegeben. Die Form sieht dabei folgendermaßen aus: $S Messdatenbezeichnung Messdatum1 Messdatum2 Messdatum3 $E Damit der Parser die richtigen Daten einer Messung auffindet, sucht dieser mit Hilfe der Parser-Regeln nach der Messdatenbezeichnung und erhält die Messdaten in der darunterliegenden Zeile. Die Messdaten werden dabei mit dem Tabulator- Trennzeichen auseinander gehalten. $S PC/LIMS V1 $S Result 1C.R1 V1 Probe ml 0 $E $S Result 1C.R2 V1 Ergebnis ml 0 $E $S Result 1C.R3 V1 ph-init $E $S 07 T+ Report on ok ok $E $E Listing 5.13 Reportauszug mit Beispiel-Messdaten 63

72 5.3 Modul Titration Das Listing 5.14 zeigt den Ablauf der getnextdataset( ) Methode und im Anschluss daran erfolgt eine Erläuterung dieser Methode. private boolean getnextdataset(vector<string> linebuffer, String datastartfilter, String dataendfilter){ try { Hashtable<String,String> newdata = new Hashtable<String,String>(); Integer linebuffersize = linebuffer.size(); Integer datastart=-1; Integer dataend=-1; if(linebuffersize == 0){ return false; // look for end of dataset for(integer line=0; line < linebuffersize;line++){ if(linebuffer.get(line).tostring().matches(dataendfilter)){ dataend = line; break; // look for start of dataset for(integer line=0; line < linebuffersize; line++){ if(linebuffer.get(line).tostring().matches(datastartfilter)){ datastart = line; break; // put all name-value pairs into Hashtable for(integer line = datastart; line < dataend; line++){ //if this line is starting with "$S" and next line is starting //without "$", we put this line and next line into the hashtable String zeile=linebuffer.get(line).tostring(); String zeile_n=linebuffer.get(line+1).tostring(); if(!zeile.matches("^\\$s.*")){ continue; if(!zeile_n.matches("^\\$.*")){ newdata.put(zeile, zeile_n); savedata(newdata); catch (Exception ex){ return true; Listing Aufbau der getnextdataset()-methode 64

73 5.3 Modul Titration Als Erstes wird geprüft, ob die im Vector-Objekt enthaltenen Daten einen Datensatzstart (datastartfilter) und ein Datensatzende (dataendfilter) einer Messung enthalten. Dies ist wichtig, damit ein eindeutiger Datensatz einer Messung identifiziert werden kann. Danach werden die in diesem Datensatz enthalten Zeilen ausgelesen und in die Hashtable newdata gespeichert. Dabei wird zunächst geprüft, ob die Zeilen der geschachtelten Form (1.Zeile Messdatenbezeichnung, 2.Zeile Messdaten) entsprechen. Ist dies der Fall, so wird die erste Zeile (Messdatenbezeichnung) als key und die zweite Zeile als value in der Hashtable hinterlegt. Somit enthält newdata alle Zeilen des einen gefunden Datensatzes. Die Tabelle 5.4 zeigt die Hashtable newdata mit Beispieleinträgen der Datenzeilen. Dabei sind die Messdaten im value-bereich mit dem Tabulatortrennzeichen separiert eingetragen. Key value $S Result 1C.R1 V1 Probe ml 0 $S Result 1C.R2 V1 Ergebnis ml 0 $S Result 1C.R3 V1 ph-init Tabelle Beispieleinträge in der newdata-hashtable Damit die in der Hashtable enthalten Messdaten aus den Datenzeilen herausgefiltert und in die Datenbank gespeichert werden können, wird die savedata( )-Methode verwendet. Als Übergabeparameter erhält die Methode die Hashtable newdata. Da die Methode savedata() eine sehr große Anzahl an Quellcode aufweist und die komplette Darstellung in einem Listing unübersichtlich wirkt bzw. zur Verwirrung führt, werden nur die wichtigsten Funktion dargestellt und erläutert. Das Speichern der Daten erfolgt in einer while-schleife, bei der alle Datenzeilen der Hashtable überprüft und abgearbeitet werden. Um die Messdaten in die Informix Datenbank einzutragen, ist vorher ein Parsing-Prozess nötig, der die benötigten Messdaten aus den übrigen Daten herausfiltert und ein SQL-Statement zum Speichern der Daten generiert. 65

74 5.3 Modul Titration Zunächst einmal wird eine Datenzeile aus der Hashtable newdata ausgelesen und die mit Tabulatortrennzeichen separierten Messdaten mit Hilfe der split( \t )- Methode in ein String-Array hinterlegt. Danach wird das Array in einer for-schleife durchlaufen. In dieser Schleife erfolgt die Überprüfung der Schlüsselwerte (key) beider Hashtables newdata und datafields. Um den Vergleich durchführen zu können, muss der Schlüsselwert aus newdata entsprechend angepasst werden. Dazu wird die Variable keysearch verwendet, die eine Kopie des Schlüsselwerts enthält. Zusätzlich zum Wert wird der String _Col_ und die Indexzahl der for-schleife angehängt. Somit wird exemplarisch aus dem Wert $S Result 1C.R1 V1 der neue Wert $S Result 1C.R1 V1_Col_1. Nun ist der neu generierte Wert mit den Schlüsselwerten aus datafields vergleichbar. Mit dem Aufruf datafields.containskey(keysearch) wird geprüft, ob der neu generierte Schlüsselwert in der datafields-hashtable enthalten ist. Ist dies nicht der Fall, so wird in der for-schleife fortgefahren. Besteht eine Übereinstimmung, so wird der value- Wert zum entsprechenden key-wert aus datafields entnommen und in die String- Variable colname gespeichert. Der dazugehörige Messwert wird aus dem String- Array ausgelesen und in colvalue hinterlegt. Um einen Insert- oder Update-Befehl (Statement) in der Datenbank ausführen zu können, muss das Statement vorher zusammengebaut werden. Dazu werden die beiden Werte colname und colvalue an die entsprechenden StringBuffer-Variablen sqlcolnames und sqlcolvalues angehängt. Den beschriebenen Vorgang soll das Listing 5.15 verdeutlichen. Anmerkung: Die gesamte Methode savedata() wird zur besseren Lesbarkeit und Übersicht in drei Bereiche (Listing 5.15 bis Listing 5.17) eingeteilt und erläutert. 66

75 5.3 Modul Titration private boolean savedata(hashtable newdata){ try{ if(!dbconinformix.getconnection()){ return false; Enumeration enumnewdata = newdata.keys(); while(enumnewdata.hasmoreelements()){ // Key of current Object String newdatakey = enumnewdata.nextelement().tostring(); String newdatavalue = newdata.get(newdatakey).tostring(); String[] newdatavaluearray = newdatavalue.split("\t"); Integer datamaxindex = newdatavaluearray.length; StringBuffer keysearch = new StringBuffer(); // work through values for(integer index = 0; index < datamaxindex;index++){ keysearch.append(newdatakey); keysearch.append("_col_"); keysearch.append(index.tostring()); if(datafields.containskey(keysearch.tostring())){ String colname = datafields.get(keysearch.tostring()); String colvalue = newdatavaluearray[index]; sqlcolnames.append(colname); sqlcolvalues.append(colvalue); //Ende-FOR-Schleife // Ende-WhILE-Schleife Listing 5.15 Parsing-Vorgang in der savedata()-methode Nachdem die kompletten Datenzeilen durchlaufen und die Werte in die entsprechenden Variablen sqlcolnames und sqlcolvalues eingetragen wurden, erfolgt das Zusammenbauen der SQL-Statements und das anschließende Speichern der Messdaten in die Datenbank. Als erstes wird überprüft, ob bereits ein Datensatz mit der relativen und der absoluten ID in der Datenbanktabelle a04_dat_test_titration vorhanden ist. Ist dies nicht der Fall, so wird der Datensatz mit dem Insert-Statement eingetragen. Besteht bereits ein Datensatz, so wird dieser Datensatz mit dem Update-Statement aktualisiert. Der Zusammenbau eines SQL-Statements erfolgt mit den Methoden addstatement( ) und appendsqlcode( ) und das Ausführen des Statements mit execute( ). 67

76 5.3 Modul Titration sqldataobject.addstatement("select", "select * from a04_dat_test_titration where "); sqldataobject.appendsqlcode("select", wherespaltenname1 +"="+ wherespaltenvalue1); sqldataobject.appendsqlcode("select"," and "+ wherespaltenname2 + "=" + wherespaltenvalue2); sqldataobject.appendsqlcode("select"," and creation is null"); if(!sqldataobject.execute("select")){ return false; Listing Zusammenbau des Select-Statements Ist das Select-Statement zusammengebaut und ausgeführt worden, so wird als nächstes mit der Methode getnumofresultrows( select ) die Anzahl der selektierten Datensätze geprüft. Entsprechend des Ergebnisses 0 oder 1 wird entweder ein Insert- oder ein Update- Befehl benötigt. Dabei wird zunächst das Insert- bzw. das Udpate-Statement zusammengebaut und mit der execute-methode ausgeführt. Das Listing 5.17 zeigt die Ausführung beider Statements. Der Aufbau der Statements wird im Listing jedoch nicht aufgeführt, da der Ablauf sich analog zum Aufbau des Select-Statements aus Listing 5.16 verhält. 68

77 5.3 Modul Titration //if result is 0, do an insert if(sqldataobject.getnumofresultrows("select") == 0){ // Zusammenbau des insert-statements if(!sqldataobject.execute("insert")){ return false; return true; //if result is 1, do an update if(sqldataobject.getnumofresultrows("select") == 0){ // Zusammenbau des update-statements if(!sqldataobject.execute("update")){ return false; return true; else { return false; catch(exception ex){ return false; return true; Listing Ausführung des Insert- und Update-Befehls TitrationStarterBean Die TitrationStarterBean ist eine sehr kompakte Klasse mit nur wenigen Methoden. Diese sind öffentliche Getter- und Setter-Methoden, welche als Informationsaustausch zwischen ProLab und dem TitrationControler dienen sowie die Abbruchsignale durchreichen. Listing 5.18 zeigt den Ablauf der TitrationStarterBean. Die Methode getstarten() ist für das Instanziieren und Starten der TitrationControler- Klasse zuständig. Dabei wird die run()-methode im Konstruktor des TitrationControler-Objekts aufgerufen und somit gestartet. Damit das ProLab-System den aktuellen Arbeitsstatus des Objekts kennt, wird die getworkstatus()-methode verwendet. Diese gibt eines der 4 Zustände aus: 0 für TitrationControler noch nicht gestartet, 1 für TitrationControler wird zur Zeit ausgeführt, 2 für TitrationControler hat die Arbeit erfolgreich ausgeführt und 3 für TitrationControler ist auf ein Fehler gestoßen und wurde beendet. 69

78 5.3 Modul Titration Die Methode getissocketclosed() dient zum Erfragen des Socket-Status im ProLab- System. Diese gibt den boolean-wert true zurück, wenn der Socket vom SocketReader geschlossen wurde. Andernfalls ist der Wert false. Um ein Abbruchsignal vom ProLab-System an den TitrationControler und den SocketReader zu senden, wird die setdisconnectclient()-methode verwendet. Dabei führt das Abbruchsignal zu einem kontrollierten Beenden der zwei Klassen. public class TitrationStarterBean { public TitrationControler titration; public int getstarten(){ titration = new TitrationControler(); return 1; public int getworkstatus(){ if(titration!= null){ return titration.getworkstatus(); return 0; public boolean getissocketclosed(){ if(titration!= null){ return titration.getissocketclosed(); return true; public void setdisconnectclient(){ if(titration!= null){ titration.disconnectclient(); Listing Aufbau der TitrationControler Bean 70

79 5.3 Modul Titration Titrationsverwaltung GUI des Moduls Titration Das ProLab-System ist eine webbasierte Anwendung zur Prüfungsverwaltung. Die grafische Benutzeroberfläche basiert auf Seiten, den sogenannten Masken, die mit der JSP-Technologie realisiert werden. Für das Modul Titration werden ebenfalls Masken benötigt, die den Titrationsprozess als Workflow abbilden. Dabei gliedern sich die Masken in 3 Bereiche: Synchronisationsvorgang, Messvorgang, Messdatenübersicht. Für fast alle Masken werden nahezu die gleichen JSP-Techniken in einer abgeänderten Form angewendet. Deshalb soll in diesem Abschnitt eine allgemeine Zusammenfassung der relevanten Techniken bzw. des Quellcodes aufgeführt werden. Im Anschluss werden die Masken und deren Funktion vorgestellt. Es wird jedoch kein detaillierter Quellcode zu den einzelnen Masken dargestellt, da dies den Rahmen der Arbeit stark ausweiten würde. Folgende Techniken werden dabei kurz erläutert: Sessions, Hidden Fields, Forwarding und Datenverwaltung in JSPs. Sessions Eine der Grundvoraussetzungen des ProLab-Systems ist die eindeutige Identifizierung des Benutzers über mehrere Masken hinweg innerhalb einer Sitzung. Um zusammengehörige Anfragen und Antworten eines Benutzer über mehrere Masken erkennen und zuordnen zu können, bieten die meisten Webserver, wie auch der Tomcat-Application-Server, die Session-Technik an. Eine Session ist eine Sitzung, die über die Session-ID (eindeutige Identifikationsnummer der Sitzung) den Benutzer authentifiziert. Dabei soll innerhalb des ProLab-Systems die Session- Technik sowohl mit eingeschalteten Browser-Cookies als auch ohne funktionieren. Bei Verwendung von Cookies erfolgt eine Übertragung der Session-ID an den Server über den Header des HTTP-Protokolls. Werden diese nicht verwendet, so muss die ID über die Webadresse (URL) übertragen werden. Der Tomcat-Application-Server stellt dazu die komfortable Methode response.encodeurl( Webadresse ) zur Verfügung, der die Session-ID als Parameter an die URL anhängt. 71

80 5.3 Modul Titration Das Listing 5.19 zeigt ein Beispiel zur Verwendung der oben genannten Methode innerhalb eines HTML-Formulars. <a href="<%= response.encodeurl("./prolab/link.jsp") %>">TestLink<a> URL-Ergebniss: "./ProLab/link.jsp?sid=edb0e8665db4e9042fe0176a89aade16" Listing Verwendung der Sessions mit Hilfe der encodeurl()-methode Versteckte Formularfelder (Hidden Fields) Um Informationen von einer Maske an eine andere weiterzuleiten, die aber für den Anwender selber nicht relevant bzw. nicht sichtbar sein sollen, werden häufig versteckte Elemente verwendet. Diese Elemente verwendet man in HTML- Formularen und nennt sie Hidden Fields. Die Daten in den Feldern werden mit dem Formular versendet (s. Listing 5.20) und können in der anderen Maske mit Hilfe der Methode request.getparameter( ) ausgelesen werden (s. Listing 5.21). <form action="<%=response.encodeurl("/seite2.jsp")%>" method="post"> <input type="hidden" name="testname" value="testtext"> <input type="submit" value="absenden"> </form> Listing 5.20 Senden einer Information mit einem Hidden Field <% String infotext = request.getparameter("testname"); %> Ergebnis in infotext: TestText Listing Auslesen der Information aus einem Hidden Field Automatische Weiterleitung (Forwarding) Im Modul Titration soll in einigen Masken, ohne Eingriff des Anwenders, eine automatische Weiterleitung oder Forwarding zu einer anderen Maske erfolgen. Solch eine Situation ist z.b. eine Weiterleitung zu einer Fehlermeldungsmaske im Fehlerfall oder eine Weiterleitung zur Übersichtsmaske bei einem erfolgreich abgeschlossenen Messvorgang. Mit Hilfe der JSP-Aktion forward ist dies einfach zu realisieren (s. Listing 5.22). <jsp:forward page="seite2.jsp" /> Listing Automatische Weiterleitung zur nächsten Maske 72

81 5.3 Modul Titration Datenverwaltung in JSPs In ProLab werden alle relevanten Daten in Datenbanktabellen hinterlegt. Auch Masken werden durch Informationen aus den Tabellen generiert. Diese Richtlinie bzw. Vorgehensweise gilt auch für das Modul Titration. In Kapitel sind wir bereits auf die Datenbankverbindung und das Datenbankobjekt eingegangen. Die Datenverwaltung (Selektierung und Speicherung) in JSPs erfolgt dabei genauso wie in der Java-Klasse TitrationControler. Dabei wird zunächst ein Datenbankobjekt aus dem Pool aufgenommen. Im Anschluss wird ein SQLIQuery-Objekt instanziiert und die SQL-Statements mit addstatement() dem Objekt übergeben. Zum Schluss werden die Statements mit der execute()-methode ausgeführt. Das Listing 5.23 soll den Ablauf der Datenverwaltung verdeutlichen. DBConnection connection = DBConPoolObj.getDbCon(); SQLIQuery query = new SQLIQuery(connection); query.addstatement("select", "SELECT name FROM test WHERE id = 2"); query.addstatement("insert", "INSERT INTO test (name, alter) VALUES ('Alex',26)); query.addstatement("update", "UPDATE test SET name = 'Paul' WHERE id = 5); query.execute("select"); query.execute("insert"); query.execute("update"); Listing Instanziierung und Ausführung der SQL-Statements Um die selektierten Daten auslesen und verarbeiten zu können, wird die getresultvalue()-methode verwendet. Dabei werden der Name des Select- Statements, die Spalte und die Zeile als Parameter der Methode übergeben. Einen Beispielaufruf zum Auslesen eines Datums aus einem Query-Objekt zeigt das Listing String name; int spalte = 1; int zeile = 1; name = query.getresultvalue("select",spalte, zeile).tostring().trim(); Listing Auslesen der Daten aus dem Query-Objekt 73

82 5.3 Modul Titration Synchronisationsvorgang Als erster Abschnitt der Titration erfolgt der Synchronisationsvorgang im ProLab- System, bei dem die relative und absolute ID des Titrierautomaten ermittelt werden soll. Dabei wird die sync_start.jsp-seite als Einstiegsseite des Moduls Titration angezeigt (s. Abb. 5.1). Die Masken sind in ProLab unter dem Logobereich stets in 3 Bereiche gegliedert: 1 Navigations-Bereich, 2 Haupt-Bereich (Content) und 3 Menü-Bereich. Abb Einstiegsseite des Moduls Titration Um den Vorgang zu starten, klickt der Anwender im Content-Bereich auf den Start- Button. Dies führt zu einer Weiterleitung auf die nächste Synchronisationsseite, bei der die JavaBean TitrationStarterBean den TitrationControler im Hintergrund startet und auf den Eingang von Daten im Netzwerk lauscht. Abb Durchführung der Synchronisation 74

83 5.3 Modul Titration Auf der nun dargestellten Maske (Abb. 5.2) wird der Mitarbeiter aufgefordert, die Synchronisation am Titrierautomaten auszuführen. Dazu wählt er die Sync-Methode aus und startet den Vorgang. Die Seite aktualisiert sich alle 5 Sekunden und prüft, ob der Sync-Vorgang abgeschlossen wurde. Der Anwender kann den Vorgang jeder Zeit manuell abbrechen. Bei Abbruch gelangt er wieder zur Startseite. War der Vorgang erfolgreich, so wird dem Anwender die neue Maske (Abb. 5.3) zur Kontrolle des Synchronisationsvorgangs dargestellt. Der Labormitarbeiter vergleicht den Wert an der Maske mit dem Wert am Ausdruck und bestätigt die Kontrolle bei Gleichheit. Sollten die Werte nicht gleich sein, so muss ein neuer Synchronisationsvorgang durchgeführt werden. Trat während des Vorgangs ein Fehler auf, so wird der Vorgang kontrolliert beendet und eine Fehlermeldung ausgegeben (Abb. 5.4). Abb Überprüfung des Synchronisationsvorgangs Abb Fehlerfall im Synchronisationsvorgang 75

84 5.3 Modul Titration Messvorgang Nachdem der Synchronisationsvorgang abgeschlossen wurde, erfolgt die Vorbereitung zu den Messungen. Dazu wird die Maske measure_set_pnr.jsp (Abb. 5.5) automatisch aufgerufen. Der Anwender trägt in die Suchmaske die gewünschte Prüfungsnummer, zu der er die Messungen durchführen möchte, ein und erhält eine Vorauswahl der Prüfungsnummern, die seiner Suche entsprechen. Dabei kann der Anwender eine vollständige oder nur Teile einer Prüfungsnummer angeben und die Datenbank gibt ihm die entsprechenden Prüfungen heraus. Abb Messvorbereitung: Auswahl der Prüfungsnummer Nach der Auswahl der Prüfungsnummer werden der Messvorgangstabelle automatisch Messungen zugewiesen (s. Abb. 5.6). Pro Prüfung ist es jeweils eine Messung für die Probe und eine für die Blindprobe. Nachdem der Anwender alle Prüfungen mit den zugehörigen Messungen in der Tabelle eingetragen hat, bestätigt er die Messvorgangstabelle, indem er den Messvorgang startet. 76

85 5.3 Modul Titration Abb Abgeschlossene Messvorbereitung am ProLab-System Nachdem der Messvorgang im ProLab-System gestartet (s. Abb. 5.7) und die Messungen am Titrierautomaten vorbereitet wurden, startet der Labormitarbeiter den Messvorgang direkt am Titrierautomaten. Abb ProLab-System ist bereit für die Messdatenerfassung 77

86 5.3 Modul Titration Während des laufenden Messvorgangs aktualisiert sich die Maske alle 5 Sekunden automatisch und gibt den Verlauf bzw. den Status der Messungen wieder (Abb. 5.8). In dieser Maske kann der Vorgang ebenfalls manuell abgebrochen werden. Abb laufender Messvorgang Sind alle Messungen abgeschlossen, so wird dem Labormitarbeiter in der Maske measure_control.jsp (Abb. 5.9) noch einmal die Messvorgangstabelle angezeigt und ein Hinweis zur Einsicht bzw. Bearbeitung der Messdaten gegeben. Abb Abgeschlossener Messvorgang 78

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Apache Tomcat. Inhalt. Rechner und Netzarchitektur SS 2003. Einleitung. Architektur

Apache Tomcat. Inhalt. Rechner und Netzarchitektur SS 2003. Einleitung. Architektur Apache Tomcat Rechner und Netzarchitektur SS 2003 Johannes Jabornig Daniel Peintner Inhalt Einleitung Was sind Servlets und JSP Vorteile Architektur Catalina Jasper Konnektoren Installation / Konfiguration

Mehr

Web 2.0 Software-Architekturen

Web 2.0 Software-Architekturen Web 2.0 Software-Architekturen Servlets als Controller einer MVC Web Architektur Prof. Dr. Nikolaus Wulff HTTP und HTML Das HyperText TransferProtokoll (HTTP) beschreibt eine einfache verbindungslose Kommunikation,

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

Übung 1: Ein Website News-System mit MySQL

Übung 1: Ein Website News-System mit MySQL Übung 1: Ein Website News-System mit MySQL In der Vorübung haben wir bereits mit Hilfe eines ERMs den Datenbankentwurf erstellt und daraus die folgenden Tabellen abgeleitet: Nun muss diese Datenbank in

Mehr

TimeSafe Leistungserfassung

TimeSafe Leistungserfassung Keep your time safe. TimeSafe Leistungserfassung Adressimport 1/8 Inhaltsverzeichnis Inhaltsverzeichnis... 2 1 Allgemeines... 3 1.1 Adressen in der TimeSafe Leistungserfassung... 3 1.2 Organisationen und/oder

Mehr

Tomcat Konfiguration und Administration

Tomcat Konfiguration und Administration Tomcat Konfiguration und Administration Seminarunterlage Version: 8.01 Version 8.01 vom 4. Februar 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen

Mehr

Grundlagen der EDV 3. Vorlesung mit Übungen. Dipl. Ing. Martin Ney

Grundlagen der EDV 3. Vorlesung mit Übungen. Dipl. Ing. Martin Ney Grundlagen der EDV 3 Vorlesung mit Übungen Dipl. Ing. Martin Ney Grundlagen der EDV 3 HTML und CSS HTML und PHP CMS Datenbanken SQL Grundlagen der EDV 2/29 Internetprotokolle HTTP zum Abruf von Internetdateien

Mehr

Konzept eines Datenbankprototypen. 30.06.2003 Folie 1 Daniel Gander / Gerhard Schrotter

Konzept eines Datenbankprototypen. 30.06.2003 Folie 1 Daniel Gander / Gerhard Schrotter Konzept eines Datenbankprototypen 30.06.2003 Folie 1 Daniel Gander / Gerhard Schrotter Inhalt (1) Projektvorstellung & Projektzeitplan Softwarekomponenten Detailierte Beschreibung der System Bausteine

Mehr

Unterabfragen (Subqueries)

Unterabfragen (Subqueries) Unterabfragen (Subqueries) Die kürzeste Formulierung ist folgende: SELECT Felderliste FROM Tabelle1 WHERE Tabelle1.Feldname Operator (SELECT Feldname FROM Tabelle2 WHERE Bedingung); wobei Tabelle1 und

Mehr

Installation Anleitung für JTheseus und MS SQL Server 2000

Installation Anleitung für JTheseus und MS SQL Server 2000 Installation Anleitung für JTheseus und MS SQL Server 2000 Inhaltsverzeichnis 1 Installation der Datenbank 3 1.1 Erstellen der Datenbank 3 1.2 Tabellen und Minimal Daten einlesen 4 1.3 Benutzer JTheseus

Mehr

TECHNISCHE PRODUKTINFORMATION CARUSO

TECHNISCHE PRODUKTINFORMATION CARUSO 1111 TECHNISCHE PRODUKTINFORMATION CARUSO TECHNISCHE PRODUKTINFORMATION Seite 0/7 Inhalt 1 Systemdefinition............2 2 Technische Details für den Betrieb von CARUSO......2 2.1 Webserver... 2 2.2 Java

Mehr

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 Software Testing Automatisiert Manuell 100% 70% 1 Überwiegender Teil der Testing Tools fokusiert auf automatisiertes Testen Microsoft

Mehr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr Raum: LF 230 Bearbeitung: 9.-11. Mai 2005 Datum Gruppe Vorbereitung Präsenz Aktuelle Informationen unter: http://www.is.informatik.uni-duisburg.de/courses/dbp_ss03/ Tabellen in IBM DB2 Tabellen Eine relationale

Mehr

Version 4.4. security.manager. Systemvoraussetzungen

Version 4.4. security.manager. Systemvoraussetzungen Version 4.4 security.manager Systemvoraussetzungen Version 4.4 Urheberschutz Der rechtmäßige Erwerb der con terra Softwareprodukte und der zugehörigen Dokumente berechtigt den Lizenznehmer zur Nutzung

Mehr

Handbuch DrahtexLabelwriter 3.0

Handbuch DrahtexLabelwriter 3.0 Handbuch DrahtexLabelwriter 3.0 Inhaltsverzeichnis INSTALLATION 3 DER PROGRAMMSTART 7 DIE PROGRAMMOBERFLÄCHE 8 DIE STARTSEITE DES PROGRAMMES 8 DIE PROGRAMMSYMBOLLEISTE 9 EIN NEUES PROJEKT ERSTELLEN 10

Mehr

Grundlagen der Verwendung von make

Grundlagen der Verwendung von make Kurzskript zum Thema: Grundlagen der Verwendung von make Stefan Junghans Gregor Gilka 16. November 2012 1 Einleitung In diesem Teilskript sollen die Grundlagen der Verwendung des Programmes make und der

Mehr

09.06.2003 André Maurer andre@maurer.name www.andre.maurer.name Wirtschaftsinformatik FH 3.5 Fachhochschule Solothurn, Olten

09.06.2003 André Maurer andre@maurer.name www.andre.maurer.name Wirtschaftsinformatik FH 3.5 Fachhochschule Solothurn, Olten Aktuelle Themen der Wirtschaftsinformatik Zusammenfassung 09.06.2003 André Maurer andre@maurer.name www.andre.maurer.name Wirtschaftsinformatik FH 3.5 Fachhochschule Solothurn, Olten 1 Serverseitige Webprogrammierung

Mehr

Technische Beschreibung: EPOD Server

Technische Beschreibung: EPOD Server EPOD Encrypted Private Online Disc Technische Beschreibung: EPOD Server Fördergeber Förderprogramm Fördernehmer Projektleitung Projekt Metadaten Internet Foundation Austria netidee JKU Linz Institut für

Mehr

PostgreSQL unter Debian Linux

PostgreSQL unter Debian Linux Einführung für PostgreSQL 7.4 unter Debian Linux (Stand 30.04.2008) von Moczon T. und Schönfeld A. Inhalt 1. Installation... 2 2. Anmelden als Benutzer postgres... 2 2.1 Anlegen eines neuen Benutzers...

Mehr

Remote Communications

Remote Communications HELP.BCFESDEI Release 4.6C SAP AG Copyright Copyright 2001 SAP AG. Alle Rechte vorbehalten. Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind, zu welchem Zweck und in welcher

Mehr

RÖK Typo3 Dokumentation

RÖK Typo3 Dokumentation 2012 RÖK Typo3 Dokumentation Redakteur Sparten Eine Hilfe für den Einstieg in Typo3. Innpuls Werbeagentur GmbH 01.01.2012 2 RÖK Typo3 Dokumentation Inhalt 1) Was ist Typo3... 3 2) Typo3 aufrufen und Anmelden...

Mehr

1. Java Grundbegriffe

1. Java Grundbegriffe 1. Java Grundbegriffe Geschichte von Java Programmieren mit Java Interpretieren vs. Kompilieren Java Byte-Code Jave Virtual Machine Arbeitsmaterialien Allgemeine Informatik 2 SS09 Folie 1.1 Java, eine

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Die Structured Query Language SQL Prof. Dr. Nikolaus Wulff SQL Das E/R-Modell lässt sich eins zu eins auf ein Tabellenschema abbilden. Benötigt wird eine Syntax, um Tabellen

Mehr

JSP und Servlet Programmierung

JSP und Servlet Programmierung Seminarunterlage Version: 5.02 Copyright Version 5.02 vom 1. März 2013 Dieses Dokument wird durch die veröffentlicht. Copyright. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen

Mehr

Manueller Import von Dateien

Manueller Import von Dateien PhPepperShop Enterprise Datum: 22. Mai 2015 Version: 1.2 Manueller Import von Dateien Importe/Exporte Business Connector Glarotech GmbH Inhaltsverzeichnis 1. Manueller Import von Dateien im Caller...3

Mehr

CaseWare Monitor. ProduktNEWS CaseWare Monitor. Version 4.3. Mehr Informationen zu CaseWare Monitor und unseren anderen Produkten & Dienstleistungen

CaseWare Monitor. ProduktNEWS CaseWare Monitor. Version 4.3. Mehr Informationen zu CaseWare Monitor und unseren anderen Produkten & Dienstleistungen Mit der aktuellen Version hält eine komplett neu konzipierte webbasierte Anwendung Einzug, die sich neben innovativer Technik auch durch ein modernes Design und eine intuitive Bedienung auszeichnet. Angefangen

Mehr

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung Inhalt Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle Daten und Tabellen Normalisierung, Beziehungen, Datenmodell SQL - Structured Query Language Anlegen von Tabellen Datentypen (Spalten,

Mehr

[DIA] Webinterface 2.4

[DIA] Webinterface 2.4 [DIA] Webinterface 2.4 2 Inhalt Inhalt... 2 1. Einleitung... 3 2. Konzept... 4 2.1 Vorteile und Anwendungen des... 4 2.2 Integration in bestehende Systeme und Strukturen... 4 2.3 Verfügbarkeit... 5 3.

Mehr

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Entwicklung von Web-Anwendungen auf JAVA EE Basis Entwicklung von Web-Anwendungen auf JAVA EE Basis Java Enterprise Edition - Überblick Prof. Dr. Bernhard Schiefer Inhalt der Veranstaltung Überblick Java EE JDBC, JPA, JNDI Servlets, Java Server Pages

Mehr

Benutzerdokumentation Web-Portal

Benutzerdokumentation Web-Portal GRUPP: SWT0822 Benutzerdokumentation Web-Portal Yet Another Reversi Game Martin Gielow, Stephan Mennicke, Daniel Moos, Christine Schröder, Christine Stüve, Christian Sura 05. Mai 2009 Inhalt 1. Einleitung...3

Mehr

Server Installation 1/6 20.10.04

Server Installation 1/6 20.10.04 Server Installation Netzwerkeinrichtung Nach der Installation müssen die Netzwerkeinstellungen vorgenommen werden. Hierzu wird eine feste IP- Adresse sowie der Servername eingetragen. Beispiel: IP-Adresse:

Mehr

JE Web Services. Hinweise. Beschreibung. Doku.-Version: 1.0 Letzte Änderung: 02.02.2011

JE Web Services. Hinweise. Beschreibung. Doku.-Version: 1.0 Letzte Änderung: 02.02.2011 Beschreibung Hinweise Doku.-Version: 1.0 Letzte Änderung: 02.02.2011 http://www.jacob-computer.de/kontakt.html software@jacob-elektronik.de Inhaltsverzeichnis 1. Inhaltsverzeichnis Hinweise... 1 1. Inhaltsverzeichnis...

Mehr

Effizientes Änderungsmanagement in Outsourcing- Projekten

Effizientes Änderungsmanagement in Outsourcing- Projekten Effizientes Änderungsmanagement in Outsourcing- Projekten Dr. Henning Sternkicker Rational Software IBM Deutschland GmbH Sittarder Straße 31 52078 Aachen henning.sternkicker@de.ibm.com Abstract: Es werden

Mehr

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen C3: Structured Query Language Lernziele: Nach der Bearbeitung dieser Lektion haben Sie folgende Kenntnisse erworben: Sie können elementaren

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Das Studiengangsinformationssystem (SGIS)

Das Studiengangsinformationssystem (SGIS) Das Studiengangsinformationssystem (SGIS) Manual für Typo3-Redakteure Version 1.a Mai 2015 Kontakt: Referat 1.4 - Allgemeine Studienberatung und Career Service Christian Birringer, christian.birringer@uni-rostock.de

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

In die Zeilen würden die Daten einer Adresse geschrieben werden. Das Ganze könnte in etwa folgendermaßen aussehen:

In die Zeilen würden die Daten einer Adresse geschrieben werden. Das Ganze könnte in etwa folgendermaßen aussehen: 1 Einführung in Datenbanksysteme Fast jeder kennt Excel und hat damit in seinem Leben schon einmal gearbeitet. In Excel gibt es Arbeitsblätter, die aus vielen Zellen bestehen, in die man verschiedene Werte

Mehr

A-Plan 12.0. Zeiterfassung 2.0. Ausgabe 1.1. Copyright. Warenzeichenhinweise

A-Plan 12.0. Zeiterfassung 2.0. Ausgabe 1.1. Copyright. Warenzeichenhinweise A-Plan 12.0 Zeiterfassung 2.0 Ausgabe 1.1 Copyright Copyright 1996-2014 braintool software gmbh Kein Teil dieses Handbuches darf ohne ausdrückliche Genehmigung von braintool software gmbh auf mechanischem

Mehr

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1 Fachhochschule Kaiserslautern Fachbereiche Elektrotechnik/Informationstechnik und Maschinenbau Labor Datenbanken Versuch 1 : Die Grundlagen von MySQL ------------------------------------------------------------------------------------------------------------

Mehr

Apparo Fast Edit Datenmanagement mit der Standalone Version Technische Übersicht

Apparo Fast Edit Datenmanagement mit der Standalone Version Technische Übersicht Apparo Fast Edit Datenmanagement mit der Standalone Version Technische Übersicht 2 Apparo Fast Edit ist die das Standardprogramm für unternehmensweite Dateneingabe, mit der Sie Daten ändern, importieren

Mehr

DB2 SQL, der Systemkatalog & Aktive Datenbanken

DB2 SQL, der Systemkatalog & Aktive Datenbanken DB2 SQL, der Systemkatalog & Aktive Datenbanken Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele Auf DB2 Datenbanken zugreifen DB2 Datenbanken benutzen Abfragen ausführen Den Systemkatalog

Mehr

eadmin Manual Universitätsstraße 3 56070 Koblenz Deutschland

eadmin Manual Universitätsstraße 3 56070 Koblenz Deutschland DOKUMENT: TYP: ERSTELLT VON: Manual nova ratio AG Universitätsstraße 3 56070 Koblenz Deutschland VERSION: STAND: 9.x 23. September 2015 Inhaltsverzeichnis 1 2 2.1 2.2 2.3 3 3.1 3.2 3.3 4 4.1 4.2 4.3 4.4

Mehr

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4

Mehr

Relationale Datenbanken in der Praxis

Relationale Datenbanken in der Praxis Seite 1 Relationale Datenbanken in der Praxis Inhaltsverzeichnis 1 Datenbank-Design...2 1.1 Entwurf...2 1.2 Beschreibung der Realität...2 1.3 Enitiy-Relationship-Modell (ERM)...3 1.4 Schlüssel...4 1.5

Mehr

Softwareentwicklungspraktikum Sommersemester 2007. Testdokumentation

Softwareentwicklungspraktikum Sommersemester 2007. Testdokumentation Softwareentwicklungspraktikum Sommersemester 2007 Testdokumentation Auftraggeber Technische Universität Braunschweig

Mehr

Mehr Dynamik in Apex mit Javascript und JQuery. Alexander Scholz its-people

Mehr Dynamik in Apex mit Javascript und JQuery. Alexander Scholz its-people Vortrag zur DOAG Konferenz 2011 Mehr Dynamik in Apex mit und Alexander Scholz its-people 1 Ablauf Thema des Vortragsthemas Motivation Besonderheit des Referenten Alexander Scholz its-people Wie kann in

Mehr

Konzepte zur Datenhaltung für Webseiten in einem Web-Content- Management-System

Konzepte zur Datenhaltung für Webseiten in einem Web-Content- Management-System Konzepte zur Datenhaltung für Webseiten in einem Web-Content- Management-System Web-Content-Management-Systeme () dienen dazu, komplexe Websites zu verwalten und den Autoren einzelner Webseiten möglichst

Mehr

Das Listen Abgleich Interface wird einfach über Doppelklick auf die Datei Listen-Abgleich-Interface.accde gestartet.

Das Listen Abgleich Interface wird einfach über Doppelklick auf die Datei Listen-Abgleich-Interface.accde gestartet. Anleitung Listen Abgleich Interface Was macht das Listen Abgleich Interface? Das Listen Abgleich Interface importiert und gleicht Excel Listen, welche beispielsweise aus Web Kontaktformularen, Adresszukäufen

Mehr

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695 Database Exchange Manager Replication Service- schematische Darstellung Replication Service- allgemeines Replikation von Daten von bzw. in ein SAP-System und einer relationalen DMS-Datenbank Kombination

Mehr

dpa-infocom - Datenlieferung

dpa-infocom - Datenlieferung dpa-infocom - Datenlieferung Copyright 2006 von dpa-infocom GmbH Status des Dokuments: FINAL Inhaltsverzeichnis Inhaltsverzeichnis...1 1. Verzeichnisstrukturen...2 2. Nachrichtenmanagement...2 3. Datenübertragung...3

Mehr

AJAX SSL- Wizard Referenz

AJAX SSL- Wizard Referenz AJAX SSL- Wizard Referenz Version 1.0.2+ - 04.04.2011 Präambel Die vorliegende Dokumentation beschreibt den AJAX basierten SSL- Wizard der CertCenter AG. Der SSL- Wizard kann mit wenigen Handgriffen nahtlos

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans Java Enterprise Edition - Überblick Was ist J2EE Java EE? Zunächst mal: Eine Menge von Spezifikationen und Regeln. April 1997: SUN initiiert die Entwicklung

Mehr

IV. Datenbankmanagement

IV. Datenbankmanagement Wirtschaftsinformatik 2 (PWIN) IV. Datenbankmanagement Kapitel 2: Datenmanipulationssprache SQL Wirtschaftsinformatik 2 (PWIN) SS 2009, Professur für Mobile Business & Multilateral Security 1 Agenda 1.

Mehr

Hinweise zu A-Plan 2009 SQL

Hinweise zu A-Plan 2009 SQL Hinweise zu A-Plan 2009 SQL Für Microsoft Windows Copyright Copyright 2008 BRainTool Software GmbH Inhalt INHALT 2 EINLEITUNG 3 WAS IST A-PLAN 2009 SQL? 3 WANN SOLLTE A-PLAN 2009 SQL EINGESETZT WERDEN?

Mehr

Befragung und empirische Einschätzung der Praxisrelevanz

Befragung und empirische Einschätzung der Praxisrelevanz Befragung und empirische Einschätzung der Praxisrelevanz eines Vorgehensmodells zur Auswahl von CRM-Systemen D I P L O M A R B E I T zur Erlangung des Grades eines Diplom-Ökonomen der Wirtschaftswissenschaftlichen

Mehr

Grundkurs MySQL und PHP

Grundkurs MySQL und PHP Martin Pollakowski Grundkurs MySQL und PHP So entwickeln Sie Datenbanken mit Open-Source-Software vieweg Inhaltsverzeichnis Anwendung und Nutzen von Datenbanken 1 1.1 Was ist eine Datenbank? 1 1.2 Abgrenzung

Mehr

2 7 Erweiterungen. 7.1 Prozess-Kommunikation mit Datenbanken

2 7 Erweiterungen. 7.1 Prozess-Kommunikation mit Datenbanken 2 7 Erweiterungen 7 Erweiterungen 7.1 Prozess-Kommunikation mit Datenbanken Im Buch Einstieg in das Programmieren mit MATLAB wird im Abschnitt 4.8 das Thema Prozess-Kommunikation am Beispiel von MS-Excel

Mehr

Sructred Query Language

Sructred Query Language Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen

Mehr

Migrationsanleitung von 2.0 auf 2.1

Migrationsanleitung von 2.0 auf 2.1 Die wichtigste Neuerung von 2.0 auf 2.1 aus Sicht der Anwendungs- Migration ist die Verwendung von Maven. Mit Maven holt sich die Anwendung alle notwendigen Bibliotheken in den jeweils angegebenen Versionen

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

TimePunch. TimePunch Command. Benutzerhandbuch 14.08.2013. TimePunch KG, Wormser Str. 37, 68642 Bürstadt

TimePunch. TimePunch Command. Benutzerhandbuch 14.08.2013. TimePunch KG, Wormser Str. 37, 68642 Bürstadt TimePunch TimePunch Command Benutzerhandbuch 14.08.2013 TimePunch KG, Wormser Str. 37, 68642 Bürstadt Dokumenten Information: Dokumenten-Name Benutzerhandbuch, TimePunch Command Revisions-Nummer 37 Gespeichert

Mehr

Effiziente Umsetzung der Betriebssicherheitsverordnung BGV A3

Effiziente Umsetzung der Betriebssicherheitsverordnung BGV A3 Effiziente Umsetzung der Betriebssicherheitsverordnung BGV A3 Thomas-Mann-Straße 16 20 90471 Nürnberg www.gossenmetrawatt.com Effiziente Umsetzung der Betriebssicherheitsverordnung, BGV A3 Die Begriffe

Mehr

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11 Datenbanksysteme WS 05/ 06 Gruppe 12 Martin Tintel Tatjana Triebl Seite 1 von 11 Inhaltsverzeichnis Inhaltsverzeichnis... 2 1. Einleitung... 3 2. Datenbanken... 4 2.1. Oracle... 4 2.2. MySQL... 5 2.3 MS

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

Mehr

Entwicklung eines Infotyps (Planung)

Entwicklung eines Infotyps (Planung) Entwicklung eines Infotyps (Planung) HELP.PAXX Release 4.6C SAP AG Copyright Copyright 2001 SAP AG. Alle Rechte vorbehalten. Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind,

Mehr

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Informationen zur Datenbank 1. Definition 1.1 Datenbank-Basis Eine Datenbank-Basis ist eine Sammlung von Informationen über Objekte (z.b Musikstücke, Einwohner,

Mehr

Normfall 7.2. Whitepaper. Erstellen eines Normfall Projektspeichers auf Basis einer vorhandenen Installation von:

Normfall 7.2. Whitepaper. Erstellen eines Normfall Projektspeichers auf Basis einer vorhandenen Installation von: Normfall 7.2 Whitepaper Erstellen eines Normfall Projektspeichers auf Basis einer vorhandenen Installation von: Microsoft SQL Server 2008 R2/2012/2014 2014 Normfall GmbH Alle Rechte vorbehalten. Vorbemerkungen

Mehr

Inhaltsverzeichnis. Enterprise Java im Überblick. Technologien der Java2 Enterprise Edition

Inhaltsverzeichnis. Enterprise Java im Überblick. Technologien der Java2 Enterprise Edition Inhaltsverzeichnis Vorwort 13 I Enterprise Java im Überblick 1 Bedeutung von Enterprise Java und IBM WebSphere 21 1.1 Enterprise Java 23 1.1.1 Anforderungen 23 1.1.2 E-Business 30 1.1.3 Java 36 1.2 IBM

Mehr

Gruppe: Swp-11-1 Projektleiter: Martin Walther Stand: 11.05.2011. Pflichtenheft. Bearbeiter: Sebastian Dorn. 1 Zielbestimmungen 2.

Gruppe: Swp-11-1 Projektleiter: Martin Walther Stand: 11.05.2011. Pflichtenheft. Bearbeiter: Sebastian Dorn. 1 Zielbestimmungen 2. Pflichtenheft Bearbeiter: Sebastian Dorn Inhaltsverzeichnis 1 Zielbestimmungen 2 2 Produktübersicht (Soll-Ist-Vergleich) 2 3 Produktfunktionen 2 3.1 Grundsätzliche Änderungen.................................

Mehr

Die Laborjournalführungs-Software professionell - zuverlässig

Die Laborjournalführungs-Software professionell - zuverlässig Produktinformation Die Laborjournalführungs-Software professionell - zuverlässig Integration von InfoChem ICEdit, ensochemeditor, MDL ISIS / Draw und CS ChemDraw Optional mit Schnittstelle zu anderen Datenbanksystemen

Mehr

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221 Oracle 10g und SQL Server 2005 ein Vergleich Thomas Wächtler 39221 Inhalt 1. Einführung 2. Architektur SQL Server 2005 1. SQLOS 2. Relational Engine 3. Protocol Layer 3. Services 1. Replication 2. Reporting

Mehr

1. Installation und Inbetriebnahme pcon.update

1. Installation und Inbetriebnahme pcon.update Manual pcon.update 1. Installation und Inbetriebnahme pcon.update Unter nachfolgendem Link können Sie die erforderliche Software pcon.update herunterladen. ftp://ftpdownload:download-9200@ftp.weber-os.ch/download/pcon/update/p-up-

Mehr

Erweiterung für Premium Auszeichnung

Erweiterung für Premium Auszeichnung Anforderungen Beliebige Inhalte sollen im System als Premium Inhalt gekennzeichnet werden können Premium Inhalte sollen weiterhin für unberechtigte Benutzer sichtbar sein, allerdings nur ein bestimmter

Mehr

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen FAEL-Seminar Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen Prof. Dr. Marc Rennhard Institut für angewandte Informationstechnologie InIT ZHAW Zürcher Hochschule für Angewandte

Mehr

Angreifbarkeit von Webapplikationen

Angreifbarkeit von Webapplikationen Vortrag über die Risiken und möglichen Sicherheitslücken bei der Entwicklung datenbankgestützter, dynamischer Webseiten Gliederung: Einführung technische Grundlagen Strafbarkeit im Sinne des StGB populäre

Mehr

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Präsentation zur Diplomarbeit von Übersicht Java 2 Enterprise Edition Java Servlets JavaServer Pages Enterprise JavaBeans Framework

Mehr

1. Anlegen einer Webseite:... 1 2. Typen... 5 3. Behördenwegweiser:... 7 4. Gemeinsame Dokumente... 10

1. Anlegen einer Webseite:... 1 2. Typen... 5 3. Behördenwegweiser:... 7 4. Gemeinsame Dokumente... 10 Inhaltsverzeichnis 1. Anlegen einer Webseite:... 1 2. Typen... 5 3. Behördenwegweiser:... 7 4. Gemeinsame Dokumente... 10 1. Anlegen einer Webseite: Webordner: Um im komxpress eine neue Webseite anzulegen,

Mehr

ekey TOCAhome pc Software Inhaltsverzeichnis 1. ZWECK DIESES DOKUMENTS... 3 2. VERWENDUNGSHINWEIS ZUR SOFTWARE... 3

ekey TOCAhome pc Software Inhaltsverzeichnis 1. ZWECK DIESES DOKUMENTS... 3 2. VERWENDUNGSHINWEIS ZUR SOFTWARE... 3 Inhaltsverzeichnis Software ekey TOCAhome pc 1. ZWECK DIESES DOKUMENTS... 3 2. VERWENDUNGSHINWEIS ZUR SOFTWARE... 3 3. MONTAGE, INSTALLATION UND ERSTINBETRIEBNAHME... 3 4. VERSION... 3 Version 1.5 5. BENUTZEROBERFLÄCHE...

Mehr

IT-Kompaktkurs. Datenbanken Skript zur Folge 10. Prof. Dr. Dieter Rummler Fachhochschule Deggendorf

IT-Kompaktkurs. Datenbanken Skript zur Folge 10. Prof. Dr. Dieter Rummler Fachhochschule Deggendorf IT-Kompaktkurs Skript zur Folge 10 Prof. Dr. Dieter Rummler Fachhochschule Deggendorf Client Server Architektur Zunächst zur grundsätzlichen Unterscheidung zwischen File-Server Datenbank und Server-Datenbank

Mehr

McAfee Security-as-a-Service -

McAfee Security-as-a-Service - Handbuch mit Lösungen zur Fehlerbehebung McAfee Security-as-a-Service - Zur Verwendung mit der epolicy Orchestrator 4.6.0-Software Dieses Handbuch bietet zusätzliche Informationen zur Installation und

Mehr

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Übung, Sommersemester 2013 29. April 2013 - MySQL 2 Sebastian Cuy sebastian.cuy@uni-koeln.de Aufgaben Anmerkungen Best practice: SQL Befehle

Mehr

Business Intelligence Praktikum 1

Business Intelligence Praktikum 1 Hochschule Darmstadt Business Intelligence SS 2014 Fachbereich Informatik Praktikumsversuch 1 Prof. Dr. C. Wentzel Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 07.05.2014 Business Intelligence Praktikum

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Einführung in SQL Datenbanken bearbeiten

Einführung in SQL Datenbanken bearbeiten Einführung in SQL Datenbanken bearbeiten Jürgen Thomas Entstanden als Wiki-Buch Bibliografische Information Diese Publikation ist bei der Deutschen Nationalbibliothek registriert. Detaillierte Angaben

Mehr

Cassandra Query Language (CQL)

Cassandra Query Language (CQL) Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1 Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten Basic facts CQL kurz für

Mehr

SIENNA Home Connect. Bedienungsanleitung V2.6

SIENNA Home Connect. Bedienungsanleitung V2.6 SIENNA Home Connect Bedienungsanleitung V2.6, Rupert-Mayer-Str. 44, 81379 München, Deutschland Tel +49-89-12294700 Fax +49-89-72430099 Copyright 2015. Inhaltsverzeichnis 1 INSTALLATION... 3 1.1 FW UPDATE

Mehr

Gliederung und Einordnung

Gliederung und Einordnung Gliederung und Einordnung 1. Objektorientierte Programmierung mit Object Pascal (5. Studienbrief, Kapitel 5) 9.4. + 16.4. 2. Software-Bausteine am Beispiel der Delphi-Komponenten (5. Studienbrief, Kapitel

Mehr

Nützliche SQL Statements

Nützliche SQL Statements Dauer dieser Unit 15 Minuten! Unit In dieser Unterrichtseinheit lernen Sie! Die Ablagemaske "Freie Eingabe" an Dokumenten in eine andere Maske umstellen! Berechtigungseinstellungen an ELO Objekten per

Mehr

Software-Engineering 2. Software-Engineering 2. Entwicklungsumgebungen (IDE) IT works. Klaus Mairon www.mairon-online.de 22.03.

Software-Engineering 2. Software-Engineering 2. Entwicklungsumgebungen (IDE) IT works. Klaus Mairon www.mairon-online.de 22.03. Software-Engineering 2 Entwicklungsumgebungen (IDE) IT works. Klaus Mairon www.mairon-online.de 22.03.2009 1 Entwicklungsumgebungen, CASE-Tools, CASE-Werkzeuge unterstützen den Software-Entwicklungsprozess

Mehr

Erste Schritte, um selber ConfigMgr Reports zu erstellen

Erste Schritte, um selber ConfigMgr Reports zu erstellen Thomas Kurth CONSULTANT/ MCSE Netree AG thomas.kurth@netree.ch netecm.ch/blog @ ThomasKurth_CH Erste Schritte, um selber ConfigMgr Reports zu erstellen Configuration Manager Ziel Jeder soll nach dieser

Mehr

15 Bilder und Dateien im SQL Server

15 Bilder und Dateien im SQL Server Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 15 Bilder und Dateien im SQL Server Eines der großen Probleme von Access-Datenbanken ist der vergleichsweise geringe Speicher platz. Sicher,

Mehr

EasternGraphics Produktunterlagen Anleitung zur Migration für pcon.update

EasternGraphics Produktunterlagen Anleitung zur Migration für pcon.update 2007-02-13 [BBA] 2007-02-14 [AWI] Hintergrund Zur Nutzung von pcon.update auf Ihrem System sind Anpassungen in Bezug auf Ihre pcon- Applikationen und OFML-Daten erforderlich. Dies trifft insbesondere dann

Mehr

Dokumentation QuickHMI-Schnittstelle. Datenbanken

Dokumentation QuickHMI-Schnittstelle. Datenbanken Dokumentation QuickHMI-Schnittstelle für SQLServer Datenbanken Version 1.0 D-28359 Bremen info@indi-systems.de Tel + 49 421-989703-30 Fax + 49 421-989703-39 Inhaltsverzeichnis Was ist die QuickHMI-Schnittstelle

Mehr

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung Diese Anleitung hilft Ihnen, das nachfolgend geschilderte Problem zu beheben.

Mehr

Aktuelle Sicherheitsprobleme im Internet

Aktuelle Sicherheitsprobleme im Internet Herbst 2014 Aktuelle Sicherheitsprobleme im Internet Wirtschaftsinformatik: 5. Semester Dozenten: Rainer Telesko / Martin Hüsler Fachhochschule Nordwestschweiz FHNW / Rainer Telesko - Martin Hüsler 1 Inhalt

Mehr