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 --%> <%@page import="java.util.*"%> <%@page import ="java.io.*"%> <%-- SQLInterface --%> <%@page import ="net.miele.de.gtg.kew.itms.sqlinterface.con.*"%> <%@page import ="net.miele.de.gtg.kew.itms.sqlinterface.dbaccess.*"%> <%@page import ="net.miele.de.gtg.kew.itms.sqlinterface.err.*"%> <%-- some ProLab classes --%> <%@page import ="net.miele.de.gtg.kew.itms.prolab.gui.codesnippets"%> <%@page import ="net.miele.de.gtg.kew.itms.prolab.gui.datahandling. DBColumnObject"%> <%@page 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

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

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

1 Konto für HBCI/FinTS mit Chipkarte einrichten

1 Konto für HBCI/FinTS mit Chipkarte einrichten 1 Konto für HBCI/FinTS mit Chipkarte einrichten Um das Verfahren HBCI/FinTS mit Chipkarte einzusetzen, benötigen Sie einen Chipkartenleser und eine Chipkarte. Die Chipkarte erhalten Sie von Ihrem Kreditinstitut.

Mehr

Guide DynDNS und Portforwarding

Guide DynDNS und Portforwarding Guide DynDNS und Portforwarding Allgemein Um Geräte im lokalen Netzwerk von überall aus über das Internet erreichen zu können, kommt man um die Themen Dynamik DNS (kurz DynDNS) und Portweiterleitung(auch

Mehr

Anleitung zum Login. über die Mediteam- Homepage und zur Pflege von Praxisnachrichten

Anleitung zum Login. über die Mediteam- Homepage und zur Pflege von Praxisnachrichten Anleitung zum Login über die Mediteam- Homepage und zur Pflege von Praxisnachrichten Stand: 18.Dezember 2013 1. Was ist der Mediteam-Login? Alle Mediteam-Mitglieder können kostenfrei einen Login beantragen.

Mehr

How-to: Webserver NAT. Securepoint Security System Version 2007nx

How-to: Webserver NAT. Securepoint Security System Version 2007nx Securepoint Security System Inhaltsverzeichnis Webserver NAT... 3 1 Konfiguration einer Webserver NAT... 4 1.1 Einrichten von Netzwerkobjekten... 4 1.2 Erstellen von Firewall-Regeln... 6 Seite 2 Webserver

Mehr

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) 1 Einleitung... 2 2 Download und Installation... 3 2.1 Installation von WindowsXPMode_de-de.exe... 4 2.2 Installation von Windows6.1-KB958559-x64.msu...

Mehr

SharePoint Demonstration

SharePoint Demonstration SharePoint Demonstration Was zeigt die Demonstration? Diese Demonstration soll den modernen Zugriff auf Daten und Informationen veranschaulichen und zeigen welche Vorteile sich dadurch in der Zusammenarbeit

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

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

Beschreibung und Bedienungsanleitung. Inhaltsverzeichnis: Abbildungsverzeichnis: Werkzeug für verschlüsselte bpks. Dipl.-Ing.

Beschreibung und Bedienungsanleitung. Inhaltsverzeichnis: Abbildungsverzeichnis: Werkzeug für verschlüsselte bpks. Dipl.-Ing. www.egiz.gv.at E-Mail: post@egiz.gv.at Telefon: ++43 (316) 873 5514 Fax: ++43 (316) 873 5520 Inffeldgasse 16a / 8010 Graz / Austria Beschreibung und Bedienungsanleitung Werkzeug für verschlüsselte bpks

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken. In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht

Mehr

Java Server Faces. Andy Bosch. Das Standard-Framework zum Aufbau webbasierter Anwendungen. An imprint of Pearson Education

Java Server Faces. Andy Bosch. Das Standard-Framework zum Aufbau webbasierter Anwendungen. An imprint of Pearson Education Andy Bosch Java Server Faces Das Standard-Framework zum Aufbau webbasierter Anwendungen An imprint of Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City

Mehr

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY Vorteile der Verwendung eines ACTIVE-DIRECTORY Automatische GEORG Anmeldung über bereits erfolgte Anmeldung am Betriebssystem o Sie können sich jederzeit als

Mehr

Local Control Network Technische Dokumentation

Local Control Network Technische Dokumentation Steuerung von Hifi-Anlagen mit der LCN-GVS Häufig wird der Wunsch geäußert, eine Hi-Fi-Anlage in die Steuerung der LCN-GVS einzubinden. Auch das ist realisierbar. Für die hier gezeigte Lösung müssen wenige

Mehr

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen) 1. Einführung: Über den ODBC-Zugriff können Sie bestimmte Daten aus Ihren orgamax-mandanten in anderen Anwendungen (beispielsweise Microsoft Excel oder Microsoft Access) einlesen. Dies bietet sich beispielsweise

Mehr

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer. Benutzerhandbuch Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer. 1 Startseite Wenn Sie die Anwendung starten, können Sie zwischen zwei Möglichkeiten wählen 1) Sie können eine Datei für

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

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme Novell Client Anleitung zur Verfügung gestellt durch: ZID Dezentrale Systeme Februar 2015 Seite 2 von 8 Mit der Einführung von Windows 7 hat sich die Novell-Anmeldung sehr stark verändert. Der Novell Client

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Handbuch timecard Connector 1.0.0 Version: 1.0.0 REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Furtwangen, den 18.11.2011 Inhaltsverzeichnis Seite 1 Einführung... 3 2 Systemvoraussetzungen...

Mehr

Schulberichtssystem. Inhaltsverzeichnis

Schulberichtssystem. Inhaltsverzeichnis Schulberichtssystem Inhaltsverzeichnis 1. Erfassen der Schüler im SBS...2 2. Erzeugen der Export-Datei im SBS...3 3. Die SBS-Datei ins FuxMedia-Programm einlesen...4 4. Daten von FuxMedia ins SBS übertragen...6

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

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

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

Content Management System mit INTREXX 2002.

Content Management System mit INTREXX 2002. Content Management System mit INTREXX 2002. Welche Vorteile hat ein CM-System mit INTREXX? Sie haben bereits INTREXX im Einsatz? Dann liegt es auf der Hand, dass Sie ein CM-System zur Pflege Ihrer Webseite,

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

ARAkoll 2013 Dokumentation. Datum: 21.11.2012

ARAkoll 2013 Dokumentation. Datum: 21.11.2012 ARAkoll 2013 Dokumentation Datum: 21.11.2012 INHALT Allgemeines... 3 Funktionsübersicht... 3 Allgemeine Funktionen... 3 ARAmatic Symbolleiste... 3 Monatsprotokoll erzeugen... 4 Jahresprotokoll erzeugen

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Excel-Schnittstelle Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Voraussetzung: Microsoft Office Excel ab Version 2000 Zum verwendeten Beispiel:

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

Arbeiten mit einem lokalen PostgreSQL-Server

Arbeiten mit einem lokalen PostgreSQL-Server Arbeiten mit einem lokalen PostgreSQL-Server Download für das Betriebssystem Windows PostgreSQL-Server und pgadmin: http://www.enterprisedb.com/products-servicestraining/pgdownload#windows pgadmin: http://www.pgadmin.org/download/windows.php

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Agentur für Werbung & Internet. Schritt für Schritt: Newsletter mit WebEdition versenden

Agentur für Werbung & Internet. Schritt für Schritt: Newsletter mit WebEdition versenden Agentur für Werbung & Internet Schritt für Schritt: Newsletter mit WebEdition versenden E-Mail-Adresse im Control Panel einrichten Inhalt Vorwort 3 Einstellungen im Reiter «Eigenschaften» 4 Einstellungen

Mehr

Kleines Handbuch zur Fotogalerie der Pixel AG

Kleines Handbuch zur Fotogalerie der Pixel AG 1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link

Mehr

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten Der Konfigurations-Assistent wurde entwickelt, um die unterschiedlichen ANTLOG-Anwendungen auf den verschiedensten Umgebungen automatisiert

Mehr

Aufruf der Weboberflache des HPM- Warmepumpenmanagers aus dem Internet TIPPS

Aufruf der Weboberflache des HPM- Warmepumpenmanagers aus dem Internet TIPPS Aufruf der Weboberflache des HPM- Warmepumpenmanagers aus dem Internet TIPPS Oktober 2015 Tipp der Woche vom 28. Oktober 2015 Aufruf der Weboberfläche des HPM-Wärmepumpenmanagers aus dem Internet Der Panasonic

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,

Mehr

Kostenstellen verwalten. Tipps & Tricks

Kostenstellen verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Kostenstellen erstellen 3 13 1.3 Zugriffsberechtigungen überprüfen 30 2 1.1 Kostenstellen erstellen Mein Profil 3 1.1 Kostenstellen erstellen Kostenstelle(n) verwalten 4

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

Tutorial - www.root13.de

Tutorial - www.root13.de Tutorial - www.root13.de Netzwerk unter Linux einrichten (SuSE 7.0 oder höher) Inhaltsverzeichnis: - Netzwerk einrichten - Apache einrichten - einfaches FTP einrichten - GRUB einrichten Seite 1 Netzwerk

Mehr

Adminer: Installationsanleitung

Adminer: Installationsanleitung Adminer: Installationsanleitung phpmyadmin ist bei uns mit dem Kundenmenüpasswort geschützt. Wer einer dritten Person Zugriff auf die Datenbankverwaltung, aber nicht auf das Kundenmenü geben möchte, kann

Mehr

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb CashPro basiert auf Accesstechnologie 2003 und ist auch unter den aktuellen Accessversionen 2007 bis 2013 einsetzbar und Mehrbenutzerfähig.

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Durchführung der Datenübernahme nach Reisekosten 2011

Durchführung der Datenübernahme nach Reisekosten 2011 Durchführung der Datenübernahme nach Reisekosten 2011 1. Starten Sie QuickSteuer Deluxe 2010. Rufen Sie anschließend über den Menüpunkt /Extras/Reisekosten Rechner den QuickSteuer Deluxe 2010 Reisekosten-Rechner,

Mehr

Lieferschein Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering.

Lieferschein Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering. Lieferschein Lieferscheine Seite 1 Lieferscheine Seite 2 Inhaltsverzeichnis 1. STARTEN DER LIEFERSCHEINE 4 2. ARBEITEN MIT DEN LIEFERSCHEINEN 4 2.1 ERFASSEN EINES NEUEN LIEFERSCHEINS 5 2.1.1 TEXTFELD FÜR

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

Bedienungsanleitung für den SecureCourier

Bedienungsanleitung für den SecureCourier Bedienungsanleitung für den SecureCourier Wo kann ich den SecureCourier nach der Installation auf meinem Computer finden? Den SecureCourier finden Sie dort, wo Sie mit Dateien umgehen und arbeiten. Bei

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16. Copyright

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16. Copyright Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16 Änderungen in Dokumentation und Software sind vorbehalten! Copyright Copyright 2005 COSA GmbH Alle Rechte vorbehalten.

Mehr

Ihr CMS für die eigene Facebook Page - 1

Ihr CMS für die eigene Facebook Page - 1 Ihr CMS für die eigene Facebook Page Installation und Einrichten eines CMS für die Betreuung einer oder mehrer zusätzlichen Seiten auf Ihrer Facebook Page. Anpassen der "index.php" Installieren Sie das

Mehr

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

LabView7Express Gerätesteuerung über LAN in einer Client-Serverkonfiguration. 1. Steuerung eines VI über LAN

LabView7Express Gerätesteuerung über LAN in einer Client-Serverkonfiguration. 1. Steuerung eines VI über LAN LabView7Express Gerätesteuerung über LAN in einer Client-Serverkonfiguration Arbeitsblatt und Demonstration A. Rost 1. Steuerung eines VI über LAN Eine Möglichkeit zur Steuerung virtueller Instrumente

Mehr

WEBSEITEN ENTWICKELN MIT ASP.NET

WEBSEITEN ENTWICKELN MIT ASP.NET jamal BAYDAOUI WEBSEITEN ENTWICKELN MIT ASP.NET EINE EINFÜHRUNG MIT UMFANGREICHEM BEISPIELPROJEKT ALLE CODES IN VISUAL BASIC UND C# 3.2 Installation 11 Bild 3.2 Der Webplattform-Installer Bild 3.3 IDE-Startbildschirm

Mehr

Handbuch zum Excel Formular Editor

Handbuch zum Excel Formular Editor Handbuch zum Excel Formular Editor Mit diesem Programm können Sie die Zellen von ihrer Excel Datei automatisch befüllen lassen. Die Daten können aus der Coffee Datenbank, oder einer weiteren Excel Datendatei

Mehr

! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006

!  # $  % & Nicki Wruck worldwidewruck 08.02.2006 !"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst

Mehr

Leitfaden zur Anlage einer Nachforderung. Nachforderung. 04.04.2013 Seite 1 von 11 RWE IT GmbH

Leitfaden zur Anlage einer Nachforderung. Nachforderung. 04.04.2013 Seite 1 von 11 RWE IT GmbH Leitfaden zur Anlage einer 04.04.2013 Seite 1 von 11 Inhaltsverzeichnis 1 Aufruf des RWE smanagements...3 2 Eingabe der Benutzerdaten...4 3 Erfassen der...5 4 Neue...6 4.1 Allgemeine Daten...7 4.2 Beschreibung...7

Mehr

HTBVIEWER INBETRIEBNAHME

HTBVIEWER INBETRIEBNAHME HTBVIEWER INBETRIEBNAHME Vorbereitungen und Systemvoraussetzungen... 1 Systemvoraussetzungen... 1 Betriebssystem... 1 Vorbereitungen... 1 Installation und Inbetriebnahme... 1 Installation... 1 Assistenten

Mehr

Funktionsbeschreibung. Lieferantenbewertung. von IT Consulting Kauka GmbH

Funktionsbeschreibung. Lieferantenbewertung. von IT Consulting Kauka GmbH Funktionsbeschreibung Lieferantenbewertung von IT Consulting Kauka GmbH Stand 16.02.2010 odul LBW Das Modul LBW... 3 1. Konfiguration... 4 1.1 ppm... 4 1.2 Zertifikate... 5 1.3 Reklamationsverhalten...

Mehr

Registrierung am Elterninformationssysytem: ClaXss Infoline

Registrierung am Elterninformationssysytem: ClaXss Infoline elektronisches ElternInformationsSystem (EIS) Klicken Sie auf das Logo oder geben Sie in Ihrem Browser folgende Adresse ein: https://kommunalersprien.schule-eltern.info/infoline/claxss Diese Anleitung

Mehr

Persönliches Adressbuch

Persönliches Adressbuch Persönliches Adressbuch Persönliches Adressbuch Seite 1 Persönliches Adressbuch Seite 2 Inhaltsverzeichnis 1. WICHTIGE INFORMATIONEN ZUR BEDIENUNG VON CUMULUS 4 2. ALLGEMEINE INFORMATIONEN ZUM PERSÖNLICHEN

Mehr

Task: Nmap Skripte ausführen

Task: Nmap Skripte ausführen Task: Nmap Skripte ausführen Inhalt Einfache Netzwerkscans mit NSE Ausführen des Scans Anpassung der Parameter Einleitung Copyright 2009-2015 Greenbone Networks GmbH Herkunft und aktuellste Version dieses

Mehr

Online Newsletter III

Online Newsletter III Online Newsletter III Hallo zusammen! Aus aktuellem Anlass wurde ein neuer Newsletter fällig. Die wichtigste Neuerung betrifft unseren Webshop mit dem Namen ehbshop! Am Montag 17.10.11 wurde die Testphase

Mehr

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach - Projekt Personalverwaltung Erstellt von Inhaltsverzeichnis 1Planung...3 1.1Datenbankstruktur...3 1.2Klassenkonzept...4 2Realisierung...5 2.1Verwendete Techniken...5 2.2Vorgehensweise...5 2.3Probleme...6

Mehr

3. GLIEDERUNG. Aufgabe:

3. GLIEDERUNG. Aufgabe: 3. GLIEDERUNG Aufgabe: In der Praxis ist es für einen Ausdruck, der nicht alle Detaildaten enthält, häufig notwendig, Zeilen oder Spalten einer Tabelle auszublenden. Auch eine übersichtlichere Darstellung

Mehr

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite. ewon - Technical Note Nr. 003 Version 1.2 Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite. Übersicht 1. Thema 2. Benötigte Komponenten 3. Downloaden der Seiten und aufspielen auf

Mehr

Die Downloadarea ist nur noch bedingt mit den bestehenden Dingen befüllt, wird aber nicht mehr aktualisiert.

Die Downloadarea ist nur noch bedingt mit den bestehenden Dingen befüllt, wird aber nicht mehr aktualisiert. Das Marketingtool. Bedienungsanleitung. Das Marketingtool, das Sie bereits seit einiger Zeit kennen, wurde nun auf eine aktuelle Version angeglichen. Die Funktionen bleiben alle dieselben, lediglich wurde

Mehr

Inventur. Bemerkung. / Inventur

Inventur. Bemerkung. / Inventur Inventur Die beliebige Aufteilung des Artikelstamms nach Artikeln, Lieferanten, Warengruppen, Lagerorten, etc. ermöglicht es Ihnen, Ihre Inventur in mehreren Abschnitten durchzuführen. Bemerkung Zwischen

Mehr

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo. Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten

Mehr

1373-1-8689 13.02.2015. Lizensierung ABB i-bus Newron Commissiong Tool

1373-1-8689 13.02.2015. Lizensierung ABB i-bus Newron Commissiong Tool 1373-1-8689 13.02.2015 Lizensierung ABB i-bus Newron Commissiong Tool Inhalt 1 Einleitung 3 2 Vorraussetzungen 3 3 MOOVnGROUP Light-Version 4 4 MOOVnGROUP Voll-Version 5 4.1 Bestellung MOOVnGROUP Dongle

Mehr

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008 Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen

Mehr

Tevalo Handbuch v 1.1 vom 10.11.2011

Tevalo Handbuch v 1.1 vom 10.11.2011 Tevalo Handbuch v 1.1 vom 10.11.2011 Inhalt Registrierung... 3 Kennwort vergessen... 3 Startseite nach dem Login... 4 Umfrage erstellen... 4 Fragebogen Vorschau... 7 Umfrage fertigstellen... 7 Öffentliche

Mehr

Dokumentenmanagement mit hyscore

Dokumentenmanagement mit hyscore Dokumentenmanagement mit hyscore Webbasierter Zugriff auf Dokumente und Beiträge Version 4.5 Ausgabe 1 April 2010 Seite 1 Inhalt Dokumentenmanagement mit hyscore... 3 Externe Dokumente in hyscore integrieren...

Mehr

Lastenheft. Inhaltsverzeichnis. Gruppe: swp09-5. Projektleiterin: Anne Vogler am: 28. April 2009. 1 Zielbestimmungen 2. 2 Produkteinsatz 2

Lastenheft. Inhaltsverzeichnis. Gruppe: swp09-5. Projektleiterin: Anne Vogler am: 28. April 2009. 1 Zielbestimmungen 2. 2 Produkteinsatz 2 Lastenheft Inhaltsverzeichnis 1 Zielbestimmungen 2 2 Produkteinsatz 2 3 Produktübersicht 3 4 Produktfunktionen 4 4.1 Muss-Funktionen................................. 4 4.1.1 Benutzerfunktionen...........................

Mehr

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,

Mehr

Online Banking System

Online Banking System Online Banking System Pflichtenheft im Rahmen des WI-Praktikum bei Thomas M. Lange Fachhochschule Giessen-Friedberg Fachbereich MNI Studiengang Informatik Erstellt von: Eugen Riske Yueksel Korkmaz Alper

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

Benutzeranleitung Superadmin Tool

Benutzeranleitung Superadmin Tool Benutzeranleitung Inhalt 1 Einleitung & Voraussetzungen... 2 2 Aufruf des... 3 3 Konto für neuen Benutzer erstellen... 3 4 Services einem Konto hinzufügen... 5 5 Benutzer über neues Konto informieren...

Mehr

Übersicht... 2 Dateiupload... 3 Administratorfunktionen... 4

Übersicht... 2 Dateiupload... 3 Administratorfunktionen... 4 Inhalt Übersicht... 2 Dateiupload... 3 Administratorfunktionen... 4 Benutzer hinzufügen... 4 Benutzerverwaltung... 5 Ordner anlegen... 6 Rechteverwaltung... 7 Verlag für neue Medien Seite 1 Übersicht Mit

Mehr

ICS-Addin. Benutzerhandbuch. Version: 1.0

ICS-Addin. Benutzerhandbuch. Version: 1.0 ICS-Addin Benutzerhandbuch Version: 1.0 SecureGUARD GmbH, 2011 Inhalt: 1. Was ist ICS?... 3 2. ICS-Addin im Dashboard... 3 3. ICS einrichten... 4 4. ICS deaktivieren... 5 5. Adapter-Details am Server speichern...

Mehr

Massenversand Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering.

Massenversand Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering. Massenversand Massenversand Seite 1 Massenversand Seite 2 Inhaltsverzeichnis 1. WICHTIGE INFORMATIONEN ZUR BEDIENUNG VON CUMULUS 4 2. STAMMDATEN FÜR DEN MASSENVERSAND 4 2.1 ALLGEMEINE STAMMDATEN 4 2.2

Mehr

Einkaufslisten verwalten. Tipps & Tricks

Einkaufslisten verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Grundlegende Informationen 3 1.2 Einkaufslisten erstellen 4 1.3 Artikel zu einer bestehenden Einkaufsliste hinzufügen 9 1.4 Mit einer Einkaufslisten einkaufen 12 1.4.1 Alle

Mehr

Online-Prüfungs-ABC. ABC Vertriebsberatung GmbH Bahnhofstraße 94 69151 Neckargemünd

Online-Prüfungs-ABC. ABC Vertriebsberatung GmbH Bahnhofstraße 94 69151 Neckargemünd Online-Prüfungs-ABC ABC Vertriebsberatung GmbH Bahnhofstraße 94 69151 Neckargemünd Telefon Support: 0 62 23 / 86 55 55 Telefon Vertrieb: 0 62 23 / 86 55 00 Fax: 0 62 23 / 80 55 45 (c) 2003 ABC Vertriebsberatung

Mehr

Benutzerverwaltung Business- & Company-Paket

Benutzerverwaltung Business- & Company-Paket Benutzerverwaltung Business- & Company-Paket Gemeinsames Arbeiten mit der easyfeedback Umfragesoftware. Inhaltsübersicht Freischaltung des Business- oder Company-Paketes... 3 Benutzerverwaltung Business-Paket...

Mehr

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich Mitgliederbereich (Version 1.0) Bitte loggen Sie sich in den Mitgliederbereich mit den Ihnen bekannten Zugangsdaten

Mehr

Arbeiten mit Standorten und Freimeldungen

Arbeiten mit Standorten und Freimeldungen Lavid-F.I.S. Logistik Arbeiten mit Standorten und Dauner Str. 2, D-4236 Mönchengladbach, Tel. 0266-97022-0, Fax -5, Email: info@lavid-software.net . Inhalt. Inhalt... 2 2. Verwendbar für:... 2 3. Aufgabe...

Mehr

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. In diesem Artikel werden wir Ihnen zeigen, wie Sie eine Datenbank verschlüsseln können, um den Zugriff einzuschränken, aber trotzdem noch eine

Mehr

Hilfestellung. ALL500VDSL2 Rev.B & ALL02400N. Zugriff aus dem Internet / Portweiterleitung / Fernwartung. Router. Endgeräte. lokales.

Hilfestellung. ALL500VDSL2 Rev.B & ALL02400N. Zugriff aus dem Internet / Portweiterleitung / Fernwartung. Router. Endgeräte. lokales. ALL500VDSL2 Rev.B & ALL02400N Zugriff aus dem Internet / Portweiterleitung / Fernwartung LAN WAN WWW Router Endgeräte lokales Netzwerkgerät Hilfestellung Im Folgenden wird hier Schritt für Schritt erklärt

Mehr

HINWEISE ZUR ARBEIT IM LABOR

HINWEISE ZUR ARBEIT IM LABOR HINWEISE ZUR ARBEIT IM LABOR MIT GLASSFISH UND DERBY UNTER NETBEANS 1. Grundsätzliches: Auch weiterhin arbeiten Sie im SWE-Labor remote, d.h. auf einem Server. Ihre Entwicklungsumgebung Netbeans ist dort

Mehr

Handbuch B4000+ Preset Manager

Handbuch B4000+ Preset Manager Handbuch B4000+ Preset Manager B4000+ authentic organ modeller Version 0.6 FERROFISH advanced audio applications Einleitung Mit der Software B4000+ Preset Manager können Sie Ihre in der B4000+ erstellten

Mehr

CADEMIA: Einrichtung Ihres Computers unter Windows

CADEMIA: Einrichtung Ihres Computers unter Windows CADEMIA: Einrichtung Ihres Computers unter Windows Stand: 21.02.2015 Java-Plattform: Auf Ihrem Computer muss die Java-Plattform, Standard-Edition der Version 7 (Java SE 7) oder höher installiert sein.

Mehr

TeamSpeak3 Einrichten

TeamSpeak3 Einrichten TeamSpeak3 Einrichten Version 1.0.3 24. April 2012 StreamPlus UG Es ist untersagt dieses Dokument ohne eine schriftliche Genehmigung der StreamPlus UG vollständig oder auszugsweise zu reproduzieren, vervielfältigen

Mehr

FastBill Automatic. Dokumentation Versand. FastBill GmbH. Holteyer Straße 30 45289 Essen Telefon 0201 47091505 Telefax 0201 54502360

FastBill Automatic. Dokumentation Versand. FastBill GmbH. Holteyer Straße 30 45289 Essen Telefon 0201 47091505 Telefax 0201 54502360 FastBill GmbH Holteyer Straße 30 45289 Essen Telefon 0201 47091505 Telefax 0201 54502360 FastBill Automatic Dokumentation Versand 1 Inhaltsverzeichnis: 1. Grundlegendes 2. Produkteinstellungen 2.1. Grundeinstellungen

Mehr