thesis - Institut für Informatik

Werbung
Leopold-Franzens-Universität Innsbruck
Institut für Informatik
Datenbanken und Informationssysteme
WorkflowManager - Entwicklung einer
Java-basierten Weboberfläche zur Verwaltung
von genetischen Analysen
Bachelor-Arbeit
Mathias Neuner
betreut von
Dipl.-Ing. Sebastian Schönherr
Mag. Stefan Coassin
Innsbruck, 18. Februar 2010
Zusammenfassung
Ziel dieser Arbeit ist die Erstellung einer Java-basierten Webapplikation
zur Verwaltung und Aufbereitung von DNA Proben, die im Rahmen von
Studien an der Sektion für Genetische Epidemiologie an der Medizinischen Universität Innsbruck erfasst werden.
Die Webapplikation bietet die Möglichkeit unterschiedliche medizinische
Studien zu verwalten und ermöglicht es erstmals den kompletten Arbeitsablauf eines Labors effizient auszuführen. Durch verschiedene Exportmöglichkeiten verringert sich der Aufwand zur Weiterverarbeitung
der Proben durch diverse DNA Roboter drastisch. Anhand des simplen
Aufbaus der Benutzeroberfläche, die sich an den bisherigen Workflow
der Mitarbeiter orientiert, kann der Benutzer ohne aufwendiger Einschulung die Applikation verwenden. Da die Webapplikation auf jedem PC
im Netzwerk erreichbar ist und an eine zentrale Datenbank angebunden
ist, kann von jedem Arbeitsplatz aus auf die Studien bzw. Proben zugegriffen werden. Für die Labormitarbeiter wird die Verarbeitung und
Aufbereitung der Proben dadurch um ein vielfaches Mass erleichtert, da
keine manuellen Kopieroperationen und Dateiverwaltung mehr durchgeführt werden müssen.
Abstract
The aim of this bachelor project is to develop a Java based webapplication for processing and preparing DNA samples, which are captured at
the Division of Genetic Epidemiology at the University of Innsbruck.
The web application offers the possibility to manage a variety of medical studies and makes it the first time possible, to perform efficiently
the complete workflow of a Laboratories. Through various export opportunities the effort for processing samples by various DNA robots is
minimized. The simplicity of the User interface, which is oriented on
the basis of the previous workflow of the employees, the user does not
need a special enrollment for the application. Since the webapplication
is reachable on any PC in the network and is connected to a central
database, studies and samples can be accessed from any workstation.
For the laboratory staff the processing and preparation of samples is to
a considerably degree easier, since no manual file copy operations and
administration is needed any more.
Inhaltsverzeichnis
1 Einleitung
1
2 Anforderungen und Ziele
3
3 Technologien
3.1 Java . . . . . .
3.2 Java Servlets .
3.3 Hibernate . . .
3.4 MySQL . . . .
3.5 Apache Tomcat
3.6 ExtJS . . . . .
.
.
.
.
.
.
7
7
7
8
9
9
9
.
.
.
.
.
.
.
.
13
13
15
15
16
17
17
17
19
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Implementierung
4.1 Relationales Datenbankmodell . . .
4.2 Serverarchitektur . . . . . . . . . . .
4.2.1 MVC Pattern . . . . . . . . .
4.2.2 Projektstruktur . . . . . . . .
4.2.3 O/R Mapping mit Hibernate
4.2.4 Businesslogik . . . . . . . . .
4.2.5 Servlets . . . . . . . . . . . .
4.3 Grafische Benutzeroberfläche . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5 Installation
21
5.1 Datenbankinstallation . . . . . . . . . . . . . . . . . . . . 21
5.2 Java Installation . . . . . . . . . . . . . . . . . . . . . . . 22
5.3 Apache Tomcat Installation . . . . . . . . . . . . . . . . . 22
6 Zusammenfassung
25
Literaturverzeichnis
27
Appendix
29
A.1 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
A.2 Verwaltung von Studien . . . . . . . . . . . . . . . . . . . 29
III
INHALTSVERZEICHNIS
A.2.1 Studien Anlegen und Einspielen . . . . . .
A.2.2 Samples Importieren . . . . . . . . . . . .
A.2.3 Proben Importieren . . . . . . . . . . . .
A.2.4 Layouts Generieren . . . . . . . . . . . . .
A.2.5 Samplesheets Generieren . . . . . . . . . .
A.2.6 Samplesheets Generieren . . . . . . . . . .
A.3 Exportieren . . . . . . . . . . . . . . . . . . . . .
A.3.1 Roboter DNA Konzentration Exportieren
A.3.2 Layouts Exportieren . . . . . . . . . . . .
A.3.3 Samplesheets Exportieren . . . . . . . . .
A.4 QC Generierung . . . . . . . . . . . . . . . . . .
IV
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29
31
31
32
32
32
32
34
34
34
34
Name1, Name2
Kapitel 1
Einleitung
An der Sektion für Genetische Epidemiologie der Medizinischen Universität Innsbruck werden in den Labors laufend DNA Proben analysiert
und ausgewertet. Im Rahmen von Studien wird versucht anhand der Proben Rückschlüße auf bestimmte Krankheiten wie zum Beispiel Diabetes
zu erzielen. Für diese Studien werden tausende DNA Proben von Patienten zusammengetragen. Durch die Anzahl mehrerer Studien ergibt
sich dadurch eine beträchtliche Menge an Daten. Um eine Übersicht aller
Proben zu erhalten, werden die Proben mittels Sample IDs gekennzeichnet und dazugehöriger DNA Konzentration und Qualitätswert in Excel
Dateien abgelegt. Die Verarbeitung und Auswertung dieser Proben erfolgt computergesteuert und wird von speziellen Robotern durchgeführt.
Dazu werden die Proben in speziellen DNA Behältern, den sogenannten Plates, aufbereitet. Damit der Roboter die jeweilige Plattenbelegung
verarbeiten kann, wird eine zusätzliche Datei benötigt, die die genauen
Informationen der DNA Behälter beinhaltet.
Diese Dateien werden von den Labormitarbeitern momentan manuell zusammengeführt und auf einem Fileserver innerhalb einer Ordnerstruktur
abgelegt, was bei großen Studien einen beträchtlichen Aufwand zur Folge hat. Es ist daher kein Automatismus vorhanden, der alle Daten einer
Studie zentral verwaltet und aufbereitet. Dadurch ergeben sich natürlich
potentielle Fehlerquellen, die beim Zusammenstellen einer Studie Folgen
auf die weitere Verarbeitung haben kann. Dieser fehlende Automatismus
soll durch eine Webapplikation behoben werden, die den beschriebenen
Workflow unterstützt und weiters die Handhabung der verschiedenen
Dateien bzw. Dateiformate erleichtert. Durch die Erreichbarkeit der Anwendung über einen beliebigen Webbrowser wird keine separate Installation auf dem jeweiligen Rechner der Labormitarbeiter benötigt.
In dieser Arbeit wird die Konzeption und Implementierung der We1
KAPITEL 1. EINLEITUNG
bapplikation vorgestellt und setzt sich aus folgenden Kapitel zusammen:
In Kapitel 2 werden die konkreten Anforderungen erläutert, die an die
Applikation gestellt wurden. Kapitel 3 beschreibt die für die Umsetzung
benötigten Technologien. In Kapitel 4 werden die einzelnen Stufen der
Implementierungsphase genauer beschrieben und vorgestellt. Kapitel 5
befasst sich mit der Installation der Webapplikation auf einem Server
und der Einrichtung der Datenbank. In Kapitel 6 wird in einer Zusammenfassung über die Arbeit resümiert.
2
Name1, Name2
Kapitel 2
Anforderungen und Ziele
In diesem Kapitel werden alle Anforderungen, die an die Webapplikation
gestellt wurden, näher erläutert. Grundsätzlich soll die Anwendung die
unter Kapitel 1 beschriebenen Abläufe unterstützen und den Aufwand
der Labormitarbeiter an der Sektion für Genetische Epidemiologie der
Medizinischen Universität Innsbruck minimieren. Zusätzlich sollen die
erfassten Daten der Studien in einer Datenbank erfasst und gespeichert
werden und nicht wie bisher in Excel Dateien abgespeichert werden. In
weiterer Folge werden die wichtigsten Anforderungen im Detail beschrieben.
Rechtemanagement
Damit nicht jeder Benutzer, der über einen Webbrowser auf die Applikation zugreift, alle Studien einsehen und bearbeiten kann, ist eine
Benutzerauthentifizierung erforderlich. Erst nach erfolgreichem Login
sollen dem Benutzer alle Studien angezeigt werden. Damit neue und bestehende Mitarbeiter als Anwendungsbenutzer angelegt werden können,
müssen Benutzer im System angelegt, bearbeitet und gelöscht werden
können.
Import bestehender Studien
Bestehende und fertig zusammengestellte Studien sollen ebenfalls über
die neue Applikation einsehbar und verwaltbar sein. Daher wird eine Importfunktionalität von bestehenden Studien benötigt. Die Daten einer
bestehenden Studie werden in einer Archivierungsdatei (ZIP) zusammengefasst. Innerhalb dieser ZIP Datei besteht für jedes vorhandene
Layout eine CSV Datei. Der Dateiname der ZIP Datei kann beliebig
sein, was allerdings nicht auf den Namen der CSV Dateien zutrifft. Dieser muss sich aus dem Namen der Studie und der Layout Nummer,
getrennt durch einen Bindestrich, zusammensetzen. Die CSV Datei besteht aus einer Spalte mit der Position, einer Spalte für die Sample ID
3
KAPITEL 2. ANFORDERUNGEN UND ZIELE
und einer Spalte für eine DNA Konzentration, die optional ist. Dadurch
sollen alle bestehenden Sample IDs und die manuell zusammengestellten
Layouts im System vorhanden sein.
Anlegen neuer Studien
Für neue Studien ist immer eine dazugehörige Liste mit Sample IDs vorhanden, die in einer Textdatei gespeichert ist. Das Anlegen einer Studie
soll daher mit dem gleichzeitigen Einspielen der Sample IDs erfolgen.
Zur Studie selbst sollen noch folgende Daten gespeichert werden können,
die beim Anlegen angegeben werden: Name, Identifikationsnummer, Beschreibung und die Positionen der NTCs (Non Template Controls - sogenannte Negativproben). Wobei die Angabe der NTCs in Form von
Koordinaten angegeben werden müssen (z.B.: B3 G11).
Import von Konzentrationswerten
Da beim Anlegen einer Studie noch keine Konzentrationswerte angegeben bzw. vorhanden sind, sollen diese Werte, die entweder in einer CSV
oder TSV Datei vorliegen, nachträglich eingespielt werden können. Ist
ein Wert beim Import schon in der Datenbank vorhanden, wird dieser
überschrieben.
Darstellung der Layouts bzw. Samplesheets
Ein Layout repräsentiert die Darstellung von 96 Sample IDs, die in Form
eines Koordinatensystems angeordnet werden. Hierbei wird für die xAchse von 1-12 und für die y-Achse von A-H buchstabiert. Samplesheets sind größere DNA Behälter, die aus 384 Sample IDs bestehen und
sich jeweils aus 4 Layouts zusammensetzen, wodurch sich ein dementsprechendes größeres Koordinatensystem ergibt. Die generierten Layouts
bzw. Samplesheets sollen in einer tabellarischen Form optisch dargestellt
werden. In dieser Ansicht soll es auch möglich sein, die Anordnung der
Sample IDs zu bearbeiten. Ebenfalls soll ein Benutzer sich ein Layout
selbst zusammenstellen können.
Exportfunktion
Damit die Studien von diversen Gerätetypen bzw. Robotern weiterverarbeitet werden kann, wird eine Exportfunktion benötigt. Der Export
sollte für eine gesamte Studie in einer ZIP Datei zusammengefasst werden, die pro Layout bzw. Samplesheet eine CSV Datei im jeweiligen
benötigten Format enthält.
Nachträgliches Bearbeiten von Proben
Da Proben sich im Nachhinein als fehlerhaft herausstellen können, ist es
notwendig eine Probe dementsprechend zu markieren bzw. den Konzentrationswert oder den Qualitätswert zu bearbeiten. Es wird daher eine
4
Name1, Name2
KAPITEL 2. ANFORDERUNGEN UND ZIELE
Auflistung der Sample IDs benötigt, um die dementsprechende Probe zu
manipulieren.
Qualitätssicherung
Für die Qualitätssicherung der Studien, werden sogenannte Quality Control (QC) Layouts bzw. Samplesheets benötigt. Diese Layouts bzw. Samplesheets sollen im Grunde aus einer Schnittmenge von Sample IDs einer
gesamten Studie bestehen. Der Labormitarbeiter soll dabei bestimmte
Positionen eines Layouts angeben können über welche dann die entsprechenden Sample IDs ermittelt und wiederum in separate Layouts abgelegt werden. Um einen Überblick über die Schnittmenge zu erhalten,
sollte es für den Labormitarbeiter möglich sein, sich den prozentualen
Anteil aller Sample IDs anzeigen zu lassen zu können.
Berücksichtigung von NTC und fehlerhaften Proben
Pro Studie gibt es fix definierte NTC Positionen. An diesen Positionen
dürfen keine Sample IDs positioniert sein. Dementsprechend muss diese
Position ausgelassen und als NTC Position dargestellt werden. Ist ein
Sample als fehlerhaft deklariert, soll dies ebenfalls visuell als Fehler erkennbar sein.
Abbildung 2.1 stellt noch einmal einen Überblick über die Grundfunktionalitäten der Webaplikation dar.
Name1, Name2
5
KAPITEL 2. ANFORDERUNGEN UND ZIELE
Abbildung 2.1: Übersicht der Funktionalitäten
6
Name1, Name2
Kapitel 3
Technologien
Im folgenden Kapitel werden Softwaretechnologien vorgestellt, die in
der Umsetzung der Anforderungen verwendet bzw. benötigt wurden. Es
handelt sich bei allen Technologien um Open Source Software.
3.1
Java
Java1 ist eine objektorientierte Programmiersprache der Firma Sun Microsystems. Java-Programme werden in Bytecode übersetzt und dann in
einer speziellen Umgebung ausgeführt, die als Java-Laufzeitumgebung
oder Java-Plattform bezeichnet wird. Deren wichtigster Bestandteil ist
die Java Virtual Machine (Java-VM), die die Programme ausführt, indem sie den Bytecode interpretiert und bei Bedarf kompiliert (HotspotOptimierung). Java-Programme sind plattformunabhängig, was bedeutet dass sie in aller Regel ohne weitere Anpassungen auf verschiedenen Computern und Betriebssystemen, für die eine Java-VM existiert,
lauffähig sind. Sun selbst bietet Java-VMs für die Betriebssysteme Linux,
Solaris und Windows an. In dieser Bakkalaureatsarbeit wird sowohl zur
Entwicklung als auch im Einsatz am Produktivsystem die Java Version
6 Update 7 verwendet.
3.2
Java Servlets
Als Servlets werden Java Klassen bezeichnet, deren Instanzen innerhalb eines Java Webservers Anfragen von Clients entgegen nehmen und
beantworten. Weiterhin sind sie fester Bestandteil aller Java EE Anwendungsserver. Die Servletkomponenten müssen die Schnittstelle javax.servlet.Servlet oder eine davon abgeleitete implementieren. Normalerweise wird eine Klasse erstellt, die von der Klasse HttpServlet abgelei1
http://www.java.com
7
KAPITEL 3. TECHNOLOGIEN
tet wird, die wiederum Servlet implementiert. Der Inhalt der Antworten
kann dabei dynamisch, also im Moment der Anfrage, erstellt werden
und muss nicht bereits statisch (etwa in Form einer HTML-Seite) für
den Webserver verfügbar sein. Ein HttpServlet muss immer die Methoden GET und POST implementieren. Das Klientenprogram (in den
meisten Fällen ein Internetbrowser) verwendet nämlich für einen Server
Request die Methode GET oder POST. Bei einem GET Aufruf werden
die Parameter Wertepaare durch das Zeichen "?" in der URL angeführt.
Diese Aufruf wird meistens verwendet, um eine Liste von Parametern
zu übertragen, die die Gegenstelle bei der Bearbeitung einer Anfrage
berücksichtigen soll. Bei einem POST Aufruf befinden sich die Daten
nicht in der URL, daher können über diese Methode große Datenmengen
wie zum Beispiel Bilder oder Dateien übertragen werden. Die Variablen
stehen anstatt in der URL im Body Teil des Requests. Die HttpServlet
Methoden verfügen als Parameter jeweils einen HttpServletRequest und
einen HttpSerlvetResponse. Aus dem HttpServletRequest können die
Parameter bzw. die Wertepaare, die vom Klientenprogramm übermittelt
wurden ausgelesen werden. Der HttpServletRsponse wird verwendet um
dem Aufrufer zu "antworten". Mit Hilfe eines OutputStreams können
Texte als auch Dateien dem Aufrufer zurückgesendet werden.
3.3
Hibernate
Hibernate2 ist ein Open-Source-Persistenz- und ORM-Framework für
Java. Hibernates Hauptaufgabe ist das Object Relational Mapping (OR-Mapping, kurz ORM). Es ermöglicht, gewöhnliche Objekte mit Attributen und Methoden (im Java-Bereich POJOs genannt) in relationalen Datenbanken zu speichern und aus entsprechenden Datensätzen
wiederum Objekte zu erzeugen. Beziehungen zwischen Objekten werden
auf entsprechende Datenbankrelationen abgebildet. Darüber hinaus bietet Hibernate Mechanismen, um auf Datenbanken zugreifen zu können,
ohne diese Zugriffe explizit in SQL programmieren zu müssen. Dafür
generiert Hibernate, abhängig vom SQL-Dialekt der verwendeten Datenbank, die SQL Statements. Somit bleibt die Applikation selbst von
der gewählten Datenbank unabhängig. Anwendungsseitig kann Hibernate in Java Applikationen und Servlet Engines benutzt werden oder in
einen Applikationsserver integriert werden.
2
8
http://www.hibernate.org
Name1, Name2
KAPITEL 3. TECHNOLOGIEN
3.4
MySQL
Der MySQL3 Server ist ein relationales Datenbankverwaltungssystem.
Es ist als Open-Source-Software sowie als kommerzielle Enterpriseversion für verschiedene Betriebssysteme verfügbar und bildet die Grundlage für viele dynamische Webauftritte. Ursprünglich wurde MySQL Server vom schwedischen Unternehmen MySQL AB entwickelt. Im Februar
2008 wurde MySQL AB von Sun Microsystems übernommen, das nun
für die Weiterentwicklung des Codes verantwortlich ist. Aufgrund der
Tatsache, daß es MySQL auch als Open-Source-Software gibt, ist dieses
Datenbanksystem sehr verbreitet und findet sich selbst als Teil weiterer
Open Source Projekte wieder. MySQL lässt sich problemlos auf verschiedenen Betriebssystemen installieren. Mit Hilfe von frei verfügbaren
Adminstrationswerkzeugen (MySQL GUI Tools) kann die jeweilige Installation problemlos administriert und gewartet werden.
3.5
Apache Tomcat
Apache Tomcat4 stellt eine Umgebung zur Ausführung von Java-Code
auf Webservern bereit. Es handelt sich um einen in Java geschriebenen
Servlet-Container, der mithilfe des JSP-Compilers Jasper auch JavaServer Pages in Servlets übersetzen und ausführen kann. Zusätzlich wird mit
einer Tomcat Distribution noch ein kompletter HTTP-Server ausgeliefert. Vorläufer von Apache Tomcat wurden meist als Servlet- und/oder
JSP-Engine klassifiziert. Mit dem Erscheinen von Tomcat waren komfortablerweise beide Funktionalitäten in einem Produkt vereinigt. Tomcats
HTTP-Server wird vor allem zur Entwicklung eingesetzt, während in
Produktion zumeist ein Apache Web-Server vor den Tomcat eingesetzt
wird. Dazu wird in den Webserver ein Connector-Plugin eingebunden,
das Anfragen für dynamische Inhalte an Tomcat weiterleitet. Das Plugin
implementiert hierzu das Apache JServ Protocol (AJP).
3.6
ExtJS
ExtJS5 ist ein clientseitiges JavaScript- bzw. Ajax-Framework für interaktive Webanwendungen, das für Open-Source-Projekte unter der
freien GPL, für andere Projekte unter kommerziellen Lizenzen erhältlich ist. In erster Linie bietet ExtJS eine umfangreiche Sammlung von
Steuerelementen. Ursprünglich war Ext JS eine Sammlung von Funktionserweiterungen für die Yahoo User Interface Library (YUI) unter
3
http://www.mysql.com
http://tomcat.apache.org
5
http://www.extjs.com
4
Name1, Name2
9
KAPITEL 3. TECHNOLOGIEN
dem Namen yui-ext. Aufgrund wachsenden Umfangs und steigender Popularität entwickelte sich daraus die unabhängige Bibliothek Ext JS.
In der aktuellen Version 3.1 bietet Ext JS unter anderem JavaScriptErweiterungen und Klassen für Ajax-Unterstützung, zur Document Object Model-Manipulation sowie zur Ereignis-Programmierung. Die Javascript API von ExtJS verwendet JSON in der Implementierung. Durch
diese Notation ist diese Library in ein objektorientiertes Klassenkonstrukt aufgebaut. In der Programmierung mit ExtJS muss daher auch
JSON verwendet werden, was allerdings kein allzu großer Nachteil ist,
da die Klassenstruktur auch im eigenen Javascript Quellcode weiterverwendet werden kann. Einer der großen Vorteile dieser Klassenstruktur
ist die Möglichkeit der Vererbung. So känn zum Beispiel von einer ExtJS
GUI Komponente (Dialogfenster, Tabellen usw.) geerbt werden und mit
eigenen Verhaltensweisen bzw. Konfigurationen versehen werden. Diese
eigene Klasse kann nun beliebig in der eigenen Applikation wiederverwendet werden. Ein weiterer Vorteil sind auch die zahlreich vorhandenen Extensions, die von einer breiten Benutzer Community bereitgestellt
werden.
An folgendem Beispiel wird gezeigt wie mit Hilfe der ExtJS Library
und der JSON-schreibweise ein simples Fenster-Element erstellt wird,
welches der Benutzer beliebig Verschieben und die Größe andern kann
(Abbildung 3.1). Das Look and Feel“ der grafischen Elemente erinnert
”
stark an die Elemente einer üblichen Desktopapplikation.
var win = new Ext.Window({
title: ’Status’,
width: 200,
height: 100,
modal: true,
closable: true,
html: ’Changes saved successfully’
});
Abbildung 3.1: Einfaches Fenster
Da in einem üblichen Webbrowser keine Elemente wie für Desktopapplikationen zu Verfügung stehen, bedient sich ExtJS an den Document
Object Models (DOM) um den Inhalt und die Struktur der Webseite
10
Name1, Name2
KAPITEL 3. TECHNOLOGIEN
zu ändern. Im Falle dieses einfachen Fensters wird mit Hilfe von DIVElementen und Stylesheets, ein eben nur im optischen Sinne, vorhandenes Fenster dargestellt.
Name1, Name2
11
Kapitel 4
Implementierung
Im folgenden Kapitel werden die verschiedenen Bestandteile der Implementierung vorgestellt. Weiters werden auch Problemstellungen und deren Lösung, die sich in der Entwicklungsphase ergeben haben erläutert.
4.1
Relationales Datenbankmodell
Den wichtigsten Bestandteil der Software bildet die Datenbank. Die Datenbank ist so konzeptioniert, dass sämtliche Anforderungen abgebildet und eventuelle Erweiterungen an das System vorgenommen werden
können. Daher erfolgte im ersten Schritt die Erstellung eines EntityRelationship Modells (ER-Model) anhand der Chen Notation1 , da zwischen den einzelnen Entitäten der Webapplikation mehrere Relationen
zu Stande kommen (siehe Abbildung 4.1).
Für das Speichern der Informationen einer Studie wird die Tabelle STUDY verwendet. Hier werden alle angegebenen Werte wie Studienname,
Beschreibung und Identifikationsnummer gespeichert. Beim Anlegen einer neuen Studie müssen auch die NTC Positionen angegeben werden,
die flächendeckend für alle Layouts der Studie verwendet werden. Die
Positionen der NTCs werden in der Tabelle NTC NINE SIX WELL gehalten, wobei jede Position nur einer Studie zugeordnet sein kann. Die
Positionen werden wie in einem Koordinatensystem gehalten. Es gibt daher ein Feld POSITION X als auch ein Feld POSITION Y. Wird beim
Anlegen einer Studie zum Beispiel der Wert B4 eingegeben, wird für
POSITION X der Wert 4 und für POSITION Y der Wert B gespeichert.
Die Tabelle SAMPLE enthält alle Samples, die zu den Studien eingespielt wurden. Durch einen Fremdverschlüssel auf die Tabelle STUDY,
können alle Samples einer Studie zugeordnet werden. Ein kombinierter
1
http://de.wikipedia.org/wiki/Chen-Notation
13
KAPITEL 4. IMPLEMENTIERUNG
Abbildung 4.1: Datenbankmodell
14
Name1, Name2
KAPITEL 4. IMPLEMENTIERUNG
Unique Constraint auf die Sample ID und den Fremdschlüssel auf eine Studie, stellt sicher, dass eine Sample ID nur einmal innerhalb einer
Studie vorkommt. Zu einem Sample werden außerdem noch die Konzentration, der Qualitätswert, die Information ob ein Sample als Fehler
deklariert ist und das Einfügedatum gespeichert.
Generierte Layouts werden in der Datenbank in der Tabelle LAYOUT
gehalten. Im Gegensatz zu den NTC Positionen werden die Positionen
der Sample IDs nicht mittels X und Y Koordinaten festgelegt, sondern
werden durch eine Kombination aus einer fortlaufenden Nummer und
der Nummer des Layouts berechnet. Die ersten 96 verwendeten Sample
IDs erhalten für die Positionnummer die Werte 0-95 und für die Layoutnummer den Wert 1. Für die weiteren Layouts wird die Positionsnummer fortgesetzt, so erhält die Sample ID auf dem folgenden Layout die
Positionsnummer 96 und die Layoutnummer 2.
Analog zur Generierung und Ablage der Layouts erfolgt auch die Verwaltung der Samplesheets.
Für die QC Generierung wird das gleiche Konstrukt wie für Layouts
und Samplesheets angewendet, allerdings werden hierfür eigene Tabellen
verwendet.
In einem weiteren Modelierungsschritt wird das erstellte ER Diagramm
in ein relationales Datenmodell überführt, da für die Implementierung
weitere Informationen notwendig sind. Im relationalen Datenmodell werden die Objekte und Beziehungen in Form von zweidimensionalen Tabellen dargestellt.
4.2
4.2.1
Serverarchitektur
MVC Pattern
Für die Serverarchitektur wurde auf das MVC Pattern2 zurückgegriffen. Das MVC-Pattern ist ein Architekturmuster zur Strukturierung von
Softwareprojekten in die drei Einheiten Datenmodellschicht (Model),
Präsentation (View) und Programmsteuerungsschicht (Control) (Abbildung3 4.2). Ziel dieser Struktur ist ein flexibler Programmentwurf, der
eine spätere Änderung oder Erweiterung erleichtert und eine Wiederverwendbarkeit der einzelnen Komponenten ermöglicht. Es ist dadurch
beispielsweise möglich eine Anwendung zu schreiben, die das selbe Modell benutzt und sowohl eine Windows- oder Linux-Oberfläche realisiert,
als auch aber auch eine Weboberfläche beinhaltet. Beides basiert auf dem
gleichen Modell, Controller und View müssen dabei jeweils neu konzi2
3
http://de.wikipedia.org/wiki/Model View Controller
Bildquelle: http://www.octalsoftware.com/images/stories/mvc-php.png
Name1, Name2
15
KAPITEL 4. IMPLEMENTIERUNG
piert werden.
Abbildung 4.2: Klassisches MVC Pattern
4.2.2
Projektstruktur
Damit das MVC Pattern umgesetzt werden kann, ist es auch notwendig
die benötigten Ressourcen und Klassen strukturiert aufzuteilen. Webressourcen (Javascript Dateien) liegen in einem eigenen Ordner getrennt
vom serverseitigen Quellcode. Dieser befindet sich in einem eigenen Verzeichnis und ist dort wiederum in verschiedene Packages aufgeteilt. Die
Packages teilen in die Präsentationsschicht und die Datenmodellschicht
auf.
16
Name1, Name2
KAPITEL 4. IMPLEMENTIERUNG
4.2.3
O/R Mapping mit Hibernate
Die Datenhaltungsschicht, die Teil der Datenmodellschicht ist, ist für
das Speichern und Laden der Daten verantwortlich. Diese Aufgabe wird
durch die im Package com.workflow. database.beans enthaltenen Beans
durchgeführt. Wie für die Implementierung mit Hibernate üblich gibt es
für jede Tabelle in der Datenbank eine dementsprechende Java Klasse
(Bean). Folgende Java Klasse repräsentiert eine simple Java Bean Klasse:
public class MyBean {
private String name;
public MyBean(){}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
Eine Java Bean Klasse hat die Eigenschaft, dass auf ihre privaten Variablen, wie in diesem Fall der String name mittels der Methode getName()
zugegriffen werden kann. Analog zur Zugriffsmethode gibt es auch eine
Methode setName(), mit welcher die Variable name gesetzt werden kann.
4.2.4
Businesslogik
Die Businesslogik ist in das Package com.workflow.management in verschiedene Klassen ausgelagert. Diese Schicht ist vorallem für die Verbindung zwischen der Datenbank und der Präsentationsschicht zuständig.
Hier werden beispielsweise die Daten, die in der Datenbank gespeichert
werden dementsprechend aufbereitet.
4.2.5
Servlets
Ein Request eines Klienten (beispielsweise eines Webbrowsers) wird von
den Servlet entgegen genommen und verarbeitet. Welches Servlet angesprochen wird, wird in der web.xml Datei der Webapplikation festgelegt. Die Präsentationschicht liegt im Ordner für die Webresourcen
bzw. im Package com.workflow.servlet. Die Servlet Klassen sind für die
Kommunikation mit der Weboberfläche zuständig, wobei diese Kommunikation mittels JSON Objekten erfolgt. Der serverseitige Teil dieser
Schicht besteht aus 5 Servlets, welche in der Datei web.xml (wie für
Name1, Name2
17
KAPITEL 4. IMPLEMENTIERUNG
alle Webapplikationen erforderlich) definiert sind. Die Servlets werden
direkt vom Klienten (Webbrowser) angesprochen und haben den direkten Zugriff auf den Request des Aufrufers. Aus dem Request werden
die relevanten Daten ausgelesen und der Bussinesslogik weitergeleitet.
Im folgenden werden die wichtigsten Servlets und deren Aufgaben kurz
erläutert:
• AuthenticationServlet
Beim Einloggen auf der Startseite der Webapplikation wird dieses Servlet aufgerufen. Je nach erfolgreicher bzw. nicht erfolgreicher Authentifizierung wird eine dementsprechende Antwort an
den Browser zurückgeschickt. Im Erfolgsfall wird der Benutzer auf
die Hauptseite der Applikation weitergeleitet bzw. bei einem fehlerhaften Authentifizierungsversuch wird dem Benutzer eine Fehlermeldung angezeigt.
• WorkflowServlet
Dieses Servlet ist die zentrale Stelle für alle Requests, welche die
Verwaltung der Studien betreffen. Über dieses Servlet werden alle
Informationen zu einer Studie abgefragt. Dies betrifft sowohl die
Auflistung der Sample IDs als auch die Anzeige und Generierung
der Layouts bzw. Samplesheets.
• InitializationServlet
In der Datei web.xml kann die Reihenfolge festgelegt werden, welches Servlet an erster Stelle initialisiert werden soll. Im Falle dieser
Webapplikation wurde dieses Servlet festgelegt, um dort das Auslesen der Konfigurationsdatei, das Initialisieren der Datenbank und
das Einrichten der Logdatei vorzunehmen. Für das Auslesen der
Konfigurationsdatei wird davon ausgegangen, dass unter dem Pfad
/opt/workflow/config/WorkflowManager.conf eine gültige Datei
vorhanden ist, welche auch einen lesenden Zugriff des Tomcat Prozesses zuläßt. Eine gültige Konfigurationsdatei besteht aus folgendem Inhalt.
#Database configuration
username=workflow
password=workflow
hostname=localhost
schemaname=workflow
Die Logdatei wird im Ordner /var/workflow/logs/ WorkflowManager.html angelegt. Durch die spezifische HTML Layout Einstellung des Output Formats kann diese Datei in einem HTML-fähigen
Browser betrachtet werden.
18
Name1, Name2
KAPITEL 4. IMPLEMENTIERUNG
• DownloadServlet
Alle Requests welche den Export einer Studie, Reports bzw. eines
Layouts betrifft, werden über dieses Servlet verarbeitet. Je nach
Anfragetyp wird eine CSV oder ZIP Datei zurückgeliefert. Der
Webbrowser bietet dem Benutzer anschließend eine Möglichkeit
die Datei zu Speichern bzw. zu Öffnen.
4.3
Grafische Benutzeroberfläche
Die grafische Benutzeroberfläche wurde mit dem Javascript Framework
ExtJS implementiert. Durch die diversen grafischen Elemente wie zum
Beispiel Fenster und Menüs bzw. Kontextmenüs ergab sich die Möglichkeit eine desktopähnliche Benutzeroberfläche zu gestalten. Als Grundgerüst wurde die Idee des Dateiexplorers (unter Windows) aufgenommen
und somit eine ähnliche Benutzersteuerung, wie bisher von den Labormitarbeiter gewohnt, umgesetzt. Der Hauptbildschirm (Abbildung 4.3)
wurde in drei Teile aufgegliedert. Im oberen Bereich befindet sich eine
Menüleiste, welche einen Button zum Abmelden als auch einen Button zum Anlegen einer neuen Studie beinhaltet. Auf der linken Seite
befindet sich eine Baumstruktur, die in der ersten Ebene alle vorhandenen Studien auflistet. Wird eine Studie aufgeklappt, erscheinen alle
Ansichtsmöglichkeiten zur ausgewählten Studie. Auf der rechten Seite
befindet sich der größte Bereich, der ungefähr 80% der Ansicht einnimmt.
Hier wird die jeweils selektierte Ansicht dargestellt.
Zusätzlich zum Hauptbildschirm bieten sich noch folgende Ansichten:
• Tabellarische Auflistung aller Sample IDs einer Studie
• Auswahl und Anzeige von 96 Well Layouts
• Auswahl und Anzeige von 384er Samplesheets
• Auswahl und Anzeige der Layouts der Qualitätssicherung
• Auswahl und Anzeige der SNPs
• Auswahl und Anzeige der benutzerdefinierten Layouts
Die Steuerung von Aktionen auf Studien erfolgt über ein Kontextmenü in
der Baumstruktur. Das Menü erscheint nur bei einem Rechtsklick auf
den Studiennamen. Folgende Aktionen können dabei aufgerufen werden.
• Generierung der 96 Well Layouts
• Generierung der 384er Samplesheets
Name1, Name2
19
KAPITEL 4. IMPLEMENTIERUNG
Abbildung 4.3: Hauptbildschirm mit der Studienübersicht auf der linken Seite. Der Großteil der Oberfläche wird auf der rechten Seite des
Bildschirms beansprucht um die verschiedenen Ansichten darzustellen.
• Generierung der Qualitätssicherung
• Auswahl und Anzeige der benutzerdefinierten Layouts
Die Benutzeroberfläche bietet dem Benutzer ein einfache Bedienung und
schnellen Zugriff auf die wesentlichen Features.
20
Name1, Name2
Kapitel 5
Installation
Das folgende Kapitel beschreibt ein Installation der Software WorkflowManager unter einem Linux1 Betriebssystem. Sämtliche benötigten und
in der Folge angeführten Installationen, werden auf ein und demselben
Server vorgenommen.
5.1
Datenbankinstallation
Nach erfolgreicher Installation von MySQL kann nun das benötigte Datenbankschema installiert werden. Dazu ist es nötig sich mit einem Benutzer anzumelden, der über die Berechtigungen verfügt ein Schema
anzulegen und Benutzer zu verwalten.
Mit folgender Kommandozeileneingabe erfolgt der Login.
mysql -h hostname -u root -p
Als erster Schritt ist es notwendig das Datenbankschema an sich anzulegen. Der Name des Datenbankschemas wird in diesem Fall als worklfow
benannt.
CREATE DATABASE workflow;
Zusätzlich wird ein weiterer Benutzer angelegt, unter welchem später
die Webapplikation auf die Datenbank zugreifen wird. Dieser Benutzer
erhält ebenfalls den Namen ẅorkflow.̈
CREATE USER ’workflow’@’localhost’ IDENTIFIED BY ’workflow’;
Als Hostname wird localhost verwendet, da die gesamte Konfiguration
1
http://de.wikipedia.org/wiki/Linux
21
KAPITEL 5. INSTALLATION
direkt am Server vorgenommen wird. Anschließend müssen dem angelegten Benutzer noch Berechtigungen zugewiesen werden. Der Benutzer benötigt für das Datenbankschema workflow die Berechtigung Datensätze zu Löschen, Einzufügen, zu Lesen und zu Aktualisieren.
GRANT SELECT,INSERT,UPDATE,DELETE ON workflow.* TO ’workflow’@’localhost’;
Im nächsten Schritt kann nun die Tabellenstruktur des Schemas angelegt werden. Dies erfolgt in diesem Fall über die Importfunktion einer
MySQL Dumpdatei workflow.sql, welche die genaue Definition des Schemas enthält. Um diese Datei einspielen zu können, muss die Applikation
MySQL verlassen werden und in der Linuxkonsole folgender Befehl ausgeführt werden:
mysql -u root -p workflow.sql
Nach Ausführung des letzten Befehls ist die Installation und Einrichtung der Datenbank für die Webapplikation abgeschlossen.
5.2
Java Installation
Damit der WorkflowManager korrekt in Betriebnahme genommen werden kann, wird auf dem Server eine Java Installation mit Version 6 Update 7 benötigt. Es ist ausreichend die Java Runtime Environment (JRE)
zu installieren, da auf dem Produktivsystem kein Java Quellcode mehr
kompiliert wird.
5.3
Apache Tomcat Installation
Da der WorkflowManager innerhalb eines Servlet Container laufen muss,
wird die Installation eines Apache Tomcat in der Version 5.20 benötigt.
Diese Version des Tomcat wird in der aktuellen Fedora Linux Distribution mit ausgeliefert und ist dort in Form einer Standardinstallation
als Serverprozess verfügbar. Standardmäßig ist die Tomcat Installation
so eingerichtet, dass sich die Webapplikationen des Servers im Verzeichnis /var/lib/tomcat5/webapps/ als WAR Datei befinden müssen. Eine
WAR Datei (Web Application Archive) ist eine komprimierte Datei ähnlich einer ZIP Datei, welche die sämtliche Ordnerstruktur und die kompilierten Java Klassen der Webapplikation enthält. Beim Starten des
Tomcat Servers werden alle sich in diesem Ordner befindlichen Dateien entpackt, wobei der entpackte Ordner genau den selben Namen wie
die vorhandene WAR Datei bekommt - auch als Deploy Name bekannt.
22
Name1, Name2
KAPITEL 5. INSTALLATION
Nach erfolgreichem Starten des Tomcat Servers ist die Applikation unter URL http://servername:8080/WorkflowManager erreichbar. Damit
die Portnummer in der URL nicht angegeben werden muss, wird der
Apache Server dementsprechend konfiguriert, dass normale HTTP Requests, die auf den Port 80 eingehen, an den Tomcat Server weitergeleitet
werden.
Name1, Name2
23
Kapitel 6
Zusammenfassung
Die Webapplikation erfüllt alle an sie gestellten Anforderungen. Studien können ohne großen Aufwand angelegt und zentral verwaltet werden.
Die zur Weiterverarbeitung benötigte Aufbereitung von speziellen Dateiformaten steht durch verschiedene Exportmöglichkeiten zu Verfügung.
Durch eine benutzerfreundliche und simple Struktur der Benutzeroberfläche kann sie auf einfache Art und Weise erweitert werden, um weitere
Workflows der Labormitarbeiter zu unterstützen. Der zentrale Zugriff
und Verwaltung der Studiendaten ist keine Synchronisierung bzw. Abgleichung von Excel Dateien mehr notwendig.
Die Verwendung eines etablierten Javascript Frameworks bietet die Unterstützung aller gängigen Webbrowser, womit jeder Benutzer seinen
favorisierten Browser auch für diese Applikation verwenden kann.
In einer weiteren Iteration kann die Benutzerverwaltung ausgebaut werden, indem für die einzelnen Operationen dementsprechende Berechtigungen eingeführt werden, die einem Benutzer zugeordnet werden können.
Weiters lässt sich auch die bereits vorhandene Funktionalität der Qualitätssicherung erweitern.
25
Literaturverzeichnis
[che] Definition Chen-Notation, http://de.wikipedia.org/wiki/
Chen-Notation, zugegriffen am 17.01.2010.
[ext] Javascript Framework, http://www.extjs.com, zugegriffen am
10.05.2009.
[hib] O/R Mapping Library Java, http://www.hibernte.org, zugegriffen am 04.05.2009.
[jav] Wiki Artikel Linux, http://de.wikipedia.org/wiki/Linux, zugegriffen am 17.01.2010.
[lin]
Java Dokumentation, http://java.sun.com, zugegriffen am
17.01.2010.
[mvc] Definition MVC Pattern, http://de.wikipedia.org/wiki/
Model View Controller, zugegriffen am 04.05.2009.
[tom] Tomcat Servlet Container, http://tomcat.apache.org, zugegriffen am 04.05.2009.
27
Benutzerhandbuch
A.1
Login
Nach Aufruf der URL, unter welcher der WorkflowManager installiert
wurde, erscheint als Startseite eine Loginmaske (Abbildung 1).
Für Benutzername und Passwort werden die selben Daten wie für die
Abbildung 1: Loginmaske
Authentifizierung verwendet. Nach einem erfolgreichen Anmeldevorgang
erfolgt die Weiterleitung zur Hauptseite (Abbildung 2).
A.2
A.2.1
Verwaltung von Studien
Studien Anlegen und Einspielen
Unter dem Menüpunkt Studien - Anlegen (Abbildung 3) öffnet sich ein
Dialogfenster (Abbildung 4).
Jede Studie muss einen Studiennamen erhalten und kann optional dazu auch über eine Identifikationsnummer verfügen. Beide Werte werden
verwendet, um die Studie in der Auflistung aller Studien im linken Anzeigebereich des Hauptfensters genau zu identifizieren. Ebenfalls wird
der Name und die Identifikationsnummer auch bei der automatischen
29
LITERATURVERZEICHNIS
Abbildung 2: Hauptseite
Abbildung 3: Menüeintrag Studie anlegen
Abbildung 4: Dialogfenster Studie anlegen
30
Name1, Name2
LITERATURVERZEICHNIS
Benennung der Exportdateien verwendet. Die ebenfalls optionale Beschreibung wird lediglich als Tooltip bei der Auflistung der Studien verwendet und dient nur einen informativen Zweck. Als Sampledatei muss
eine Textdatei im Dateisystem ausgewählt werden, welche eine Liste von
Sample IDs enthält. Für ein erfolgreiches Anlegen einer Studie muss eine
gültige ausgewählt sein. Die NTC Positionen, welche ebenfalls für den
Import notwendig sind, werden in Form von xy Koordinaten angegeben.
Wobei für die x-Achse die Werte 1-12 und für die y-Achse die Werte A-H
gültig sind. Mehrere NTC Positionen werden durch Leezeichen getrennt
angegeben. Durch das Bestätigen der Eingaben mit dem "Speichern"
Knopf, wird die Studie angelegt und die Sample IDs aus der angegebenen
Textdatei eingespielt.
A.2.2
Samples Importieren
Um nachträglich weitere Sample IDs zu einer bestehenden Studie einspielen zu können, gibt es die Möglichkeit durch einen Rechtsklick auf
die gewünschte Studie eine weitere Datei zu importieren (Abbildung 5).
Abbildung 5: Eine weitere Datei mit Sample IDs einspielen
A.2.3
Proben Importieren
Um eine Studie zu vervollständigen werden noch Konzentrations- und
Qualitätswerte benötigt, welche ähnlich wie Sample IDs importiert werden. Ebenfalls über einen Rechtsklick auf die gewünschte Studie wird
der Menüeintrag "Proben importieren" aufgerufen. Es erscheint anschließend ein neues Dialogfenster wie in Abbildung 6.
Hier besteht die Möglichkeit zwei verschiedene Importformate zu verwenden. Zum einen eine Nanodrop Datei und zum anderen eine Nanoquant Datei. Die anschließend ausgewählte Datei muss eine CSV Datei
sein, welche im Format der dementsprechenden Auswahl entspricht.
Name1, Name2
31
LITERATURVERZEICHNIS
Abbildung 6: Proben einspielen
A.2.4
Layouts Generieren
Damit Layouts betrachtet werden können müssen sie zuerst generiert
werden. Durch die Auswahl des Menüpunktes 96 Layout generieren werden aus allen Sample IDs zur ausgewählten Studie Layouts generiert.
Sind vor dieser Aktion schon Layouts vorhanden, werden diese automatisch gelöscht bzw. uberschrieben.
A.2.5
Samplesheets Generieren
Analog zur Generierung von Layouts, werden auch die Samplehseets
generiert.
A.2.6
Samplesheets Generieren
Bestehende Layouts können durch einen Doppelklick auf die gewünschte
Position geändert werden. Es erscheint eine Auswahlmöglichkeit in Form
einer Dropdown Box (Abbildung 7), in der alle in der Studie enthaltenen
Sample IDs aufgelistet werden. Nach Auswahl der gewünschten Sample
ID wird diese Änderung automatisch in der Datenbank übernommen.
A.3
Exportieren
Damit die vorhandenen und gesammelten Daten der Studien auch weiterverwendet werden können, gibt es die Möglichkeit die Studien in diversen Formaten zu exportieren. Die Exportfunktion erfolgt ebenfalls
über das Kontextmenü (Abbildung 8). Bei allen Exportfunktionen besteht die Möglichkeit ein einzelnes Layout bzw. Samplesheet als CSV
Datei oder die gesamte Studie als ZIP Datei, welche für jedes Layout
bzw. Samplesheet eine CSV Datei enthält, auszuwählen.
32
Name1, Name2
LITERATURVERZEICHNIS
Abbildung 7: Auswahl einer neuen Sample ID
Abbildung 8: Kontextmenü für den Export
Name1, Name2
33
LITERATURVERZEICHNIS
A.3.1
Roboter DNA Konzentration Exportieren
Spezielle Ausgabe einer CSV Datei. Es ist außerdem möglich den Inhalt
der ersten Spalte per Auswahl zwischen P1 und Q1 zu definieren. Die
exportierte Datei enthält die Spalten Quelle-Label, Quelle-Position und
Konzentration, wobei die Quellenposition aus einer einfachen Durchnummerierung besteht.
A.3.2
Layouts Exportieren
Beim Standardmäßigen Export von Layouts gibt es ebenfalls die Möglichkeit ein einziges Layout oder alle Layouts der gesamten Studie zu Exportieren.
A.3.3
Samplesheets Exportieren
Analog zum Export der Layouts können auch die Samplesheets exportiert werden.
A.4
QC Generierung
Um bei einer bestehenden Studie eine Qualitätskontrolle generieren zu
können, muss eine QC Generierung ausgeführt werden. Für die Berechnung der verwendeten Sample IDs ist es notwendig die gewünschten
Positionen anzugeben (Abbildung 9). Um nicht sofort eine komplette
Generierung anzustoßen besteht die Möglichkeit anhand der vorhandenen Eingaben die Abdeckung vorauszuberechnen.
Abbildung 9: Erforderliche Eingabe für QC Generierung
34
Name1, Name2
Herunterladen