1 Einleitung Techniken Tomcat Struts Hibernate PostgreSQL Entwicklungsumgebung...

Größe: px
Ab Seite anzeigen:

Download "1 Einleitung... 1. 2 Techniken... 3 2.1 Tomcat... 4 2.2 Struts... 5 2.3 Hibernate... 8 2.4 PostgreSQL... 9 2.5 Entwicklungsumgebung..."

Transkript

1 Zusammenfassung Thema der Diplomarbeit ist die Planung sowie die Implementierung einer Software zur Verwaltung von Agenturprojekten. Durch die Software soll es möglich sein, alle Daten, die mit einem Auftrag in Verbindung stehen, an zentraler Stelle zu halten und zu verwalten. Hierbei werden die Schwerpunkte auf den Schriftverkehr innerhalb eines Auftrags, die anfallenden Binärdaten, die beteiligten Personen mit deren Kontaktinformationen sowie die für den Auftrag geleisteten Arbeitsstunden gelegt. Um den Zugriff auf die anfallenden Daten administrieren zu können, wird eine Benutzerverwaltung benötigt, durch welche sich die einzelnen Funktionen der Software den Benutzern zuweisen lassen. Um diese Aufgaben zu bewältigen, habe ich in einem ersten Schritt den Funktionsumfang mit der Propeller GmbH genau spezifiziert. Darauf folgte eine lange Recherchephase, in der ich mir die verschiedensten Sprachen und Technologien zur Entwicklung von Web-Anwendungen anschaute. Zum Einsatz kamen dann eine Kombination der unterschiedlichsten Softwareprodukte. Als Datenbank wurde die PostgreSQL Datenbank [Pos] eingesetzt. Das Struts-Framework [Str] unterstützt die Anwendung unter anderem durch die Möglichkeit zur modellgetriebenen Entwicklung. Als Webserver dient der Apache Tomcat [Tom], der den benötigten Servlet-Container für die Anwendung zur Verfügung stellt. Um die verwendete Datenbank objektorientiert einzubinden, wurde der OR-Mapper Hibernate [Hib] mit der Criteria Api eingesetzt. Mit Hilfe dieser Technologien enstand eine mehrschichtige Web-Anwendung, mit der alle Anforderungen umgesetzt werden konnten. Die Gestaltung der Benutzeroberfläche wurde von der Propeller GmbH entworfen und von mir in der Redesignphase implementiert.

2 Inhaltsverzeichnis 1 Einleitung Techniken Tomcat Struts Hibernate PostgreSQL Entwicklungsumgebung Analyse und Entwurf Projekte Benutzer Firmen Rollen Auswertung Datenbankschema Implementierung Geschäftslogik Anwendungslogik Präsentationslogik Bedienung Aufbau Benutzer Projekte Auswertung Konfiguration Redesign Ausblick A Das Quellcodeverzeichnis

3 Inhaltsverzeichnis IV Glossar Stichwortverzeichnis Literaturverzeichnis

4 1 Einleitung Ausgangssituation für die Ausschreibung dieser Dilpomarbeit durch die Propeller GmbH war es, die bisherige Projektverwaltungssoftware gegen eine neuere Anwendung auszutauschen. Die existierende Software wurde vor einigen Jahren in ihrer Ursprungsversion entwicklet und seit dem ständig erweitert. Durch ihren nichtmodularen Aufbau war es nur unter sehr viel Zeitaufwand möglich, weitere Funktionalität zu integrieren und Softwarefehler auszubessern. Diese Umstände, sowie die Tatsache, dass sich die Anwendung zu einem elementaren Bestandteil des Produktionsprozesses der Propeller GmbH entwickelt hat, veranlasste diese, hieraus ein Diplomarbeitsthema zu entwerfen. Die neue Anwendung sollte sich der Fehler der alten Anwendung annehmen und eine einheitliche Struktur für Funktionalität und Bedienung schaffen. Ebenfalls sollten nur Funktionen zur Projektverwaltung integriert werden, was nur eine Teilfunktionalität der alten Anwendung darstellte. Die neue Version sollte sich nur auf die Projektverwaltung konzentrieren, diese aber, im Vergleich zur alten Anwendung, um neue Funktionen erweitern. Das alte System wurde aufgrund seiner Architektur nur intern von den Mitarbeitern der Propeller GmbH verwendet und konnte aus Sicherheitsgründen nicht für den Kunden durch das Internet zugänglich gemacht werden. Da im Laufe der vergangenen Jahre aber festgestellt wurde, dass es sehr nützlich sein kann, bestimmten Kunden Zugriff auf gewisse Projektinformationen zu gestatten, sollte dies von Anfang an bei einer Neuentwicklung berücksichtigt werden. Um diese genannten Erweiterungen sowie die alte Funktionalität zur Projektverwaltung integrieren zu können, wurde die neue Anwendungen in folgende Teilbereiche aufgeteilt, welche später durch weitere Bereiche ergänzt werden sollten. Eine Benutzerverwaltung soll es ermöglichen, Personen und Rollen verwalten zu können. An die Personen sind alle personenbezogenen Daten geknüpft. Durch Rollen soll es möglich sein, Personen mit unterschiedlichen Befugnissen auszustatten, um ihnen so nur Teilbereiche der Anwendung oder Teilfunktionalität zur Verfügung zu stellen. Für das Rollensystem muss ein funktionierendes Anmeldesystem existie-

5 1 Einleitung 2 ren, was jeden Benutzer authentifiziert und ihn die Anwendung somit identifizieren kann. Desweiteren müssen die Rollen der angemeldeten Person geprüft werden, und es muss darauf geachtet werden, dass dies nicht einfach umgangen werden kann. Eine Firmenverwaltung ist zuständig für alle firmenbezogenen Daten. Diese Daten sollen jederzeit leicht auffindbar, erweiterbar und manipulierbar sein. Eingetragenen Firmen können jederzeit Benutzer zugeordnet werden. Diese Firmen können dann in Verbindung mit Projekten stehen. Die neue Projektverwaltung stellt alle Funktionen der früheren Projektverwaltung zur Verfügung. Somit muss es ihr möglich sein, alle projektbezogenen Daten aufzunehmen und diese zu organisieren. Zu Projekten können Stunden durch Mitarbeiter eingetragen werden, um die Aktivität am Projekt zu verfolgen. Weiterhin soll es möglich sein, Binärinformationen und Termine mit Projekten zu verknüpfen. Die Anwendung sollte serverseitig laufen, um sie zentral ansprechen zu können und um neue Funktionalität schnell verbreiten zu können. Die benötigten Daten sollen zentral in einer relationalen Datenbank gehalten werden, damit diese auch aus anderen Projekten der Propeller GmbH heraus angesprochen werden können. Um mit der Arbeit beginnen zu können, mussten diese Anforderungen genauer spezifiziert werden, womit sich das Kapitel 3 ausführlich beschäftigt. Hierfür wurde in mehreren Gesprächen mit der Propeller GmbH eine genaue Spezifikation erstellt. Die Anwendung sollte klar in Kernschicht und Präsentationsschicht unterteilt werden, damit einer späteren Erweiterung des Funktionsumfangs nichts im Wege steht.

6 2 Techniken Vorgabe der Propeller GmbH war es, die Anwendung als Web-Anwendung zu realisieren. Die zugrundeliegende Softwarearchitektur spielte keine Rolle. Durch diese Vorgabe konnte ich mir verschiedene Entwicklungsumgebungen für Web- Anwendungen ansehen. Ich musste mich bei der Auswahl meiner Software-Technologien ausschließlich auf kostenlose Softwareprodukte beschränken, da mir keinerlei finanzielles Budget zur Verfügung stand. Apache / perl Apache / php Tomcat / Java/ Torque / Turbine Tomcat / Java / Struts Die Java Lösungen bieten hier eine gute Trennung zwischen Gestaltung der Seiten und Einbindung der Funktionalität. Durch die Einbindung von JavaBeans, lassen sich mit erheblich verringertem Aufwand selbst komplexe Webanwendungen erstellen. Meine Entscheidung viel zu Gunsten des Struts-Frameworks, da sich hier, im Vergleich zur Turbine Lösung, viele Komponenten des Frameworks durch die unterschiedlichsten Technologien realisieren lassen. Alle momentan frei verfügbaren relationalen Datenbanken erfüllten die an die Datenbank gerichteten Anforderungen. Meine Wahl fiel hier auf die PostgreSQL [Pos] Datenbank, für welche aktuelle Treiber zur Verfügung stehen. Die PostgreSQL Datenbank läuft unter den gängigen Betriebsystemen Windows, Mac OS und Linux. Somit kann das zugrundeliegende Betriebsystem jederzeit umgestellt werden.

7 2.1 Tomcat Tomcat Apache Tomcat[Tom] stellt eine Umgebung zur Ausführung von Java-Code auf Webservern bereit, die im Rahmen des Jakarta-Projekts der Apache Software Foundation entwickelt wird. Es handelt sich um einen in Java geschriebenen Servletcontainer, der mithilfe des JSP-Compilers Jasper auch JavaServer Pages in Servlets übersetzen und ausführen kann. Dazu kommt ein kompletter HTTP-Server. Der HTTP-Server des Tomcat wird vor allem zur Entwicklung eingesetzt, während in Produktion zumeist ein Apache Web-Server zum Einsatz kommt. Dazu wird in den Apache ein Plugin eingebunden, das nur Requests für dynamische Inhalte an den Tomcat weiterleitet. Das Plugin spricht den Tomcat dann normalerweise über das Apache JServ Protocol an.

8 2.2 Struts Struts Struts[Str] ist ein Open-Source-Framework für die Präsentationsschicht von Java- Webanwendungen. Struts beschleunigt die Entwicklung von Webanwendungen wesentlich, indem es HTTP-Anfragen in einem standardisierten Prozess verarbeitet. Dabei bedient es sich standardisierter Technologien wie JavaServlets 1, Java Beans 2, Resource Bundles und XML sowie verschiedener Jakarta-Commons-Pakete[Jak]. Für den Entwickler bedeutet das, dass viele applikationsrelevante Funktionen bereits implementiert und einsatzbereit sind. Struts wird bereits in sehr vielen Webanwendungen eingesetzt und gemeinhin als solides Framework angesehen. Model-2-Architektur Nachdem die Technologie von Java-Servlets eingeführt wurde, erkannte man schnell, dass das Erstellen von HTML-Seiten mit Servlets zeitaufwendig und die Weiterentwicklung von Views sehr mühsam sein kann. Hinzu kam, dass alle drei Komponenten des MVC in einem Servlet realisiert wurden. Daraufhin wurde die JSP-Technologie eingeführt, die vor allem dem Webdesigner die Arbeit leichter machte und sich in kurzer Zeit durchsetzte. Daraus entwickelte sich die Model-1- Architektur, die beschreibt, dass Datenhaltung, Geschäftslogik und View in einer JSP anzusiedeln sind, was jedoch bei komplexer Anwendungslogik zu neuen Problemen führt: Die JSP wird in kürzester Zeit unüberschaubar und lässt sich nur durch Entwickler warten, die sowohl HTML- als auch Java-Kenntnisse besitzen. Die aufgeführten Problematiken haben dazu beigetragen, dass man ein neues Konzept entwickeln musste, das die einzelnen Komponenten klarer voneinander abgrenzt und Java-Servlets und JSP gleichermaßen einbindet. Es entstand die Model- 2-Architektur für Webanwendungen, die ihren Einsatz im Struts-Framework gefunden hat. Eine wichtige Rolle spielt hierbei das ActionFirst-Pattern. Das bedeutet, dass View-Komponenten, die durch JSP abgebildet werden, ausschließlich über Struts-Actions (Servlets) referenziert werden, niemals über einen HTTP-Request. Dabei wird jeder HTTP-Request von einer Controller-Komponente (Servlet) entgegengenommen, bei Struts dem so genannten ActionServlet. Nach einem vom Benutzer initiierten HTTP-Request wird eine Struts-Action ausgeführt, die eine Verbindung zur Geschäftslogik herstellt und diese aktualisiert. Die Ergebnisse der Ausführung werden anschließend in dem HTTP-Request als Attribute abgelegt. Danach wird über einen Action-Forward die View aufgerufen und mit den im HTTP-Request abgelegten Daten gefüllt. Befindet sich in einer View-Komponente ein HTML-Formular, so wird dieses über ein Java-Bean mit Werten aus dem Model gefüllt. Die Model-2-Architektur bietet sich hier als Regelwerk an (u.a. ist die Kommunikation von Views untereinander, wie auch die feste Kodierung von 1 Als Servlets bezeichnet man Java-Klassen, deren Instanzen innerhalb eines Webservers Anfragen von Clients entgegen nehmen und beantworten. 2 Java Beans sind Software-Komponenten für die Programmiersprache Java. Sie werden in der Softwareentwicklung als Container zur Datenübertragung verwendet

9 2.2 Struts 6 Flusssteuerung in JSP, verboten). Das Struts Framework ordnet einer Webserver Adresse bzw. einer Serverseite in drei wesentliche Elemente auf. Schichtenmodell Eine sauber implementierte Anwendung zeichnet sich unter anderem dadurch aus, dass die Darstellung der Daten für den Benutzer von der Geschäftslogik unabhängig ist und bleibt. Im Falle von STRUTS muss also gewährleistet sein, dass die Geschäftslogik nicht von STRUTS abhängt, da andernfalls eine Trennung der Schichten nicht mehr gewährleistet werden kann. Bei den Schichten handelt es sich um logische und evt. sogar physisch gruppierte Softwarekomponenten, die gemeinsam einen bestimmten Zweck erfüllen. Eine J2EE3 Anwendung kann in folgende Schichten unterteilt werden. Präsentationsschicht Zur Präsentationsschicht zählen alle Klassen und anderen Komponenten die für die Darstellung der Daten (View) zuständig sind. Gelingt es diese Schicht frei von jedweder Geschäftslogik zu halten spricht man von einem Thin-Client 3 oder sogar Ultra-Thin-Client. Neben marketingpolitischen Aspekten eines Thin-Clients spricht auch dessen Flexibilität für selbigen. Das STRUTS Framework befindet sich komplett in dieser Schicht und sollte die Geschäftslogik der Anwendung lediglich benutzen, nicht jedoch implementieren! Änderungswünsche von Kunden beziehen sich meist auf die Oberfläche und aus diesem Grund ist auf die Trennung der Schichten zu achten. Kommt es zu einem Änderungswunsch an der Oberfläche der Anwendung, müssen nur noch die Komponenten der View angepasst werden, nicht jedoch die Komponenten der anderen Schichten. Durch voneinander unabhängige Schichten entstehen bei der Entwicklung und anschließenden Pflege somit enorme Zeitersparnisse, da ein erneutes Deployment und Testen der Komponenten anderer Schichten entfällt. Eine Abhängigkeit der View von der Geschäftslogiksicht ist natürlich immer gegeben, nur anders herum muss es vermieden werden. Geschäftslogiksicht Die Geschäftslogikschicht ist die Schicht mit dem größten Entwicklungsaufwand. Hier werden die Anforderungen des Kunden fachlich umgesetzt. Hier gilt natürlich, dass eine Abhängigkeit von der Präsentationsschicht auszuschließen ist. Für die Kommunikation zwischen Geschäftlogik und Präsentationsschicht ist eine robuste Schnittstelle zu definieren, die sich auch bei einer neuen Version der Anwendung 3 Thin Client (engl. wörtlich dünner Kunde, inhaltlich bezogen auf Client-/Server-Architekturen) bezeichnet innerhalb der elektronischen Datenverarbeitung eine Anwendung oder einen Computer als Endgerät (Terminal) eines Netzwerkes, dessen funktionale Ausstattung auf die Ein- und Ausgabe beschränkt ist.

10 2.2 Struts 7 nicht ändert. Dadurch wird es möglich, dass mehrere Teams unabhängig voneinander an den verschiedenen Schichten arbeiten können. ActionForms Die Arbeit mit Formularen in STRUTS ist wahrscheinlich die angenehmste Eigenschaft dieses Frameworks, denn die Benutzereingaben können vom Framework automatisch validiert werden. Außerdem werden die Formularinhalte in JavaBeans gekapselt und sind so über mehrere Seitenaufrufe hinweg gespeichert. Actions Die Actions sind wie bereits deutlich wurde ein zentraler Bestandteil des Frameworks. Es handelt sich dabei um Javaklassen die dem Framework in der strutsconfig.xml bekannt gemacht werden müssen. Actionklassen erben von org.apache.struts.action.action und implementieren die execute-methode. Die STRUTS Tag Libraries Tags sind Formatierungselemente in Dokumenten die von einem Client zur Darstellung von Daten benutzt werden. Zu solchen Dokumenten gehören beispielsweise HTML und JSP Seiten. Darüber hinaus gibt es Tags die im Server zur logischen Formatierung der Daten benutzt werden und in HTML Tags transformiert werden. Das STRUTS Framework stellt in verschiedenen Libraries solche Formatierungselemente bereit. Weiterhin erlauben beispielsweise die Tags aus der BEAN-Library den Zugriff auf die Daten des Models. Die STRUTS Tag Libraries hatten zudem einen großen Einfluss auf die neue JSP Taglib JSTL6. Ein großer Vorteil dieser Tags besteht darin, dass eine Entwicklung von JSP Seiten ohne Scripting möglich ist. Dadurch ist nicht nur der Sourcecode solcher Seiten besser lesbar und damit besser wartbar, es ist auch für Webdesigner ohne Programmierkenntnisse möglich dynamische Seiten zu entwickeln und zu gestalten. Die Tag Libraries tragen außerdem dazu bei, eine Verwässerung des MVC Konzepts zu verhindern, da Programmierer erfahrungsgemäß dazu geneigt sind Teile der Geschäftslogik in den JSP Seiten (View) zu implementieren.

11 2.3 Hibernate Hibernate Ein OR-Mapper ermöglicht den Zustand eines Objekts in einer relationalen Datenbank zu speichern und aus entsprechenden Datensätzen wiederum Objekte zu erzeugen. Dies bezeichnet man auch als Object-Relational-Mapping (O-R-Mapping). Bei den Objekten handelt es sich um gewöhnliche Objekte mit Attributen und Methoden (sogenannte POJOs). Beziehungen zwischen Objekten werden auf entsprechende Datenbank-Relationen abgebildet. Hibernate ist ein Framework, das zur Persistenz von Java-Objekten eingesetzt wird. Durch objektrelationales Mapping bietet Hibernate die Möglichkeit, einfach auf relationale Datenbanken zuzugreifen und somit den Persistenzaufwand wesentlich zu reduzieren. Hibernate hat sich als ein de facto Standard Persistenz- Framework durchgesetzt und arbeitet mit allen gängigen relationalen Datenbanken. Somit kann das Framework in verschiedensten Anwendungsarchitekturen als Persistenzstrategie Einsatz finden. Hibernate kümmert sich dabei um die richtige Zuordnung der Java Datentypen auf die Datentypen der Datenbank und bietet Funktionen um die Daten der Klassen aus der Datenbank zu lesen als auch zu schreiben. Dadurch kann Hibernate die Entwicklungszeit verkürzen da sich die Entwickler der Logikfunktionen nicht mehr mit der Datenbankspezifischen SQL Syntax auseinandersetzen müssen. Die POJOs repräsentieren die Datenbanktabellen für die Entwickler. Für jede Tabelle muss eine Klasse erzeugt werden. Jede Spalte einer Datenbanktabelle wird durch ein entsprechendes Klassenattribut dargestellt. Wie es der Standard für JavaBeans vorsieht, müssen zu den privaten Klassenattributen entsprechende öffentliche getter- und setter-methoden implementiert werden. Hibernate bildet automatisch den Datenbankinhalt auf die JavaBeans bzw. deren Instanzen ab. Auch ein Traversieren der Assoziationen ist problemlos möglich. Um die Gruppen einer Person zu erhalten, wird einfach der entsprechende Getter aufgerufen.

12 2.4 PostgreSQL PostgreSQL PostgreSQL[Pos] ist eines der ältesten und am weitesten fortgeschrittenen objektrelationalen Datenbankverwaltungssysteme (ORDBMS) im Bereich der freien Software. PostgreSQL ist weitgehend konform mit dem SQL92/SQL99-Standard, d. h. alle in dem Standard geforderten Funktionen stehen zur Verfügung und verhalten sich so wie vom Standard gefordert; dies ist bei manchen kommerziellen sowie nichtkommerziellen SQL-Datenbanken bisweilen nicht gegeben. PostgreSQL ist auch für komplexere Anwendungen geeignet, in denen ANSI-SQL-Konformität, Views, Stored Procedures und Trigger benötigt werden. Im Vergleich zu solchen freien Datenbanken bieten kommerzielle Systeme wie zum Beispiel von Oracle Vorteile wie überlegenere Clusterkonzepte, höheren Funktionsumfang bei Views, Stored Procedures und Triggern, höhere Sicherheit und ausgefeiltere Backup- und Recovery-Möglichkeiten.

13 2.5 Entwicklungsumgebung Entwicklungsumgebung Die Anwendung wurd ausschließlich unter Verwendung von Open Source Software unter dem Betriebssystem Linux entwickelt. Eclipse, die integrierte Entwicklungsumgebung Kile, Editor für die LateX Umgebung zum Schreiben dieser Dokumentation CVS, zum Verwalten aller Quelldateien Dia, zum Erstellen der verwendeten Diagramme Gimp, zur Bildbearbeitung Eclipse mit WTP Eclipse[ecl] ist ein Open-Source-Framework, das meist als Entwicklungsumgebung (IDE) genutzt wird. Das Eclipse Projekt ist ein Open Source Projekt, das sich der Entwicklung einer robusten und umfassenden Entwicklungsplattform verschrieben hat, die für den kommerziellen Einsatz tauglich ist. Das Grundgerüst Projektes bildet die Eclipse Plattform, die eine erweiterbare auf Java basierende IDE darstellt. Sie zeichnet sich neben ihren eigenen Features durch einen starken Integrationscharakter aus, der das Einbinden externer Tools ermöglicht. WTP[wtp] ist ein Erweiterung der Eclipse Platform und dient zur Entwicklung von J2EE- und Webapplikationen.Das WTP-Projekt besteht aus Quelltexteditoren für HTML, Javascript, CSS, JSP, SQL, WSDL und andere Sprachen sowie aus einem grafischen Editor für XSD und WSDL. Außerdem sind Werkzeuge für die J2EE-Entwicklung, ein Webservices-Assistent sowie Testwerkzeuge enthalten. Dia Die Funktionalität von Dia[dia] ist mit dem proprietären Programm Visio vergleichbar. Es dient dazu, strukturierte Diagramme aufzubauen, die aus Standardobjekten zusammengesetzt sind. So gibt es unter Anderem Modi für Flowcharts, Netzwerk- und UML-Diagramme. Es gibt jedoch auch einige generische Funktionen, mit denen einfache Zeichnungen erstellt werden können. Das Programm verfügt über eine solide Zahl an Ausgabeformaten, die beispielsweise EPS, SVG, CGM und PNG beinhalten. Probleme bei der Kommunikation sind Sollte ein bestimmter Diagrammtyp noch nicht unterstützt sein, so können neue Objekttypen über einfache XML Dateien hinzugefügt werden. Latex und Kile Kile[kil] ist ein einfach zu bedienender, benutzerfreundlicher TeX/LaTeX Editor unter KDE. TeX/LaTeX ist ein Textsatzsystem, mit dem qualitativ sehr hochwertige, geräteunabhängige Satzdateien erstellt werden können. Es ist besonders zum

14 2.5 Entwicklungsumgebung 11 Satz von Dokumenten geeignet, die viele mathematische oder technische Formeln enthalten. Textsatz mit TeX funktioniert etwas anders, als man es von Textverarbeitungsprogrammen wie OpenOffice oder MS Office gewohnt ist. Das Verfassen des eigentlichen Textes erfolgt in einem Editorfenster, das spätere Erscheinungsbild wird mittels in den Text eingefügter Formatierungsbefehle gesteuert und ist erst nach einem TeX-Durchlauf in einem separaten Programmteil kontrollierbar. CVS Concurrent Versions System bezeichnet ein Programm zur Versionsverwaltung von Dateien, hauptsächlich Software-Quelltext. CVS vereinfacht die Verwaltung von Quellcode dadurch, dass es alle Dateien eines Software-Projektes an einer zentralen Stelle, einem so genannten Repository, speichert. Dabei können jederzeit einzelne Dateien verändert werden, es bleiben jedoch alle früheren Versionen erhalten, einsehbar und wiederherstellbar. Auch können die Unterschiede zwischen bestimmten Versionen verglichen werden. Somit hilft CVS dabei, einen Überblick über die einzelnen Versionen der Dateien und die dazugehörigen Kommentare zu behalten und kann insbesondere verwendet werden, um bei größeren Projekten die Arbeit der verschiedenen Entwickler zu koordinieren. Gimp Gimp[gim] ist das sogenannte GNU Image Manipulation Program und wird vielerorts als Vorzeige-Projekt der OpenSource-Bewegung bezeichnet. Es ist praktisch das freie Äquivalent zu Adobe Photoshop in Sachen Bildbearbeitung und Zusammenstellung. So kann The Gimp z.b. mit Ebenen, Alpha-Transparenz, Anti- Aliasing für alle Werkzeuge sowie effizientem Umgang mit besonders großen Bildern glänzen.

15 3 Analyse und Entwurf

16 3.1 Projekte Projekte Agenturprojekte webbasiert verwalten zu können, war der initiale Gedanke der Propeller GmbH bei der Ausschreibung dieser Diplomarbeit. Die Anwendung soll es der Agentur ermöglichen, alle Daten, die sie mit ihren Projekten in Verbindung bringt, an zentraler Stelle zu halten, zu pflegen und ebenfalls für Dritte einsehbar zu machen. Projekte bestehen in erster Linie aus einem Namen und einer Beschreibung, welche sie für den Anwender identifizierbar machen. Ein Projekt besitzt einen verantwortlichen Benutzer 3.2 sowie eine Firma als Auftraggeber 3.3. Es ist nur berechtigten Benutzern möglich, die Projekteingeschaften zu verändern sowie ganze Projekte zu löschen. Einem Projekt können Mitarbeiter zugeteilt werden. Diese Zuordnung erlaubt es, diesen Benutzern die Eigenschaften des Projektes einzusehen und Arbeitseinheiten für das Projekt erstellen zu können. Wird ein Projekt abgeschlossen, so wird das Abschlußdatum gespeichert und das Projekt in der Projektliste verborgen. Dies erhöht die Benutzerfreundlichkeit, da die Projektliste im späteren Betrieb sehr groß werden kann. Ob die Anwendung abgeschlossene Projekt verbirgt, lässt sich im Konfigurationsmenü auswählen. Ein Projekt kann aus mehreren Teilprojekten bestehen, welchem dann Arbeitseinheiten, Termine und Dateien zugeteilt werden können. Wird nun ein Projekt durch einen berechtigten Benutzer gelöscht, so werden all diese Informationen ebenfalls gelöscht. 1 create table w a p r o j e c t ( 2 i d s e r i a l not null unique, 3 r e s u s e r i d int references wa user ( i d ), 4 p u r c h a s e r i d int references wa company ( i d ), 5 complete boolean, 6 name varchar ( 8 0 ), 7 d e s c r varchar ( ), 8 c r e a t i o n date, 9 completion date, 10 type int, 11 primary key ( id, r e s u s e r i d, p u r c h a s e r i d ) 12 ) ; Listing 3.1. Datenbankschema der Projekttabelle

17 3.1 Projekte 14 Teilprojekte Teilprojekte dienen der besseren Unterteilung von Projekten. Ein Projekt kann dabei aus beliebig vielen Teilprojekten bestehen. Bei der Erstellung von Teilprojekten kann eine soll-stundenzahl angegeben werden um damit den geplanten Zeitrahmen des Teilprojektes festzulegen. Dieser Wert zusammen mit der ist-stundenzahl, die sich durch Addition der zu diesem Teilprojekt eingetragenen Arbeitseinheiten berechnet, kann auf der Übersichtsseite des Teilprojektes eingesehen werden. Auf der Übersichtsseite eines Projektes hingegen können die gesamt soll- und ist- Stundenzahlen aller zugehörigen Teilprojekte und Arbeitseinheiten abgelesen werden. Somit kann schnell in Erfahrung gebracht werden, wie die Gesamtkalkulation des Projektes sowie die jeweiligen Kalkulationen der einzelnen Teilprojekte verlaufen. 1 create table wa subproject ( 2 i d s e r i a l not null unique, 3 p r o j e c t i d int references w a p r o j e c t ( i d ) on delete cascade, 4 name varchar ( 8 0 ), 5 d e s c r varchar ( ), 6 duration int, 7 primary key ( id, p r o j e c t i d ) 8 ) ; Listing 3.2. Datenbankschema der Teilprojekttabelle Arbeitseinheiten Um festzuhalten, welcher Benutzer zu welcher Zeit an welchem Teilprojekt gearbeitet hat, wurden die Arbeitseinheiten implementiert. Arbeitseinheiten gehören immer zu einem bestimmten Teilprojekt, welches selbst einem Projekt zugeordnet ist. Bei der Erstellung einer Arbeitseinheit kann der Anwender auswählen, welchem Teilprojekt er diese zuordnen will. Nach Angabe einer Beschreibung sowie der benötigten Zeitspanne, kann die neue Arbeitseinheit gespeichert werden und fließt somit in die ist-stundenzahl dieses Projektes mit ein. Als Ersteller einer Arbeitseinheit wird immer der aktuell angemeldete Benutzer eingetragen. Dies kann auch durch Anwender mit PROJECT ADMIN -Rolle nicht mehr verändert werden. 1 create table wa workunit ( 2 i d s e r i a l not null unique, 3 s u b p r o j e c t i d int references wa subproject ( i d ) on delete cascade, 4 u s e r i d int references wa user ( id ), 5 d e s c r varchar ( ), 6 c r e a t i o n date, 7 duration int, 8 primary key ( id, s u b p r o j e c t i d, u s e r i d ) 9 ) ; Listing 3.3. Datenbanschema der Arbeitseinheitentabelle

18 3.1 Projekte 15 Projektdateien Ein großes Anliegen der Agentur bestand darin, einem Projekt Binärmaterial in Form von Bildern, Dokumenten oder Archiven zuordnen zu können. Dies wird durch die Funktion der Projektdateien realisiert. Mit dieser Funktion können alle Arten von Dateien in die Anwendung eingespielt und empfangen werden. Die Anwendung kümmert sich um die Organisation dieser Dateien und legt diese an einer konfigurierbaren Stelle im Dateisystem des Servers ab. In der Datenbank werden hingegen nur Dateiinformationen wie z.b. die Größe, das Einstelldatum, eine Beschreibung sowie die Projektzugehörigkeit der Datei gespeichert. Bei jedem Versuch eines Anwenders, eine solche Projektdatei zu empfangen, erhöht die Anwendung einen internen Zähler. Dieser Zähler wird ebenfalls bei den Dateiinformationen in der Datenbank gespeichert und ermöglicht auf einfache Weise, einen ersten Eindruck des Beliebtheitsgrades dieser Datei zu erhalten. Im Konfigurationsmenü der Anwendung können bestimmte Parameter der Projektdateien beeinflusst werden. Hier kann z.b. der Wert für die maximale Größe oder den zentralen Speicherpfad im Dateisystem angepasst werden. Im späteren Betrieb der Anwendung kann es durchaus vorkommen, dass zwei Dateien gleichen Namens aber unterschiedlichen Inhaltes von Anwendern eingespielt werden. Die Anwendung legt diese aber im gleichen Speicherpfad des Dateisystems ab und es kommt somit zu einer Überschreibung. Hierfür wurden die Felder filename und realfilename in den Datensatz aufgenommen. Die Anwendung speichert beim Einspielen von Dateien deren ursprünglichen Dateinamen im Feld filename ab. Das Feld realfilename enthält den eindeutigen Dateinamen, bestehend aus der Datensatznummer und dem ursprünglichen Dateinamen, unter dem die Datei tatsächlich im Dateisystem abgelegt wird. Möchte nun ein Anwender eine bestimmte Projektdatei empfangen, wird diese von der Anwendung anhand ihres eindeutigen Dateinamens (realfilename) aus dem Dateisystem geladen und dem Anwender unter ihrem ursprünglichen Namen (filename) angeboten. 1 create table w a f i l e ( 2 i d s e r i a l not null unique, 3 p r o j e c t i d int references w a p r o j e c t ( i d ) on delete cascade, 4 u s e r i d int references wa user ( id ), 5 d e s c r varchar ( ), 6 contenttype varchar ( ), 7 f i l e d a t e timestamp, 8 f i l e n a m e varchar ( ), 9 r e a l f i l e n a m e varchar ( ), 10 l o c a t i o n varchar ( ), 11 counter int, 12 f i l e s i z e int, 13 primary key ( id, p r o j e c t i d ) 14 ) ; Listing 3.4. Datenbankschema der Projektdateientabelle

19 3.1 Projekte 16 Termine Jedem Projekt können beliebig viele Termine zugeordnet werden. Termine können dazu verwendet werden, Fristen oder andere zeitlich festgelegte Ereignisse eines Projektes festzuhalten. Dabei kann für jeden Termin eine Startzeit, eine Endzeit, eine Beschreibung sowie ein Ort festgelegt werden. Auf der Ansichtsseite eines Projektes wird immer der nächstanstehende Termin dieses Projektes angezeigt, wogegen die Benutzeransicht den nächsten Termin des Benutzers, abhängig von seinen Projekten, zeigt. Jedem Benutzer werden nach erfolgreicher Anmeldung alle laufenden Projekte, an denen er beteiligt ist sowie alle eingetragenen Termine dieser Projekte innerhalb einer bestimmten Zeitspanne angezeigt. Abgelaufene Termine werden wie abgeschlossene Projekte von der Anwendung verborgen, um an Übersicht zu gewinnen. Dieses Verhalten, sowie weitere Eigenschaften des Terminmoduls lassen sich über das Konfigurationsmenü anpassen. 1 create table wa date ( 2 i d s e r i a l not null unique, 3 p r o j e c t i d int references w a p r o j e c t ( i d ) on delete cascade, 4 d e s c r varchar ( ), 5 p l a c e varchar ( 8 0 ), 6 s t a r t timestamp, 7 stop timestamp, 8 primary key ( id, p r o j e c t i d ) 9 ) ; Listing 3.5. Datenbankschema der Termintabelle

20 3.2 Benutzer Benutzer Die Benutzerdatensätze sind elementarer Bestandteil der ganzen Anwendung. Sie halten alle von der Agentur gewünschten Attribute wie die Kontaktinformationen, die Firmenzugehörigkeit und die Rechte des Benutzers. Weiterhin besteht die Möglichkeit für einen Benutzerdatensatz ein Bild anzulegen, welches an jeder gewünschten Stelle angezeigt werden kann. Jeder Benutzer besitzt ein Passwort, sowie einen Loginnamen, mit dem er sich, falls es ihm durch seine Rechte möglich ist, anmelden kann. Jeder Benutzer besitzt Rechte, welche von der Anwendung intern als Bitmaske verarbeitet werden. Der Dezimalwert dieser Bitmaske wird bei jedem Benutzer in der Datenbank gespeichert und ausgelesen. Das Anmeldepasswort des Benutzers wird ebenfalls in der Datenbank gehalten. Dieses wird, nachdem es eingegeben wurde, mit der SHA-1 1 Hashfunktion 2 verschlüsselt und danach nach BASE64 3 gewandelt. Die Umwandlung nach BASE64 ist nötig, da das Passwort in seiner verschlüsselten Form Sonderzeichen enthalten kann, die zu Problemen mit Textfeldern in der Datenbank führen können. Wenn sich nun ein Benutzer anmelden will, so muss das eingegebene Passwort ebenfalls verschlüsselt und gewandelt werden, um es danach mit dem Textfeld in der Datenbank vergleichen zu können. Durch diesen Sicherheitsgewinn ist es der Anwendung allerdings nicht mehr möglich, das eigentliche Passwort des Benutzers zu ermitteln. 1 create table wa user ( 2 i d s e r i a l not null unique, 3 f i r s t n a m e varchar ( 8 0 ), 4 lastname varchar ( 8 0 ), 5 password varchar ( 8 0 ), 6 loginname varchar ( 8 0 ), 7 t i t l e varchar ( 2 0 ), 8 rolemask bigint, 9 p i c t u r e i d int references w a p i c t u r e ( i d ), 10 a d d r e s s i d int references wa address ( i d ), 11 company id int references wa company ( i d ), 12 primary key ( i d ) 13 ) ; Listing 3.6. Datenbankschema der Benutzertabelle 1 Der Begriff sicherer Hash-Algorithmus (englisch secure hash algorithm), kurz SHA, bezeichnet eine Gruppe standardisierter kryptografischer Hash-Funktionen. 2 Eine Hash-Funktion bzw. Streuwertfunktion ist eine Funktion, die zu einer Eingabe aus einer (üblicherweise) großen Quellmenge eine Ausgabe aus einer (im Allgemeinen) kleineren Zielmenge (die Hashwerte, meist eine Teilmenge der natürlichen Zahlen) erzeugt. 3 Base64 beschreibt ein Verfahren zur Kodierung von 8-Bit-Binärdaten (z. B. ausführbare Programme, ZIP-Dateien), in eine Zeichenfolge, die nur aus wenigen Codepage-unabhängigen ASCII-Zeichen besteht.

21 3.3 Firmen Firmen Firmendatensätze speichern alle firmenbezogenen Informationen wie Name, Beschreibung sowie Kontaktinformationen. Ist eine Firma angelegt, kann man ihr mehrere Benutzer über das Benutzermodul zuordnen. Jeder Benutzer kann nur einer Firma angehören. Genau wie einem Benutzer, kann einer Firma ein Bild, wie z.b.: einem Firmenlogo, zugeordnet werden. Diese Bilder werden von der Anwendung im Dateisystem des Webservers abgelegt und können bei der Firmenansichtsseite eingesehen werden. Firmen dienen weiterhin als Auftraggeber von Projekten und können bei deren Erstellung oder Bearbeitung eingestellt werden. Diese Zuordnung macht es später möglich, mit der Auswertungsfunktion 3.5 Arbeitseinheiten anhand des Auftraggebers zu filtern. Wird ein Firmendatensatz gelöscht, so werden ebenfalls die zugehörigen Bild- und Adressdatensätze gelöscht. 1 create table wa company ( 2 i d s e r i a l not null unique, 3 name varchar ( 8 0 ), 4 d e s c r varchar ( ), 5 p i c t u r e i d int references w a p i c t u r e ( i d ), 6 a d d r e s s i d int references wa address ( i d ), 7 primary key ( i d ) 8 ) ; Listing 3.7. Datenbankschema der Firmentabelle

22 3.4 Rollen Rollen Rollen steuern die Berechtigungen der einzelnen Benutzer innerhalb der Anwendung. Was darf wer? Will ein Benutzer eine bestimmte Aktion ausführen, prüft die Anwendung, welche Rolle für diese Aktion benötigt wird und ob der Benutzer diese besitzt. Es existieren folgende Rollen: LOGIN, ermöglicht das Anmelden bei der Anwendung. USER VIEWALL, ermöglicht das Einsehen aller Benutzerdatensätze. USER ADMIN, ermöglicht das Editieren aller Benutzerdatensätze. PROJECT VIEWALL, ermöglicht das Einsehen aller Projektdatensätze. PROJECT ADMIN, ermöglicht das Editieren aller Projektdatensätze. COMPANY VIEWALL, ermöglicht das Einsehen aller Firmendatensätze. COMPANY ADMIN, ermöglicht das Editieren aller Firmendatensätze. SETTINGS, ermöglicht das Verändern der globalen Einstellungen. Rollen können ebenfalls von anderen Rollen erben. Ein Benutzer kann z.b.: mit der Rolle USER ADMIN ebenfalls alle Benutzerdatensätze einsehen, was der Funktion der Rolle USER VIEWALL entspricht. Um die Zuweisung von Rollen zu vereinfachen, wurden sogenannte Metarollen implementiert. Metarollen besitzen selbst keine eigene Funktionalität, sondern gruppieren die zuvor beschriebenen Rollen zu logischen Einheiten. So existieren folgende Metarollen: META EMPLOYEE, gruppiert die Rollen: LOGIN, USER VIEWALL, PRO- JECT VIEWALL und COMPANY VIEWALL. META MANAGER, gruppiert die Rollen: LOGIN, USER ADMIN, PROJECT ADMIN, COMPANY ADMIN und SETTINGS. Somit besitzt ein Benutzer, dem die Metarolle META MANAGER zugewiesen wurde, uneingeschränkten Zugriff auf die komplette Funktionalität der Anwendung. Wird ihm, im Gegensatz dazu, nur die Rolle LOGIN zugewiesen, kann sich dieser zwar anmelden, aber er bekommt nicht alle Datensätze angezeigt. So sieht dieser Nutzer z.b. nur seinen Benutzerdatensatz, den Datensatz der Firma, der er zugeordnet ist und nur die Projekte, bei denen er als Mitarbeiter eingetragen ist. Um zu erkennen, welche Rollen der aktuell angemeldete Anwender hat, speichert die Anwendung nach einer erfolgreichen Anmeldung die ID des Benutzers in seiner Sitzung 1. Navigiert nun der Benutzer in einen durch Rollen beschränkten Bereich der Anwendung, wird diese ID ausgelesen und damit kann per Geschäftslogik 4.1 sein Benutzerdatensatz geladen werden. Anhand des Benutzerdatensatzes kann nun geprüft werden, ob ihm die Anwendung die gewünschten Informationen zeigt, oder ob er auf die Startseite umleitet wird. 1 Eine Sitzung (engl. Session) bezeichnet in der EDV eine stehende Verbindung eines Clients mit einem Server. Den Anfang einer Sitzung bezeichnet man als Login, das Ende als Logout.

23 3.5 Auswertung Auswertung Die Auswertungsfunktion ermöglicht es, einen schnellen Überblick über die in der Anwendung eingetragenen Arbeitseinheiten zu erhalten. Arbeitseinheiten gehören immer zu einem bestimmten Teilprojekt, welches wiederum bestimmten Projekten zugeteilt wird. Will ein Benutzer erfahren, welche Arbeitseinheiten zu einem bestimmten Projekt oder zu dessen Teilprojekten eingestellt wurden, kann er dies über die Listenfunktion des jeweiligen Projektes bzw. Teilprojektes erfahren. Die Auswertungsfunktion ist hier sehr viel dynamischer, was die Auswahl der Filterkriterien zur Suche von Arbeitseinheiten betrifft. Dazu können auf der Startseite der Auswertungsfunktion Filter zum Einschränken der Arbeisteinheiten geschaltet werden. Es existieren Filter für Mitarbeiter, für Projekte, für Auftraggeber sowie für die Bestimmung eines Zeitrahmens Alle zur Auswahl stehenden Filter können kombiniert werden. D.h., wird ein Benutzer und eine Zeitraum angegeben, dann lassen sich so schnell alle Arbeitseinheiten ermitteln, die der Benutzer für diesen bestimmten Zeitraum in der Anwendung eingetragen hat. Der Benutzerfilter sowie der Zeitraumfilter arbeiten gleichzeitig, um das gewünschte Resultat zu erzielen. Wird hingegen auf die Angabe aller Filter verzichtet, so wird von der Anwendung keinerlei Einschränkung der anzuzeigenden Arbeitseinheiten vorgenommen und alle in der Datenbank eingetragenen Arbeitseinheiten werden angezeigt. Die Ausgabeseite der Auswertungsfunktion listet alle gefilterten Arbeitseinheiten auf und berechnet deren Gesamtdauer. Während die Anwendung die durch die Startseite eingeschränkten Arbeitseinheiten in der Datenbank sucht, um diese dem Anwender auf der Ausgabeseite zu präsentieren, bereitet sie die gefundenen Datensätze ebenfalls in CSV-Form in einer temporären 1 Datei vor. Diese Datei kann vom Anwender empfangen werden und leicht in externe Programme wie MS Excel oder OpenOffice Calc zur Nachbearbeitung importiert werden. Die Auswertungsfunktion kann über das Projektmodul gestartet werden und steht nur Benutzern mit der Rolle PROJECT ADMIN zur Verfügung. 1 Temporär bedeutet zeitweise, auch vorübergehend, übergangshalber oder zeitweise bestehend.

24 3.6 Datenbankschema Datenbankschema Das komplette Datenbankschema der Anwendung liegt den Quellen bei A und beinhaltet alle SQL-DROP sowie SQL-CREATE-Anweisungen, passend für die bei der Implementierung verwendete Datenbank 2.4. Das folgende Diagramm zeigt die komplette Struktur der Datenbank als ER- Diagramm 1. Aus Platzgründen und zwecks besserer Lesbarkeit wurde auf die Angabe der Attribute verzichtet. ER-Diagramm der Anwendung 1 Entity Relation

25 4 Implementierung Nach einigen Wochen der Recherche und Einarbeitung in die zugrundeliegenden Technologien Hibernate 2.3 sowie Struts 2.2 und der Aufstellung eines Konzeptes für die Umsetzung der Funktionalität, wurde mit der Implementierungsphase begonnen. Die Implementierung lässt sich in drei größere Softwareschichten unterteilen, mit deren Realisierung sich im Folgenden jeweils ein eigenes Kapitel ausführlich beschäftigen wird. Die Logikschicht 4.2 (application-server tier) Die Päsentationsschicht 4.3 (client tier) Die Datenschicht 4.1 (data-server tier) Die Präsentationsschicht, auch Front-End bezeichnet, ist für die Repräsentation der Daten, Benutzereingaben und die Benutzerschnittstelle verantwortlich. Die Logikschicht beinhaltet alle Verarbeitungsmechanismen. Hier ist sozusagen die Programmintelligenz vereint. Die Datenschicht enthält die Datenbank und ist verantwortlich für das Speichern und Laden von Daten. Die komplette Entwicklungsumgebung, d.h. IDE 2.5, Webserver 2.1 und Datenbank 2.4 wurden während der Entwicklung auf meinem lokalen Rechner durchgeführt. Ebenfalls wurde eine Testumgebung für kleinere Meilensteine 1 eingerichtet, welche von der Propeller GmbH zur Verfügung gestellt wurde. Durch diese Testumgebung war es meinen Betreuern seitens der Propeller GmbH, Ralf Schuh und Andreas Hofer, sowie meinem betreuenden Professor, Prof. Dr. Andreas Künkler jederzeit möglich, den Fortschritt des Projektes zu verfolgen. 1 Im Projektmanagment sind diese Ereignisse meist Unter- bzw. Zwischenziele eines Projektes. Diese Ziele sind an die Fertigstellung eines bedeutenden Projektergebnisses gebunden.

26 4.1 Geschäftslogik Geschäftslogik Kern der ganzen Anwendung ist die Geschäftslogik. Sie kapselt alle benötigten Datenbankfunktionen, damit die Anwendungsschicht nicht selbst mit der Datenbank kommunizieren muss. Ziel dieser Kapselung ist, eine Datenschnittstelle zu schaffen, welche leicht erweiterbar ist und auch von anderen Projekten verwendet werden kann. Die Geschäftslogik basiert auf dem OR-Mapper 1 Hibernate[Hib] und implementiert viele von Hibernate zur Verfügung gestellte Funktionen wie Persistenz, Transaktionsschutz und Roll-back. Der Programmierer der Anwendungsschicht kann diese Probleme außer Acht lassen. Die Geschäftslogik stellt Funktionen zur Verfügung, um die verwendeten Daten der Datenbank abzufragen sowie zu verändern. Da die Anforderungen der Anwendung an die Geschäftslogik zum Abfragen bestimmter Daten sehr komplex werden können, stellt sich die Frage, wieviel Funktionalität in die Geschäftslogik verlagert wird und was die Anwendungsschicht selbst erledigen muss. Um dieses Problem zu verdeutlichen, gehen wir von dem Fall aus, dass die Anwendung dem Benutzer alle Termine eines Projektes innerhalb eines bestimmten Zeitraums visualisieren möchte. Nun besteht die Möglichkeit, eine Methode wie z.b.: getalldatesof P roject(projectid, startdate, enddate) in die Geschäftslogik aufzunehmen. Dies kann aber zu einer sehr großen Geschäftslogik führen, da für alle Anfragen der Anwendungsschicht eine Methode bereitgestellt werden muss. Solch eine Geschäftslogik wäre nicht flexibel, da sie für jede neue Anforderung angepasst werden müsste. Die Alternative hierzu wäre ganz auf solche Abfrage-Methoden in der Geschäftslogik zu verzichten und die Abfrage in die Anwendungsschicht zu verlagern. Nachteile dieser Vorgehensweise sind allerdings, dass an jeder Stelle der Anwendungslogik die Abfrage neu aufgebaut werden muss und sich somit die Fehleranfälligkeit erhöht. Hibernate stellt drei verschiedene Techniken zur Abfrage von Daten der Datenbank zur Verfügung. Die Standard Abfragesprache SQL 2 Die Hibernate eigene Abfragesprache HQL 3 Eine objektorientierte Möglichkeit die Criteria API 4 Die HQL bietet gegenüber SQL erhebliche Vorteile, wie z.b. die automatische Typanpassung der Ergebnismenge. Dennoch werden bei HQL als auch bei SQL Abfragen mittels Zeichenketten aufgebaut, welche dann durch Hibernate an die 1 Ein OR-Mapper ermöglicht den Zustand eines Objekts in einer relationalen Datenbank zu speichern. Siehe Kapitel SQL im allgemeinen Sprachgebrauch als Abkürzung für Structured Query Language aufgefasst 3 Von Hibernate erweiterte SQL 4 API, Application Programming Interface, in der Informatik eine Programmschnittstelle

27 4.1 Geschäftslogik 24 Datenbank abgesetzt werden. Das Zusammensetzen dieser Zeichenketten kann bei dynamischen Abfragen, d.h. bei Abfragen die von Benutzereingaben zur Laufzeit abhängig sind, eine komplexe und fehleranfällige Stelle der Anwendung werden. 1 select from wa user where i d = 1 2 ; Listing 4.1. Beispiel für eine SQL Abfrage 1 User u s e r = (User) s e s s i o n. createquery ( 2 select u s e r from User as u s e r where user. id =? ) 3. s e t I n t ( 0, 1 2 ) 4. uniqueresult ( ) ; Listing 4.2. Beispiel für eine HQL Abfrage Eine Alternative stellt die von Hibernate bereitgestellte Criteria API da, welche die Abfragen in einer Objektstruktur kapselt und sich dadurch nativ in die objektorientierte Sprache Java einpasst. 1 Criteria c r i t = s e s s i o n. c r e a t e C r i t e r i a ( User. c l a s s ) ; 2 c r i t. add ( R e s t r i c t i o n s. eq ( i d, new Integer ( 1 2 ) ) ) ; 3 User u s e r = (User) c r i t. uniqueresult ( ) ; Listing 4.3. Beispiel für eine Criteria Abfrage Aus diesem Grund habe ich mich dazu entschieden, nur die elementaren Funktionen in die Geschäftslogik aufzunehmen und als Abfragesprache die Criteria API zu verwenden. In der gesamten Anwendung ist nicht eine Abfrage mit der SQL oder HQL realisiert. Manager Alle Funktionen der Geschäftslogik wurden als public-static-methoden in die Manager-Klasse implementiert, da hier keine objektspezifischen Daten gebraucht werden und sich der Zugriff weiter vereinfacht. Die Manager-Klasse verfügt über eine main-methode, mit welcher eine leere Datenbank in ihren Initialzustand versetzt wird. Es wird ein administrativer Benutzer mit allen zur Verfügung stehenden Rechten angelegt. Durch diesen Benutzer ist ein erstes Anmelden und das Hinzufügen weitere Benutzer möglich. 1 public s t a t i c void main( String [ ] a r g s ) { 2 Manager. setupadminaccess ( ) ; 3 Manager. setuproles ( ) ; 4 } Listing 4.4. Auszug aus der Datei M anager.java

28 4.1 Geschäftslogik 25 Für alle verwendeten Datenbankobjekte Address, Company, Date, F ile, P icture, P roject, Role, SubP roject, User und W orkunit existieren jeweils die vier Methoden get, save, remove, getv alue und getlist über die der komplette Zugriff auf deren Daten realisiert wird. Da die Funktionsweise zum Teil sehr komplex ist, wird im folgenden deren Einsatz anhand von Einsatzbeispielen aus der Anwendungsschicht genauer verdeutlicht. get 1 public s t a t i c User getuser ( Integer i d ) Listing 4.5. Signatur der getu ser-methode Die get-methode ist der einfachste Weg, einen Datensatz aus der Datenbank mit Hilfe der Geschäftslogik zu laden. Die Methode verlangt als Parameter den Primärschlüssel des Datensatzes und liefert ein fertiges Objekt als Rückgabewert. 1 User u s e r = Manager. getuser (new Integer ( id ) ) ; 2 3 userviewform. setfirstname ( u s e r. getfirstname ( ) ) ; 4 userviewform. setlastname ( u s e r. getlastname ( ) ) ; 5 userviewform. setloginname ( u s e r. getloginname ( ) ) ; 6 userviewform. setmobile ( u s e r. getaddress ( ). getmobile ( ) ) ; Listing 4.6. Anwendung der getu ser-methode In Listing 4.6 wird ein bestimmtes U ser-objekt aus der Datenbank geladen und danach seine Attribute ausgelesen. Durch die Methode getaddress() in Zeile 6 wird zum zugehörigen Address-Objekt gesprungen. Die 1-zu-1 -Relation zwischen den Objekten U ser und Address muss der Datenbank2.4 sowie Hibernate2.3 bekannt sein. save 1 public s t a t i c void saveuser (User u s e r ) Listing 4.7. Signatur der saveu ser-methode Die Funktion der save-methode in Listing 4.7 liegt nahe. Sie dient dazu, neu erstellte Objekte in der Datenbank abzulegen oder breits vorhandene Objekte zu speichern. 1 User u s e r = new User ( ) ; 2 u s e r. setfirstname ( Homer ) ; 3 u s e r. setlastname ( Simpson ) ; 4 Manager. saveuser ( u s e r ) ; Listing 4.8. Anwendung der saveu ser-methode (neuer Datensatz)

29 4.1 Geschäftslogik 26 1 User u s e r = Manager. getuser (new Integer ( id ) ) ; 2 u s e r. setloginname ( hsimpson ) ; 3 saveuser ( u s e r ) ; Listing 4.9. Anwendung der saveu ser-methode (vorhandener Datensatz) Bei allen neu erzeugten Objekten, wie in Listing 4.8, ist der Wert ihres id- Attributs mit dem Integer-Wert 0 vorbelegt. Durch diese Vorbelegung kann die save-methode in Zeile 4 unterscheiden, ob es sich um ein bereits in der Datenbank exisitierendes Objekt (id!= 0) handelt oder nicht (id == 0). Falls das Objekt noch nicht existiert, wird ein neuer, eindeutiger Wert ermittelt und dann das Objekt in der Datenbank angelegt. getlist 1 public s t a t i c User [ ] g e t U s e r L i s t ( 2 List<Criterion> c r i t o n s, 3 Map<String, KeyValue> s u b c r i t o n s, 4 List<Order> orders, 5 int o f f s e t, 6 int l i m i t, 7 boolean d i s t i n c t ) ; Listing Signatur der getu serlist-methode Die getlist-methode in Listing 4.10 erlaubt das Abfragen mehrere Objekte des gleichen Typs aus der Datenbank in einem Aufruf. Der Parameter critons in Zeile 2 kann dazu verdwendet werden, die Auswahl der zurückgegebenen Objekte einzuschränken, analog zu dem where-ausdruck der SQL. Durch die Angabe des Parameters subcritons in Zeile 3 können die abgefragten Objekte mit Objekten anderen Typs verknüpft werden, mit denen sie in Relation stehen, analog zu dem join-ausdruck der SQL. orders in Zeile 4 ermöglicht Einfluss auf die Sortierung der zurückgelieferten Objekte der Datenbank zu nehmen, wie es mit dem orderby-ausdruck der SQL gemacht wird. Die Sortierkriterien werden der Methode als Liste übergeben, da hier die Reihenfolge eine wichtige Rolle spielt. Erst durch diese Reihenfolge ist es später möglich, die Benutzerliste sowie alle anderen Listen zuerst nach Kriterium 1 und innerhalb dieser Sortierung nach einem weiteren Kriterium 2 zu sortieren. Durch Setzen des Parameters offset in Zeile 4 kann angegeben werden, ab welcher Position die ausgewählten Objekte zurückgeliefert werden sollen. Der Parameter limit in Zeile 5 bestimmt Anzahl der zurückgelieferten Objekte. Wird für einen dieser Parameter der Wert 0 angegeben, so wird die jeweilige Funktion deaktiviert. Der boolean-wert distinct in Zeile 7 filtert, analog zum SQL-Ausdruck, Duplikate aus der Ergebnismenge, welche bei komplexen Verküpfungen mit anderen in

30 4.1 Geschäftslogik 27 Relation stehenden Objekten auftreten können. Diese komplex aussehende Methode erlaubt viel Freiraum in der Anwendungsschicht und erfüllt von einfachen bis hin zu komplexen Abfragen alle Anforderungen der Anwendungsschicht. Im Weiteren folgen Beispiele, die den Gebrauch der getlist-methoden anhand von Beispielen aus der Anwendungsschicht verdeutlichen sollen. 1 usernewform. setcompanies ( 2 Manager. getcompanylist ( 3 null, 4 null, 5 null, 6 0, 7 0, 8 f a l s e ) ) ; Listing Anwendung der getcompanylist-methode Dieser Aufruf verzichtet auf alle einschränkenden Parameter wie critons, of f set, limit und distinct und liefert somit alle in der Datenbank eingetragenen Company- Objekte als Company[]-Array zurück. 1 c r i t o n s. add ( R e s t r i c t i o n s. eq ( company, company ) ) ; 2 3 User [ ] u s e r s = Manager. g e t U s e r L i s t ( 4 c r i t o n s, 5 null, 6 null, 7 0, 8 0, 9 f a l s e ) ; Listing Anwendung der getu serlist-methode Hier wird die Auswahl der zurückgelieferten Benutzer-Objekte mit Hilfe des critons-parameters eingeschränkt. Der Ausdruck Restrictions in Zeile 1 veranlasst die Methode, die 1-zu-n-Relation zwischen den Objekten User und Company auf eine Verknüpfung des angegebene company-objekt hin zu prüfen. Ein entsprechender SQL-Ausdruck wäre hier sehr viel aufwendiger. Dies waren zwei einfache Anwendungsbeispiele der getlist-methode. In der Anwendungsschicht finden sich zahlreiche weitere Beispiele für deren Einsatz, in denen auch alle anderen Parameter Verwendung finden.

31 4.1 Geschäftslogik 28 getvalue 1 public s t a t i c Object getuservalue ( 2 List<Criterion> c r i t o n s, 3 Map<String, KeyValue> s u b c r i t o n s, 4 Projection p r o j e c t i o n ) ; Listing Signatur der getu serv alue-methode Die getvalue-methode in Listing 4.13 der Geschäftslogik dient zur Abfrage eines bestimmten Attributes eines Objektes. Sie stellt weiterhin die Möglichkeit zur Abfrage bestimmter Datenbankfunktionen wie sum, count, avg zur Verfügung. Ihr Rückgabewert ist Object, da dieser abhängig vom übergebenen Parameter projection in Zeile 4 ist und somit von der Methode selbst nicht bestimmt werden kann. Es ist dem Entwickler der Anwendungsschicht überlassen, die richtige Typenkonvertierung für den Rückgabewert vorzunehmen. Mit den Parametern critons in Zeile 2 und subcritons in Zeile 3 können die ausgewählten Objekte, genau wie bei der getlist-methode in Listing 4.10, eingeschränkt werden. 1 statusform. setamountusers ( 2 ( Integer ) Manager. getuservalue ( 3 null, 4 null, 5 P r o j e c t i o n s. rowcount ( ) ) ) ; Listing Anwendung der getuservalue-methode Dieser Aufruf liefert die Anzahl aller eingetragenen Benutzer zurück. Da sich der Anwender mit Projections.rowCount() in Zeile 5 für einen Integer-Wert interessiert, muss der Rückgabewert von Object auf Integer in Zeile 2 konvertiert werden. Eine weitere Verwendung der getvalue-methode ist an folgendem Beispiel zu erkennen: 1 c r i t o n s. add ( R e s t r i c t i o n s. eq ( p r o j e c t, p r o j e c t ) ) ; 2 3 Date f i l e D a t e = (Date) Manager. g e t F i l e V a l u e ( 4 c r i t o n s, 5 null, 6 P r o j e c t i o n s. max( f i l e d a t e ) ) ; Listing Anwendung der getfilevalue-methode In Listing 4.15 interessiert sich der Aufrufer für alle File-Objekte, die in Relation zu einem bestimmten Projekt stehen. Diese Einschränkung wird in Zeile 1 durch Angabe einer Restriction vorgenommen, genau wie bei Listing 4.12 in Zeile 1. Von allen ausgewählten File-Objekten wird das filedate-attribut, welches das aktuellste Datum hat, zurückgeliefert welches der Entwickler in Zeile 6 durch Angabe von Projections.max( filedate ) erreicht.

32 4.2 Anwendungslogik Anwendungslogik Die Anwendungslogik ist in drei wesentliche Kernelemente aufgeteilt. List-Actions, Klassen, die der Navigation über vorhandene Datensätze dienen. View-Actions, Klassen zur Darstellung von Datensatzinformationen in einer nur-lese-form. New-Actions, ermöglichen das Anlegen neuer sowie das Editieren vorhandener Datensätze. Somit besteht der Teil der Benutzerverwaltung unter anderem aus den Klassen UserList-Action, UserNew-Action und UserView-Action. Die New-Action ermöglicht es, neue Benutzerdatensätze anzulegen sowie vorhandene Benutzerdatensätze zu editieren. Diese Zusammenfassung beider Funktionalitäten in eine logische Einheit hat sich angeboten, da auf graphischer Ebene die benötigten Elemente exakt gleich sind und sich somit der Aufwand bei der Implementierung reduziert. Da die Anwendungen verschiedene Benutzer unterscheiden muss, welche jeweils unterschiedliche Rechte haben, wurden die View-Actions aufgenommen. View- Actions zeigen Datensatzinformationen, wie z.b. alle vohandenen Benutzerinformationen in einer nur-lese-form und ermöglichen somit angemeldeten Benutzern, die keine Rechte zum Editieren eines Datensatzes haben, deren Informationen einzusehen. List-Actions gehören zu den komplexesten Elementen, da sie die meisten Funktionen bereitstellen. Mit den List-Actions ist es dem Anwender möglich, über alle eingetragenen Datensätze zu navigieren, diese dabei zu sortieren oder durch Schalten von Filtern einzuschränken. Alle implementierten Actions leiten sich von der aus dem Struts-Framework2.2 stammenden Action-Klasse ab. Diese Klasse stellt allen ableitenden Klassen Basisfunktionalität zur Verfügung und verpflichtet sie, die in Listing 4.16 beschriebene execute-methode zu implementieren. Diese Methode dient dem Struts Zustandsautomaten 2.2 als Einstiegspunkt in die jeweilige Action-Klasse, von wo aus der Entwickler die Kontrolle übernehmen kann. 1 public ActionForward execute ( 2 ActionMapping mapping, 3 ActionForm form, 4 HttpServletRequest request, 5 HttpServletResponse r e s p o n s e ) Listing Signatur der execute-methode der Action-Klasse Diese Eigenschaft wurde bei der Entwicklung dazu verwendet, die Sicherheit der gesamten Anwendung zu erhöhen. Zwischen der Action-Klasse des Struts- Frameworks2.2 und den davon abgeleiteten Klassen, die der Anwendungsentwick-

33 4.2 Anwendungslogik 30 ler implementieren muss, wurde die Klasse AgencyAction in die Vererbungshirachie aufgenommen. Diese Klasse bietet Sicherheitsfunktionen sowie Zugriff auf den aktuell angemeldeten Benutzer. Ohne diese Klasse müsste die jeweilige Funktionalität in jeder einzelnen Action-Klasse implementiert werden, was aufwändiger und fehleranfälliger ist. Die AgencyAction-Klasse fängt den Aufruf der execute-methode durch den Struts Zustandsautomaten 2.2 ab und prüft, ob der Aufruf von einem angemeldeten Benutzer stammt. Falls ein angemeldeter Benutzer gefunden wurde, wird die Kontrolle an die vom Entwickler implementierte Action-Klasse übergeben. Wurde kein gültiger Benutzer gefunden, findet eine Weiterleitung zur Login-Seite der Anwendung statt. 1 i f (! gotuserid ( r e q u e s t ) ) 2 return mapping. findforward ( Constants.FORWARD NOUSER) ; 3 return agencyexecute ( mapping, form, request, r e s p o n s e ) ; Listing Aufruf der gotuserid-methode in der AgencyAction-Klasse List-Actions gehören zu den komplexeren Funktionen der Anwendung, welche an vielen Stellen Verwendung finden, wie z.b. in den Klassen CompanyListAction, ProjectListAction oder UserListAction. Alle List-Actions erben von der Klasse AgencyListAction, welche selbst von AgencyAction erbt. Sie stellt allen ableitenden Listen spezielle Funktionen zum Ermitteln der aktuellen Listenposition oder zum Sortieren der Liste zur Verfügung. Auf eine Auswahl der wichtigsten Listenfunktionen möchte ich im Folgenden eingehen.

34 4.2 Anwendungslogik 31 dooffset 1 protected void d o O f f s e t ( 2 HttpServletRequest request, 3 CriteriaData l i s t D a t a ) Listing Signatur der dooffset-methode der Klasse AgencyListAction Die Aufgabe der dooffset-methode ist es, die aktuelle Listenposition zu berechnen. Dies wird immer dann benötigt, wenn der Anwender über die Navigationselemente durch die Liste blättert. Dazu prüft die Methode, welches die letzte Listenposition war und addiert bzw. subtrahiert entsprechend die anzuzeigenden Listenelemente. Der berechnete Wert wird in der Session gehalten und steht somit, solange der Anwender angemeldet ist, zur Verfügung. Der Aufrufer kann diesen Wert direkt an die entsprechende getlist-methode 4.10 der Geschäftslogik übergeben und bekommt die gewünschten Datensätze zurück. doordering 1 protected void doordering ( 2 HttpServletRequest request, 3 CriteriaData l i s t D a t a ) Listing Signatur der doordering-methode der Klasse AgencyListAction Die doordering-methode aus Listing 4.19 prüft die an die Action-Klasse übergebenen Parameter, die beim Betätigen der Spaltenköpfe der Benutzeroberfläche erzeugt werden. Findet die Methode solche Parameter, erzeugt sie die entsprechenden Sortierkriterien, welche später ebenfalls an die getlist-methode 4.10 der Geschäftslogik übergeben werden können. dodefaultfilter Da es eine Anforderung für die zu entwickelnde Anwendung war, Benutzer mit verschiedenen Rechten auszustatten und diese Rechte teilweise dazu verwendet werden die Informationen, die ein Benutzer einsehen darf, einzuschränken, wurde die Methode dodefaultfilter eingeführt. 1 protected void d o D e f a u l t F i l t e r ( 2 HttpServletRequest request, 3 CriteriaData l i s t D a t a, 4 User s e s s i o n U s e r ) Listing Signatur der dodefaultfilter-methode der Klasse UserListAction Ihr wird in Listing 4.20 Zeile 4 der aktuelle Benutzer übergeben. Anhand dieses übergebenen Benutzers prüft die Methode dessen Rechte und erzeugt die entsprechenden Filterkriterien, welche später ebenfalls an die Geschäftslogik übergeben

35 4.2 Anwendungslogik 32 werden können. 1 i f ( hidecompleted ) 2 l i s t D a t a. g e t C r i t o n s ( ). add ( Expression. eq ( complete, f a l s e ) ) ; Listing Auszug aus der dodefaultfilter-methode der Klasse ProjectListAction Listing 4.21 zeigt hierfür ein gutes Beispiel. In diesem Beispiel wird entschieden, ob abgeschlossene Projekte angezeigt oder ausgeblendet werden sollen. Das Ausblenden abgeschlossener Projekte war eine Anforderung an die Anwendung und kann durch das Konfigurationsmenu aktiviert bzw. deaktiviert werden. Ist die Funtktion aktiviert, wird in Zeile 2 eine Einschränkung aller Projekt-Objekte vorgenommen. Alle Objekte des Typs Project müssen jetzt die Bedingung erfüllen, dass ihr Attribut complete den Wert false besitzt. doparameterfilter 1 protected void doparameterfilter ( 2 HttpServletRequest request, 3 CriteriaData l i s t D a t a, 4 User s e s s i o n U s e r ) Listing Signatur der doparameterfilter-methode Im Gegensatz zur der dodefaultfilter-methode aus Listing 4.20, deren Filter immer ausgeführt werden, wurde noch eine Methode benötigt, die einschränkende Filter abhängig von übergebenen Parametern erzeugen kann. Dies wird z.b. benötigt wenn die ProjectListAction-Klasse nur Projekte eines bestimmten Benutzers oder einer bestimmten Firma anzeigen soll. Bekommt nun diese Klasse den Parameter uid=5 übergeben, werden nur die Projekte des Benutzers mit der Datensatznummer 5 angezeigt. Analog filtert der Parameter cid=3 alle Projekte der Firma mit der Datensatznummer 3. 1 i f ( r e q u e s t. getparametermap ( ). containskey (PARAM FILTER COMPANY) ) { 2 l i s t D a t a. g e t C r i t o n s ( ). add ( 3 R e s t r i c t i o n s. eq ( 4 purchaser. i d, 5 new Integer ( r e q u e s t. getparameter (PARAM FILTER COMPANY) ) ) ) ; 6 d o D e f a u l t F i l t e r ( request, l i s t D a t a, s e s s i o n U s e r ) ; 7 } Listing Auszug aus der doparameterfilter-methode der Klasse ProjectListAction Listing 4.23 zeigt einen solchen Filter innerhalb der ProjectListAction-Klasse. Zeile 1 prüft, ob der ensprechende Parameter übergeben wurde, z.b.: cid=3. In den Zeilen 2 bis 5 wird die einschränkende Bedingung erzeugt, die für alle ausgewählten

36 4.2 Anwendungslogik 33 Objekte gelten muss. In Zeile 6 folgt nun der Aufruf, zu der in Listing 4.20 beschriebenen dodefaultfilter-methode. show 1 doparameterfilter ( request, l i s t D a t a, s e s s i o n U s e r ) ; 2 3 d o O f f s e t ( request, l i s t D a t a ) ; 4 5 doordering ( request, l i s t D a t a ) ; 6 7 projectlistform. s e t P r o j e c t s ( 8 Manager. g e t P r o j e c t L i s t ( 9 l i s t D a t a. g e t C r i t o n s ( ), 10 l i s t D a t a. getsubcritons ( ), 11 l i s t D a t a. getorders ( ), 12 l i s t D a t a. g e t O f f s e t ( ), 13 l i s t D a t a. getpageelements ( ), 14 true ) ) ; return mapping. findforward ( s h o w P r o j e c t L i s t ) ; Listing Auszug aus der show-methode der Klasse ProjectListAction Die show-methode ist für die Darstellung der Listenseite verantwortlich und bringt alle bis jetzt beschriebenen Methoden und Funktionen zusammen (Listing 4.24). Die show-methode wird von der agencyexecute-methode aufgerufen. Sie erstellt Filterbedingungen (Zeile 1), berechnet den ersten und letzten anzuzeigenden Datensatz (Zeile 3), erstellt die Sortierbedingungen (Zeile 5) und ruft die gewünschten Daten per Geschäftslogik 4.1 von der Datenbank ab (Zeile 8). Danach stellt die Methode diese Daten durch Zuweisung an ein Bean-Objekt (Zeile 7) der Benutzeroberfläche zur Verfügung. Nach Beendigung der show-methode (Zeile 16) übernimmt der Struts-Zustandsautomat wieder die Kontrolle über den Ablauf der Anwendung, und die Benutzeroberfläche wird entsprechend gerendert.

37 4.3 Präsentationslogik Präsentationslogik Da es sich um eine Web-Anwendung handelt, basiert die Päsentationssicht auf der Hypertext Markup Language html 1, welche vom Browser des Anwenders zu einer Seite gerendert 2 wird. Da das reine html keine Kontrollstrukturen aufweist, die man zur Präsentation von dynamischem Inhalt benötigt, wird hier Gebrauch der STRUTS Tag Libraries 2.2, sowie der auf der Seite des Anwenders ablaufenden Skriptsprache JavaScript gemacht. Durch die Tags der BEAN-Library ist es der Präsentationsschicht möglich, Zugriff auf die Daten der Anwendungsschicht zu nemhen. Das folgende Kapitel stellt die am häufigsten verwendeten Kontrollstrukturen der Präsentationsschicht vor und zeigt ihre Einsatzgebiete. ActionForms Jede von der Anwendung erzeugte graphische Seite besteht aus einer zugehörigen Action-Klasse, einer Jsp-Datei und einer ActionForm-Klasse. Die ActionForm- Klasse ist die Schnittstelle zwischen der Jsp-Seite der Präsentationsschicht und der Action-Klasse der Anwendungsschicht. Die ActionForm-Klasse kapselt alle Informationen, die die Seite aus der Anwendungsschicht benötigt, wie z.b.: Zahlen, Zeichenketten oder Listen. Wenn der Struts-Zustandsautomat 2.2 die Kontrolle an die Action übergibt, ermittelt diese alle für die zugehörige Jsp-Seite gehörenden Daten und legt diese in der ActionForm ab. Nach Beendigung der Action-Klasse, wird die Jsp-Seite vom Tomcat 2.1 Webserver abgearbeitet. Das Struts-Framework weiß anhand seiner Konfiguration, welche ActionForm zu welcher Jsp gehört und übergibt diese ebenfalls dem Webserver. Dadurch ist es möglich, auf die Informationen der ActionForm aus der Anwendungsschicht während der Abarbeitung der Jsp-Datei durch den Webserver zuzugreifen. 1 Die Hypertext Markup Language (HTML) beschreibt Dokumente als Hypertext, typischerweise beschreibt sie Webseiten. 2 Im Bereich der Computergrafik und des CAD bezeichnet Rendern die Erzeugung eines digitalen Bildes aus einer Bildbeschreibung.

38 4.3 Präsentationslogik 35 Bedingungen mit logic:present 1 <l o g i c : p r e s e n t name= userlistform property = p r o j e c t I d > 2 <div i d= h e a d r e i t e r 2 a k t i v > 3 <html : img srckey= image. darkblue width = h e i g h t = 1 border= 0 /> 5 </div> 6 </ l o g i c : present > Listing If Bedingung der Taglib Listing 4.25 zeigt den Einsatz des logic:present-tags durch das es möglich ist, die Existenz bestimmter ActionForm-Werte zu prüfen. Falls das Attribut gefunden wurde, wird der html-code bis zum schließenden /logic:present-tag an dieser Stelle des Dokumentes eingefügt. Der hier gezeigte html-code aktiviert einen blauen Balken unter der Hauptbereichsnavigation, welcher somit optisch in den Vordergrund gebracht wird und dem Anwender verdeutlicht, in welchem Hauptbereich der Anwendung er sich gerade befindet. Schleifen mit logic:iterate Die logic:iterate-anweisung ist mit eine der wichtigsten und effektivsten Kontrollstrukturen der Taglib. Sie ermöglicht es, über alle Arten von Listen einer ActionForm zu iterieren. Dies kommt immer dann zum Einsatz, wenn durch die Präsentationsschicht eine Liste angezeigt werden soll. Diese Listen können aus einzelnen Objekten, welche durchaus wieder Listen sein können, bestehen. Struts ermöglicht es, während der Iteration durch das bean:write-tag auf die einzelnen Attribute des jeweiligen Iterationselementes zuzugreifen. 1 <l o g i c : i t e r a t e name= projectlistform property= p r o j e c t s i d= p r o j e c t > 2 <tr> 3 <td c l a s s = i n h a l t > 4 <html : l i n k a c t i o n= projectview 5 paramid= i d 6 paramname= p r o j e c t 7 paramproperty = id > 8 <bean : w r i t e name= p r o j e c t property= name /> 9 </html : l i n k > 10 </td> 11 </tr > 12 </ l o g i c : i t e r a t e > Listing Auszug aus der Datei projectlist.jsp Listing 4.26 zeigt ein Beispiel für das Traversieren einer Liste von Objekten innerhalb der Präsentationsschicht. In Zeile 1 wird angegeben, auf welches Attribut unserer ActionForm wir uns beziehen und wie wir die einzelenen Listenelemente während der Traversierung ansprechen wollen. Das iterate-tag wiederholt alles bis zu seinem schließenden Tag in Zeile 12. In den Zeilen 2-3 und werden die benötigten html-elemente für eine Tabelle angegeben. Zeilen 4-9 erzeugen mit

39 4.3 Präsentationslogik 36 Hilfe des html:link-tags einen html-verweis zur projectview-seite der Anwendung, auf der dann alle Projektattribute des entsprechenden Listenelementes angezeigt werden können. Zeile 8 wird das bean:write-tag dazu verwendet, das Attribut name des aktuellen Listenelementes project auszulesen. Mehrsprachenunterstützung mit bean:message Durch das bean:message-tag der STRUTS Tag Libraries wird die einfache Implementierung der Mehrsprachenunterstützung ermöglicht. Der Programierer kann in einer Resource-Datei sprachabhängige Informationen unter einem eindeutigen Schlüsselbegriff ablegen und darauf mit Hilfe des message-tags zugreifen. 1 <bean : message key= p r o j e c t. name /> Listing Auszug aus der Datei projectlist.jsp Das in Listing 4.27 beschriebene message-tag project.name wird von Struts dann in der Resource-Datei nachgeschlagen und in der aktuell verwendeten Sprache dargestellt, falls hierfür eine Übersetzung existiert. Falls diese nicht existiert, wird die Standardsprache verwendet. Während der Implementierung der Präsentationsschicht sind eine Vielzahl dieser Elemente angefallen, welche alle in deutscher und englischer Sprache vorliegen. Bei dem Start der Anwendung wird die vom Betriebssystem genutzte Sprache als Standardsprache vorausgewählt. Jedem Anwender ist es jedoch möglich, auf der Anmeldeseite seine gewünschte Sprache auszuwählen. wa script.js Einige Funktionen der Visualisierungsschicht erforderten die im Browser des Anwenders ablaufende Sprache Javascript. Hierfür wurde die Datei wa script.js angelegt, in welche alle Javascript Funktionen ausgelagert wurden. Dies bietet den Vorteil, dass alle Stellen der Visualisierungsschicht auf die gleichen Funktionen zugreifen können und sich somit Veränderungen an diesen Funktionen überall auswirken. sprintf Eine gewünschte Funktion war es, Datum und Zeitfelder anhand von Knöpfen verändern zu können. Nicht alle von mir hierzu benötigten Funktionen waren bereits im Java Script Sprachumfang enhalten, und somit wurde die Sprache um die Funktion sprintf erweitert. 1 String. prototype. sprintf = function ( ) Listing Erweiterung der Javascript String Klasse um die printf Methode

40 4.3 Präsentationslogik 37 Listing 4.28 zeigt die aus der Sprache C bekannte sprintf -Funktion, welche das einfache Formartieren von Zeichenketten ermöglicht. Diese Funktion wurde so implementiert, dass sie das String-Objekt des Javascript Sprachumfangs erweitert. Somit können formatierte Zeichenketten in Javascript mit folgendem Aufruf realisiert werden: 1 var mynewdatestring = %02d %02d %04d. s p r i n t f ( mynewdatedayofmonth, 2 mynewdatemonth, 3 mynewdateyear ) ; Listing Auszug aus der Javascript-Methode adddate In Listing 4.29 wird mit Hilfe der um die sprintf -Methode erweiterte String-Klasse ein formatiertes Datum erzeugt. adddate-addtime 1 function adddate ( hours, formname, elemname ) Listing Signatur der Javascript Methode adddate Durch die adddate-methode aus Listing 4.30 ist es möglich, Datumsfelder aus einem html-formular auszulesen und die durch den Parameter hours angegebene Zahl an Stunden auf das ausgelesene Datum zu addieren, bzw. bei negativen Stunden diese zu subtrahieren. Die Parameter formname und elemname geben dabei das html-formular, sowie das html-textfeld an, welches ausgelesen werden soll. Nach der Neuberechnung des Datums schreibt die Methode das neue Datum zurück in das übergebene Textfeld. Analog dazu funktioniert die implementierte Javascript Methode addtime, welche allerdings mit Minuten arbeitet. Anwendungsbeispiele für diese Javascript Funktionen finden sich überall in der Anwendung an den Stellen, an denen Zeit bzw. Datumsfelder eingestellt werden können.

41 5 Bedienung Das vollständige Benutzerinterface besteht aus etwa 40 Masken, die alle untereinander verknüpft sind. Für jedes der drei Hauptmodule Benutzer, Projekte und Firmen existieren die folgenden Grundmasken: Listen, Darstellung von Datensätzen in Form einer Liste Ansichten, nur-lese-darstellung von Datensätzen Eingabemasken, zur Erzeugung und Manipulation von Datensätzen Suchmasken, zur Suche von Datensätzen anhand bestimmter Suchkriterien Während der Implementierungsphase wurde ein primitives Grunddesign für all diese Masken verwendet, was allerdings für eine spätere grafische Umgestaltung technisch vorbereitet war. Dies ermöglichte, ebenso wie das Schichtenmodell der Anwendung, eine schnelle Überführung auf das in Kapitel 5.6 beschriebene Design der Propeller GmbH, was gegen Ende der Implementierungsphase vorlag. Die folgenden Kapitel beschäftigen sich mit diesem Vorgang und gehen auf die einzelnen Benutzerfunktionen der Anwendung ein.

42 5.1 Aufbau Aufbau Abb Aufbau der Benutzerschnittstelle Hauptnavigation Die drei großen Reiter am Kopf jeder Seite bilden die Hauptbereichsnavigation. Durch sie kann einfach in einen der Hauptbereiche, Benutzer, Projekte oder Firmen gewechselt werden. Je nachdem welchen Bereich der Benutzer ausgewählt hat, wird der aktuelle Bereich mit einem Balken unterstrichen. Somit erscheint der ausgewählte Bereich grafisch als ausgewählt, und der Benutzer erhält eine Orientierung, in welchem Bereich er sich momentan befindet. Die Auswahl des aktuellen Hauptbereiches bleibt bei allen, dem Bereich zur Verfügung stehenden Funktionen, ausgewählt und wechselt erst bei direkter oder indirekter Auswahl eines anderen Hauptbereiches. Der direkte Hauptbereichswechsel wird durch Auswählen eines anderen Hauptbereiches in der Navigation ausgelöst, wogegen ein indirekter Hauptbereichswechsel durch Auswählen von Verknüpfungen innerhalb eines Bereiches erfolgen kann. Schaut sich z.b.: ein Benutzer einen Benutzerdatensatz an, ist er im Hauptbereich Benutzer. Jeder Benutzerdatensatz zeigt dem Anwender welcher Firma er zugeordnet ist. Wird nun diese Firma mit der Maus ausgewählt, so springt die Anwendung indirekt in den Hauptbereich Firma und zeigt dort den entsprechenden Firmendatensatz an. Bereichsmenü Das Bereichsmenu enthält allgemeine Funktionen zum aktuell angezeigten Bereich, wie zb.: Hinzufügen neuer Datensätze oder der Suche nach Datensätzen. Je nachdem in welchem Bereich oder Teilbereich der Anwender navigiert, kann durch

43 5.1 Aufbau 40 Betätigen des Hinzufügen-Knopfes ein neuer Benutzer, ein neues Projekt oder eine neue Firma angelegt werden. Bereichsnavigation Die Bereichsnavigation dient zum Blättern über die aktuell angezeigten Datensätze. Da im späteren Einsatz der Anwendung mit vielen Datensätzen zu rechnen ist, zeigen alle Listenansichten nur eine bestimmte Anzahl an Einträgen auf einer Seite. Dieser Wert kann global, also für alle Listen, in dem Konfigurationsmenu verändert werden. Durch die Bereichsnavigation kann nun innerhalb der aktuellen Liste hin- und her geblättert werden. Die aktuelle Position, sowie die maximale Anzahl an Seiten wird dem Benutzer durch Zahlen in diesem Bereich angezeigt, womit sich die Übersicht erhöht. Die Bereichsnavigation wurde so implementiert, dass sie sich ihre aktuelle Position merken kann. Dies bedeutet, dass es einem Benutzer möglich ist, in der Firmenliste auf Seite 5 zu navigieren, danach unter dem Reiter Projekte einer ausgewählten Firma auf Seite 2 zu blättern. Springt der Benutzer wieder zur Firmenliste, befindet diese sich weiterhin an Position 5. Verlauf Da die Hauptbereichsnavigation dem Anwender nur den aktuell ausgewählten Hauptbereich anzeigt, dieser aber zum Teil aus vielen Unterbereichen bestehen kann, wie zb.: dem Projektbereich, wurde die Verlaufsanzeige implementiert. Durch sie kann der Anwender ganz genau seine aktuelle Position innerhalb der Anwendung nachvollziehen. Die Verlaufsanzeige erzeugt für jeden ausgewählten Teilbereich eine Verknüpfung zur entsprechenden Position innerhalb der Anwendung, die es dem Anwender ermöglicht, innerhalb seines Verlaufes zurückzuspringen. Datensatzliste Die Datensatzliste zeigt die durch Hauptbereich und Unterbereich ausgewählten Datensätze an. Alle Listeneinträge sind Verknüpfungen zu anderen Inhalten, die der Anwender durch Auswählen mit der Maus ansteuern kann. Die meisten Listenansichten besitzen rechts neben den Spalten zusätzliche Aktionsmöglichkeiten, die sich auf den Datensatz der entsprechenden Zeile auswirken. Diese Aktionen bestehen meist aus den Funktionen Löschen oder Editieren. Reiternavigation Um Hauptbereiche und zugehörige Unterbereiche für den Anwender übersichtlich zu gestalten, wurde die Reiternavigation implementiert. Für jeden implementierten Unterbereich existiert ein eigener Reiter. Jeder Reiter ist per Maus auswählbar

44 5.1 Aufbau 41 und wird durch einen Balken unterstrichen, sobald er angesteuert wurde. Durch den Reiter der Hauptbereichsnavigation und den Reiter der Teilbereichsnavigation ist nun für den Anwender ganz einfach erkennbar, in welchem Bereich er sich innerhalb der Anwendung befindet. Die Reiter haben teilweise die zusätzliche Funktion, die anzuzeigenden Listen mit Filtern zu belegen. Wenn der Benutzer über die Hauptbereichsnavigation in den Benutzerbereich wechselt, wird ihm ungefiltert die komplette Benutzerliste angezeigt, es sei denn, dies ist durch Rollen beschränkt. Wenn der Benutzer hingegen in den Hauptbereich Firma wechselt und per Reiternavigation in die Benutzerliste einer ausgewählten Firma springt, wird hier ebenfalls die Benutzerliste geladen, nur jetzt zusätzlich um den Filter der aktuellen Firma erweitert. Somit werden hier nur die Benutzer der ausgewählten Firma aufgelistet.

45 5.2 Benutzer Benutzer Über die Erstell-Editiermaske in Abbildung 5.2 des Benutzermoduls können neue Benutzer angelegt sowie die Daten bereits angelegter Benutzer verändert werden. Abb Erstell-Editiermaske für Benutzer Die von der Anwendung intern genutzten Rollenbezeichnungen aus Kapitel 3.4 werden hier in ihrer sprachabhängigen Übersetztung angezeigt. So entspricht in obigem Beispiel die Rolle USER ADMIN, dem Eintrag Lesen und Schreiben aller Benutzerdatensätze.

46 5.2 Benutzer 43 Da eine zusätzliche, unabhängige Rollenverwaltung den zeitlichen Rahmen der Anwendung gesprengt hätte, aber Einschränkungen der Benutzerprivilegien zum Funktionsumfang gehörten, habe ich mich dazu entschieden, nur die wichtigsten Rollen zu implementieren und deren Verwaltung in das Benutzermodul zu verlagern. Dies hat natürlich zur Folge, dass nicht jeder angelegte Benutzer seinen Benutzerdatensatz ändern kann, um sich somit administrative Rechte zu verschaffen. Hierfür wurde die Rolle USER ADMIN erstellt, die im Benutzermodul benötigt wird, um neue Benutzer anzulegen, bzw. vorhandene Benutzer zu editieren. Dies bedeutet natürlich auch, dass es einem Benutzer mit der Rolle USER ADMIN jederzeit möglich ist, sich oder anderen jede weitere Rolle zuzuordnen. Daher ist die USER ADMIN -Rolle momentan die wichtigste Rolle und sollte mit Bedacht zugeordnet werden. Diese Rolle kann direkt oder indirekt über die Meta-Rolle ME- TA MANAGER zugewiesen werden. Damit angemeldete Benutzer jedoch ihren Benutzerdatensatz oder den von anderen eingetragenen Benutzern einsehen können, existieren die View-Masken, welche die Datensatzinformation gefiltert in nur-lese-form darstellen. Über die Auswahlmöglichkeit Firmenzugehörigkeit kann der Benutzer jeder breits angelegten Firma zugeordnet werden.

47 5.3 Projekte Projekte Projekte Mit der Erstell-Editiermaske in Abbildung 5.3 des Projektmoduls lassen sich alle Eigenschaften eines Projektes zuordnen und verändern. Hier können alle Attribute, die direkt mit einem Projektdatensatz verbunden sind, beeinflusst werden. Nach Beendigung eines Projektes, kann mit dieser Maske der Projektstatus auf abgeschlossen gesetzt werden, um das Projekt in der Projektliste zu verbergen. Ist ein Projekt im Zustand abgeschlossen, können keine Teilprojekte oder Arbeitseinheiten mehr hinzugefügt, verändert oder gelöscht werden. Da im späteren Betrieb der Anwendung mit einer größeren Anzahl eingetragener Benutzer zu rechnen ist, wird eine Benutzerzuweisung, wie sie für die Projektmitarbeiter benötig wird, schnell unübersichtlich. Hierzu wurde eine Funktion implementiert, Benutzer anhand ihrer zugehörigen Firma zu filtern. Nachdem in der Projektmitarbeiter Zuweisung eine Firma ausgewählt wurde, erscheinen in der entsprechenden Benutzerliste nur die Benutzer, die dieser Firma zugeordnet sind. Somit verringert sich die Suche nach dem richtigen Benutzer im Vergleich zu einer vollständigen Liste. Abb Erstell-Editiermaske für Projekte

48 5.3 Projekte 45 Die zugehörige Ansichtsmaske in Abbildung 5.4 zeigt viele der Projekteingenschaften. Einige der Felder, wie z.b. Verantwortlicher, Auftraggeber oder letzte Projektdatei, sind Textverweise und führen zu den entsprechenden Benutzer- und Firmendatensätzen. Um die Projektansichtsseite einzusehen, muss ein Anwender dem Projekt als Mitarbeiter zugeordnet worden sein, oder eine der Rollen PROJECT VIEWALL oder PROJECT ADMIN besitzten. Abb Ansichtsmaske für Projekte

49 5.3 Projekte 46 Teilprojekte Abbildung 5.5 zeigt einen Ausschnitt der Bearbeitungsmaske des Teilprojektes Implementierung aus dem Projekt WebAgency, was auch anhand der Verlaufsanzeige abzulesen ist. Alle Bearbeitungsmasken der Anwendung werden aus dem gleichen Quellcode wie die Editiermasken erzeugt, nur werden bei letzteren die Eingabe und Auswahlfelder mit den Werten des zu bearbeitenden Datensatzes vorbelegt. Die Anwendung kann Datensätze nur anhand ihrer eindeutigen ID speichern, welche bei Betätigung des Speichern-Knopfes durch ein verstecktes Formularfeld übertragen wird. Die Teilprojektansicht in Abbildung 5.6 zeigt übersichtlich alle Informationen des ausgewählten Teilprojektes. Abb Erstell-Editiermaske für Teilprojekte Abb Ansichtsseite für Teilprojekte

50 5.3 Projekte 47 Arbeitseinheiten Die Arbeitseinheitenmaske in Abbildung 5.7 ermöglicht das Hinzufügen und Editieren aller Arbeitseinheitendatensätze. Alle Teilprojekte des ausgewählten Projektes stehen zur Auswahl. Hiermit kann die Teilprojektzugehörigkeit der Arbeitseinheit festgeselgt werden. Die Hoch- und Runterknöpfe neben den Datum- und Zeitfeldern ermöglichen Einfluß auf deren Zeit oder Datum zu nehmen, ohne direkte Tastatureingabe. Hierbei erhöht die Anwendung die entsprechenden Textfelder um einen festgelegten Minuten- oder Stundenwert. Diese Werte können durch die Konfigurationsmaske der Anwendung beinflusst werden. Abb Erstell-Editiermaske für Arbeitseinheiten Abb Ansichtsmaske für Arbeitseinheiten

51 5.3 Projekte 48 Projektdateien Abbildung 5.9 zeigt den Einstellvorgang der Datei WebAgency tar.bz2 für das Projekt WebAgency. Das Feld max. Größe weist den Anwender auf die, in der Konfiguration eingetragene maximalen Größe für Projektdateien hin, um das Einspielen von zu großen Dateien zu verhindern. Auf der Ansichtsseite in Abbildung 5.10 können der Dateiname sowie der Speicherort eingesehen werden, den die Anwendung für die eingespielte Datei verwendet. Das Feld Dateistatus zeigt, ob die Anwendung die eingespielte Datei im Dateisystem findet. Der Dateiname dient gleichzeitig als Empfangsaufforderung. Abb Erstellmaske für Projektdateien Abb Ansichtsmaske für Projektdateien

52 5.3 Projekte 49 Termine Die Terminmaske auf Abbildung 5.11 nimmt alle Terminbezogenen Daten auf. Der Anwender wird auf der Willkommensseite (Abbildung 5.13) auf seine nächsten Termine hingewiesen und kann diese durch deren Ansichtsseite (Abbildung 5.12) einsehen. Abb Erstell-Editiermaske für Termine Abb Ansichtsmaske für Termine Abb Willkommensseite

53 5.4 Auswertung Auswertung Die Auswertungsfunktion soll es berechtigten Personen erlauben, in die Anwendung eingetragene Stunden (Arbeitseinheiten) mit Hilfe unterschiedlichster Kriterien aufzufinden. Diese Funktion soll es möglich machen, Fragen, wie z.b.: Wieviel Stunden hat eine Person A in einem bestimmten Monat oder wieviele Stunden wurden in einem gewissen Zeitraum für Kunde B geleistet, zu klären. Um diese Funktion möglichst flexibel zum implementieren um somit diese und weitere Fragen beantworten zu können, wurde die Auswertungsfunktion mit Hilfe von 2 unterschiedlichen Masken implementiert. Abb Suchmaske der Auswertung Die erste Maske (Abb. 5.14) repräsentiert die Filtermaske. Hier können Filter angegeben werden, die sich dann auf die eingetragenen Arbeitseinheiten auswirken, welche dann auf der Folgeseite repräsentiert werden. Die Filtermaske bietet hierfür die unterschiedlichsten Filtermöglichkeiten, wie z.b.: einen Zeitraumfilter, welcher es erlaubt, nur Arbeitseinheiten eines bestimmten Zeitraumes zu berücksichtigen, sowie Mitarbeiter-, Kunden- und Projektfilter, die die jeweilige Auswahl filtern. Alle Filter, bis auf den Zeitraumfilter, erlauben eine Mehrfachauswahl und arbeiten zusammen. Somit können die oben genannten Anforderungen zur Suche und weit komplexere Anfragen gestellt werden. Wurde keine Einträge in den Projekte-, Personen- oder Firmenlisten ausgewählt,

54 5.4 Auswertung 51 so tritt nur der Zeitraumfilter in Kraft, und alle eingetragenen Arbeitseinheiten dieses Zeitraum werden angezeigt. Alle hier ausgewählten Elemete werden beim Betätigen des Suchen-Knopfes an die Anwendung übergeben, welche daraus die einschränkenden Filter erzeugt, die Daten abfragt und die gefundenen Arbeitseinheiten auf der Folgeseite visualisiert. Abb Resultatmaske der Auswertung Im obigen Beispiel wurde ein Filter für den Zeitraum bis und das Projekt WebAgency erstellt. Weiterhin interessiert sich der Anwender nur für die Arbeitseinheiten, die von Benutzer Ralf Schmitt für den Kunden Propeller GmbH eingetragen wurden. Die Angabe des Kunden hier ist aber überflüssig, da es eine eindeutige Zuordnung zwischen Projekt und Kunde gibt, welche schon mit der Angabe des Projektes WebAgency aufgelöst werden kann. Das Resultat bleibt natürlich das gleiche. Die Resultatseite (Abb. 5.15) zeigt nun alle gefundenen Arbeitseinheiten in der Listendarstellung für die sich der Anwender per Filter interessiert. Da diese Liste aus Platzgründen nur die wichtigsten Informationen der gefundenen Arbeitseinheiten darstellt, wird im Hintergrund eine CSV -Datei erstellt mit der gleichen Resultatmenge. Die Datenfelder, bzw. der Aufbau dieser CVS-Datei kann der Anwender über das Konfigurationsmenü 5.5 der Anwendung steuern. Der Menüpunkt CSV im Bereichsmenü der Resultatseite aktiviert den Download-Vorgang für diese Datei und ermöglicht es dem Anwender somit, die Daten weiterzuverarbeiten. Zur Verwendung der Projektauswertungsfunktion muss der Anwender die Rolle PROJECT ADMIN besitzen, die ihm im Benutzermodul 5.2 zugeordnet werden kann.

55 5.5 Konfiguration Konfiguration Alle angemeldeten Benutzer mit der Rolle SETTINGS haben Zugriff auf die Konfigurationsmaske. Hier können globale Parameter der Anwendung beeinflusst werden, die sich auf alle Benutzer auswirken. Konfigurationsmaske von WebAgency Für alle hier veränderbaren Werte existieren hartcodierte 1 Werte, die als Standardwerte geladen werden. Die Standardwerte für die konfigurierbaren Werte, so wie alle anderen konstanten Werte, sind in den Quellen in der Klasse Constants.java zu finden. Wenn über die Konfigurationsmaske Werte verändert werden, werden diese in einer XML-Datei im Dateisystem gespeichert. Die Anwendung liest beim Starten

56 5.5 Konfiguration 53 diese Datei aus und überschreibt damit die Standardwerte. Den Wert max. Anzahl Listenelemente lesen alle Listen der Anwendung aus und stellen die hier angegebene Anzahl dar. Die unter CSV Felder auswählbaren Werte stellen die Datenfelder dar, die exportiert werden, wenn die Anwendung eine CSV-Datei erzeugen soll. Somit kann der Benutzer zur Laufzeit beeinflussen, für welche Werte er sich interessiert. Die CSV - Daten können dann von externen Programmen importiert und weiterverarbeitet werden. Da abgeschlossene Projekte oder abgelaufene Termine nicht gelöscht werden sollen, diese aber die Übersichtlichkeit der Listenansichten beeinträchtigen, können diese mit den Schaltern Abgeschlossene Projekte verbergen oder Abgelaufene Termine verbergen gefiltert werden. Die Inkrement-Felder beeinflussen den Wert, um den sich z.b. ein Zeitfeld erhöht, wenn man den zugehörigen Nach-Oben-Knopf betätigt.

57 5.6 Redesign Redesign Während der Entwicklungsphase wurden alle drei Schichten, also Geschäftslogik, Anwendungslogik und Visualisierung von mir gleichzeitig implementiert. Hierbei konzentrierte ich mich im Wesentlichen auf die Schnittstelle der Geschäftslogik, da sie den Kern der Anwendung darstellt und sich Fehler hier fatal auf den Funktionsumfang und die Stabilität der kompletten Anwendung auswirken würden. Die Anwendungsschicht wurde nach und nach mit Funktionalität erweitert. Die Visualisierungsschicht hingegen deckte bis dahin nur funktionale Aspekte ab. Hier wurde nicht viel Zeit in Benutzerfreundlichkeit oder Optik investiert. Die letzten Wochen der geplanten Implementierungsphase wurden somit zum Redesign der Anwendung verwendet. Dazu wurde von der Propeller GmbH eine grafische Vorlage angefertigt, welche Aspekte, wie Farbwahl, Schriftwahl, Bilderwahl und Anordnung der Funktionalität standardisierte. Da die Visualisierungsschicht der Anwendung allerdings auf html basiert, musste die grafische Vorlage in einem weiteren Verarbeitungsschritt durch die Propeller GmbH in das html/css Format überführt werden. Mit diesen Daten konnte jetzt des Redesign effektiv durchgeführt werden, was sich zu einem längeren Prozess entwickelte, da zu diesem Zeitpunkt ca. 60 grafische Masken existierten, welche angepasst werden mussten. Weiterhin musste der Funktionsumfang der Visualisierungsschicht erhöht werden, da durch das Redesign Funktionen wie die Reiternavigation hinzugefügt wurden, die das ursprüngliche Design nicht vorgesehen hatte. Nachdem jedoch die Anpassungsarbeiten abgeschlossen waren, also alle Masken mit deren Funktionalität angepasst waren, erhöhte sich die Benutzerfreundlichkeit sowie die Optik der gesamten Anwendung drastisch. An dieser Stelle möchte ich mich nochmals für die freundliche und effektive Zusammenarbeit mit der Propeller GmbH bedanken, ohne die dieses Projekt nicht realisierbar gewesen wäre. 1 hartkodiert - Werte die mit dem Quelldateien in eine Assemblersprache, Bytecode oder Maschinensprache überstezt werden.

58 5.6 Redesign 55 WebAgency vor Redesign WebAgency nach Redesign

SQL structured query language

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

Mehr

Benutzerdokumentation Web-Portal

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

Mehr

17.2 MS-Access Projekte

17.2 MS-Access Projekte 964 Von MS-Access 2000 zum SQL-Server 17.2 MS-Access Projekte MS-Access-Projekte, die die Dateiendung adp besitzen, werden als Front-End-Anwendung verwendet. Für die Back-End-Seite gibt es mehrere Möglichkeiten.

Mehr

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

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

Mehr

Rechnernetze Projekt SS 2015

Rechnernetze Projekt SS 2015 30/03/15 Seite 1 Aspektorientierte Programmierung logische Aspekte (Concerns) im Programm separieren Crosscutting Concerns (Ziel: generische Funktionalitäten über mehrere Klassen hinweg zu verwenden -

Mehr

Projekt AGB-10 Fremdprojektanalyse

Projekt AGB-10 Fremdprojektanalyse Projekt AGB-10 Fremdprojektanalyse 17. Mai 2010 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Produktübersicht 3 3 Grundsätzliche Struktur und Entwurfsprinzipien für das Gesamtsystem 3 3.1 Die Prefuse Library...............................

Mehr

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht.

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht. Technisches Design Inhalt Design Übersicht Menü und DispatcherServlet DWR Servlet Viewer Servlets Controllers Managers Sicherheit Anwendung Architektur Component Diagram Deployment Diagram Komponente Sequence

Mehr

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

PIWIN 1 Übung Blatt 5

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

Mehr

Technische Beschreibung: EPOD Server

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

Mehr

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate Hibernate Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen Nabil janah 1 Hibernate Inhalt Hibernate allgemeines Vorteile von Hibernate Hibernate-Architektur

Mehr

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

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

Mehr

Übung 1: Ein Website News-System mit MySQL

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

Mehr

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

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

Mehr

15 Bilder und Dateien im SQL Server

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

Mehr

Praktikum Internetprotokolle - POP3

Praktikum Internetprotokolle - POP3 Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik Fachgebiet Telematik/Rechnernetze 19. Mai 2008 1 Aufgabenstellung Praktikum

Mehr

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

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

Mehr

Web 2.0 Software-Architekturen

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

Mehr

Fachbereich Informatik Praktikum 1

Fachbereich Informatik Praktikum 1 Hochschule Darmstadt DATA WAREHOUSE SS2015 Fachbereich Informatik Praktikum 1 Prof. Dr. S. Karczewski Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 14.April.2015 1. Kurzbeschreibung In diesem Praktikum geht

Mehr

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

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

Mehr

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

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

Mehr

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt. Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.

Mehr

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

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

Mehr

DRESDEN, 08.10.2009 CHRISTIAN.KNAUER@INF.TU-DRESEDEN.DE

DRESDEN, 08.10.2009 CHRISTIAN.KNAUER@INF.TU-DRESEDEN.DE DOKUMENTATION MAAS - MONITORING AS A SERVICE DRESDEN, 08.10.2009 CHRISTIAN.KNAUER@INF.TU-DRESEDEN.DE Dokumentation MaaS - Monitoring as a Service Inhalt 1. MaaS - Monitoring as Service... 3 1.1 Einleitung...

Mehr

Hochschule Darmstadt Fachbereich Informatik

Hochschule Darmstadt Fachbereich Informatik Hochschule Darmstadt Fachbereich Informatik 6.3 Systemarchitektur 430 6.3 Systemarchitektur Drei Schichten Architektur Die "Standardtechniken" des Software-Engineering sind auch auf die Architektur einer

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

Entwicklung von Web-Anwendungen auf JAVA EE Basis

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

Mehr

PostgreSQL unter Debian Linux

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

Mehr

Mehmet-Oktay Tugan Gliederung Grundsätzliches und Begriffserklärung Einleitung Geschichte Architektur Funktionalitätsumfang Hauptunterstützungen Zusammenfassung Grundsätzliches WebSphere ist ein Entwicklungstool

Mehr

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

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

Mehr

Einführung in die Informatik II

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

Mehr

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel ralf_gitzel@hotmail.de

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel ralf_gitzel@hotmail.de JSP Grundlagen JEE Vorlesung Teil 5 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht JSP Konzept Model-View-Controller mit JSPs JSP Expression Language EL Literale

Mehr

Android Kurs Online Kurs Entwicklung auf Android-Handys

Android Kurs Online Kurs Entwicklung auf Android-Handys Android Kurs Online Kurs Entwicklung auf Android-Handys Akademie Domani info@akademiedomani.de Allgemeines Programm des Kurses Modul Eins - Programmierung J2ee 1) Grundlegende Java - Programmierung : Grundlegende

Mehr

M i t a r b e i t e r p r o f i l (Stand: August 09)

M i t a r b e i t e r p r o f i l (Stand: August 09) M i t a r b e i t e r p r o f i l (Stand: August 09) KB-M1-Java134 Schwerpunkte / Spezialisierung: Softwareentwickler Java / J2EE Swing JSF JavaScript Verfügbarkeit (skalierbar): Ab sofort Ausbildung:

Mehr

PostgreSQL im praktischen Einsatz. Stefan Schumacher

PostgreSQL im praktischen Einsatz. Stefan Schumacher PostgreSQL im praktischen Einsatz 2. Brandenburger Linux Infotag 2005 Stefan Schumacher , PGP Key http:/// $Header: /home/daten/cvs/postgresql/folien.tex,v 1.11 2005/04/25

Mehr

BOE Security Standard Anwendergruppen-zentrierte Administration in BOE XI 3.1

BOE Security Standard Anwendergruppen-zentrierte Administration in BOE XI 3.1 areto consulting BOE Security Standard Seite 1 von 10 WHITE-PAPER BOE Security Standard Anwendergruppen-zentrierte Administration in BOE XI 3.1 Autoren: Christian Ruschak, Business Intelligence Consultant

Mehr

Grundsätzliche Struktur und Entwurfsprinzipien des Gesamtsystems. Grundsätzliche Struktur und Entwurfsprinzipien der einzelnen Pakete

Grundsätzliche Struktur und Entwurfsprinzipien des Gesamtsystems. Grundsätzliche Struktur und Entwurfsprinzipien der einzelnen Pakete Allgemeines 2 Produktübersicht 2 Grundsätzliche Struktur und Entwurfsprinzipien des Gesamtsystems 3 Grundsätzliche Struktur und Entwurfsprinzipien der einzelnen Pakete Account-Verwaltung 5 Freund-Funktionen

Mehr

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken.

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken. Vorlesungsteil SQL Grundlagen - 1 / 8 - SQL SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken. Auf einem Server (Rechner im Netz, der Dienste

Mehr

Erste Schritte, um selber ConfigMgr Reports zu erstellen

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

Mehr

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

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

Mehr

Entwurf und Implementierung einer webbasierten Anwendung zur Verwaltung von Hosting-Verträgen mit Hilfe von Struts und Hibernate

Entwurf und Implementierung einer webbasierten Anwendung zur Verwaltung von Hosting-Verträgen mit Hilfe von Struts und Hibernate Entwurf und Implementierung einer webbasierten Anwendung zur Verwaltung von Hosting-Verträgen mit Hilfe von Struts und Hibernate Design and Implementation of a Web-based Application for the Management

Mehr

TimeSafe Leistungserfassung

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

Mehr

Bedienung von BlueJ. Klassenanzeige

Bedienung von BlueJ. Klassenanzeige Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument

Mehr

Erweiterung für Premium Auszeichnung

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

Mehr

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

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

Mehr

Softwareentwicklung mit JAVA EE

Softwareentwicklung mit JAVA EE Softwareentwicklung mit JAVA EE Beispiel Framework: Struts Was ist? Open Source Framework zum Bau von Web Applikationen Home Page http://jakarta.apache.org/struts Teil des Apache Jakarta Project Unterstützt

Mehr

Web- Applikationen. in Java-Web

Web- Applikationen. in Java-Web Einführung in Java-Web Web- Applikationen Frank Huber Humboldt-Universität zu Berlin Allgemeines Java: Programmierung ist Programmierung nach Konvention Insbesondere bei Web-Applikationen wurde eine API

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Softwaretool Data Delivery Designer

Softwaretool Data Delivery Designer Softwaretool Data Delivery Designer 1. Einführung 1.1 Ausgangslage In Unternehmen existieren verschiedene und häufig sehr heterogene Informationssysteme die durch unterschiedliche Softwarelösungen verwaltet

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

Dateisysteme mit Plugin-Funktion

Dateisysteme mit Plugin-Funktion Dateisysteme mit Plugin-Funktion Basierend auf Reiser 4 unter Linux http://llugb.amsee.de/logo.gif Ausgearbeitet und vorgetragen von Michael Berger 1/23 Agenda Die Idee Dateisysteme mit Plugin-Funktion

Mehr

Einführung in SQL Datenbanken bearbeiten

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

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9c: Datenbankapplikationen Architektur einer Web-Applikation mit Servlets, JSPs und JavaBeans

Mehr

CloudMatic V1.0. Inhalt

CloudMatic V1.0. Inhalt CloudMatic V1.0 Inhalt Einleitung... 2 CCUs hinzufügen... 3 meine-homematic.de... 4 Eigenes VPN... 4 View Editor... 5 Übersicht... 5 Allgemeine Einstellungen... 6 Kanäle hinzufügen... 6 Spezielle Kanäle...

Mehr

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

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

Mehr

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo. www.mid.de

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo. www.mid.de Innovator 11 excellence DDL importieren Data-Definition-Language-Dateien in Datenbankschema importieren HowTo www.mid.de Zweck In Innovator Data excellence können Sie mit dem DDL-Import Ihr physisches

Mehr

Leistungsbeschreibung. PHOENIX Archiv. Oktober 2014 Version 1.0

Leistungsbeschreibung. PHOENIX Archiv. Oktober 2014 Version 1.0 Leistungsbeschreibung PHOENIX Archiv Oktober 2014 Version 1.0 PHOENIX Archiv Mit PHOENIX Archiv werden Dokumente aus beliebigen Anwendungen dauerhaft, sicher und gesetzeskonform archiviert. PHOENIX Archiv

Mehr

Handbuch TweetMeetsMage

Handbuch TweetMeetsMage Handbuch TweetMeetsMage für Version 0.1.0 Handbuch Version 0.1 Zuletzt geändert 21.01.2012 Inhaltsverzeichnis 1 Einleitung... 3 1.1 Voraussetzungen... 3 1.2 Funktionsübersicht... 3 2 Installation... 4

Mehr

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

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

Mehr

Sicherheit in Webanwendungen CrossSite, Session und SQL

Sicherheit in Webanwendungen CrossSite, Session und SQL Sicherheit in Webanwendungen CrossSite, Session und SQL Angriffstechniken und Abwehrmaßnahmen Mario Klump Die Cross-Site -Familie Die Cross-Site-Arten Cross-Site-Scripting (CSS/XSS) Cross-Site-Request-Forgery

Mehr

0. Inhaltsverzeichnis

0. Inhaltsverzeichnis 0. Inhaltsverzeichnis 0. Inhaltsverzeichnis...1 1. Kurze Einführung WebService Architektur...2 1.1 Synchrones Modell:...2 1.2 Asynchrones Modell:...2 1.3 Vorteile:...3 1.4 Voraussetzungen...3 2. Testseite

Mehr

Dataport IT Bildungs- und Beratungszentrum. HTML- Grundlagen und CSS... 2. XML Programmierung - Grundlagen... 3. PHP Programmierung - Grundlagen...

Dataport IT Bildungs- und Beratungszentrum. HTML- Grundlagen und CSS... 2. XML Programmierung - Grundlagen... 3. PHP Programmierung - Grundlagen... Inhalt HTML- Grundlagen und CSS... 2 XML Programmierung - Grundlagen... 3 PHP Programmierung - Grundlagen... 4 Java - Grundlagen... 5 Java Aufbau... 6 ASP.NET Programmierung - Grundlagen... 7 1 HTML- Grundlagen

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

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

Mehr

eclipse - Entwicklungsumgebung und mehr ETIS SS05

eclipse - Entwicklungsumgebung und mehr ETIS SS05 eclipse - Entwicklungsumgebung und mehr ETIS SS05 Gliederung Motivation Geschichte Architektur Platform Runtime Eclipse Platform Java Development Tools (JDE) Plugin Development Environment (PDE) Zusammenfassung

Mehr

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de. 26.11.2000 (c) Michael Behrendt -

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de. 26.11.2000 (c) Michael Behrendt - Herzlich Willkommen! Mit Java ins Web - eine praxisnahe Übersicht 1 Wer bin ich? Michael Behrendt, 21, Nürnberg kurzer Lebenslauf: 1991 Erster Rechner: Commodore C128 1995 Ausbildung zum Datenverarbeitungskaufmann

Mehr

IV. Datenbankmanagement

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

Mehr

Enterprise Java Beans Einführung

Enterprise Java Beans Einführung Enterprise Java Beans Einführung Vorlesung 8 Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht EJBs im JEE Umfeld Verschiedene Typen von EJBs Von der Javaklasse

Mehr

1 Installationen. 1.1 Installationen unter Windows

1 Installationen. 1.1 Installationen unter Windows 1 Installationen Dieses Kapitel beschreibt die Installationen, die für die Nutzung von PHP und MySQL unter Windows, unter Ubuntu Linux und auf einem Mac mit OS X notwendig sind. 1.1 Installationen unter

Mehr

SQL, MySQL und FileMaker

SQL, MySQL und FileMaker SQL, MySQL und FileMaker Eine kurze Einführung in SQL Vorstellung von MySQL & phpmyadmin Datenimport von MySQL in FileMaker Autor: Hans Peter Schläpfer Was ist SQL? «Structured Query Language» Sprache

Mehr

Glossarverwaltung GV3

Glossarverwaltung GV3 Glossarverwaltung GV3 Designbeschreibung VQWiki Leszek Kotas Sebastian Knappe Gerrit Mattausch Raimund Rönn 23. Mai 2004 Inhaltsverzeichnis 1 Allgemeines 3 1.1 Kurzcharakteristik.................................

Mehr

Allgemein. Einrichtung. PHOENIX Tool WinUser2PHOENIXUser. Version: 3.5.2 Stand: 2013-04-16

Allgemein. Einrichtung. PHOENIX Tool WinUser2PHOENIXUser. Version: 3.5.2 Stand: 2013-04-16 PHOENIX Tool WinUser2PHOENIXUser Version: 3.5.2 Stand: 2013-04-16 Allgemein Das Tool ermöglicht es, Benutzerinformationen aus dem Windows Active Directory (AD) in den PHOENIX zu importieren. Dabei können

Mehr

Installation und Benutzung AD.NAV.ZipTools

Installation und Benutzung AD.NAV.ZipTools Installation und Benutzung AD.NAV.ZipTools Version 1.0.0.0 ALTENBRAND Datentechnik GmbH Am Gelicht 5 35279 Neustadt (Hessen) Tel: 06692/202 290 Fax: 06692/204 741 email: support@altenbrand.de Die Komponente

Mehr

Grundlagen der Verwendung von make

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

Mehr

JSP und Servlet Programmierung

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

Mehr

ALM mit Visual Studio Online. Philip Gossweiler Noser Engineering AG

ALM mit Visual Studio Online. Philip Gossweiler Noser Engineering AG ALM mit Visual Studio Online Philip Gossweiler Noser Engineering AG Was ist Visual Studio Online? Visual Studio Online hiess bis November 2013 Team Foundation Service Kernstück von Visual Studio Online

Mehr

Fertigprodukte. Bruno Blumenthal und Roger Meyer. 18. Juli 2003. Zusammenfassung

Fertigprodukte. Bruno Blumenthal und Roger Meyer. 18. Juli 2003. Zusammenfassung Fertigprodukte Bruno Blumenthal und Roger Meyer 18. Juli 2003 Zusammenfassung Dieses Dokument beschreibt die Fertigprodukte welche im Projekt NetWACS eingesetzt werden sollen. Es soll als Übersicht dienen

Mehr

Web-Anwendungsentwicklung mit dem Delivery Server

Web-Anwendungsentwicklung mit dem Delivery Server Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010

Mehr

Access und OpenOffice.org

Access und OpenOffice.org Access-Datenbanken in OpenOffice.org 1.1 einbinden Herausgegeben durch das OpenOffice.org Germanophone-Projekt Autoren Autoren vorhergehender Versionen Timo Kozlowski Alle in diesem Dokument erwähnten

Mehr

Whitepaper. Produkt: combit Relationship Manager / address manager. Integration der Ansicht "Adressen" in eigene Solution

Whitepaper. Produkt: combit Relationship Manager / address manager. Integration der Ansicht Adressen in eigene Solution combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager / address manager Integration der Ansicht "Adressen" in eigene Solution Integration der Ansicht "Adressen" in

Mehr

Handover von Daten IBM Rational DOORS StartUp Training - Teil 2

Handover von Daten IBM Rational DOORS StartUp Training - Teil 2 Handover von Daten IBM Rational DOORS StartUp Training - Teil 2 Inhalt: Überblick Daten Import & Export Import von RTF Dateien Import von Spreadsheet Daten Export als RTF und HTML DOORS Repository In-Export

Mehr

Dokumentation zur Anlage eines JDBC Senders

Dokumentation zur Anlage eines JDBC Senders Dokumentation zur Anlage eines JDBC Senders Mithilfe des JDBC Senders ist es möglich auf eine Datenbank zuzugreifen und mit reiner Query Datensätze auszulesen. Diese können anschließend beispielsweise

Mehr

[2009] Pflichtenheft. Miguel Lars Entwicklung. Lars Dobschall Miguel Alejandro Palmer Felico 20. Mai 2009 Version 1.0.29

[2009] Pflichtenheft. Miguel Lars Entwicklung. Lars Dobschall Miguel Alejandro Palmer Felico 20. Mai 2009 Version 1.0.29 [2009] Pflichtenheft Miguel Lars Entwicklung Lars Dobschall Miguel Alejandro Palmer Felico 20. Mai 2009 Version 1.0.29 Inhalt Seite 1. Zielbestimmung 3 1.1. Muss Kriterien 3 1.2. Kann Kriterien 3 1.3.

Mehr

Relationale Datenbanken in der Praxis

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

Mehr

Diplomarbeit. Konzeption und prototypische Realisierung eines projektzentrierten Zeiterfassungs- und Auswertungssystems auf Basis von PHP/ MySQL

Diplomarbeit. Konzeption und prototypische Realisierung eines projektzentrierten Zeiterfassungs- und Auswertungssystems auf Basis von PHP/ MySQL Diplomarbeit Konzeption und prototypische eines projektzentrierten s- und Auswertungssystems auf Basis von PHP/ MySQL Inhalt Vorstellung Person Vorstellung Angewandte Informatik Multimedia Engineering

Mehr

FH LU JEE Vorlesung SS 2010. Ralf Gitzel ralf_gitzel@hotmail.de

FH LU JEE Vorlesung SS 2010. Ralf Gitzel ralf_gitzel@hotmail.de FH LU JEE Vorlesung SS 2010 Ralf Gitzel ralf_gitzel@hotmail.de 1 Einführung + Organisatorisches Ralf Gitzel ralf_gitzel@hotmail.de 2 Dozent Dr. Ralf Gitzel Promotion an der Universität Mannheim in Wirtschaftsinformatik

Mehr

Alerts für Microsoft CRM 4.0

Alerts für Microsoft CRM 4.0 Alerts für Microsoft CRM 4.0 Benutzerhandbuch Der Inhalt des Dokuments ist Änderungen vorbehalten. Microsoft und Microsoft CRM sind registrierte Markenzeichen von Microsoft Inc. Alle weiteren erwähnten

Mehr

Architektur einer GDI: Service-oriented Architecture (SOA)

Architektur einer GDI: Service-oriented Architecture (SOA) Modul 6: Voraussetzungen einer GDI Vertiefende Dokumente I Stand: 24.01.2012 Architektur einer GDI: Service-oriented Architecture (SOA) Zu den Hauptargumenten für eine Geodateninfrastruktur zählen unter

Mehr

Ziel des Dokuments: Erläuterung der Infoblox GUI für CVs, Erläuterung der Fehlermeldungen.

Ziel des Dokuments: Erläuterung der Infoblox GUI für CVs, Erläuterung der Fehlermeldungen. Infoblox GUI Ziel des Dokuments: Erläuterung der Infoblox GUI für CVs, Erläuterung der Fehlermeldungen. Inhalt 1. Einleitung... 2 2. Login / Logout ins GUI... 2 3. Assign Fixed IP... 4 4. Add Host... 6

Mehr

VIVIT TQA Treffen in Köln am 18. 04. 2013. API- Programmierung und Nutzung bei HP Quality Center / ALM. Michael Oestereich IT Consultant QA

VIVIT TQA Treffen in Köln am 18. 04. 2013. API- Programmierung und Nutzung bei HP Quality Center / ALM. Michael Oestereich IT Consultant QA VIVIT TQA Treffen in Köln am 18. 04. 2013 API- Programmierung und Nutzung bei HP Quality Center / ALM Michael Oestereich IT Consultant QA Agenda Vorstellung der API- Versionen OTA- API SA- API REST- API

Mehr

Aufbau und Pflege von Internetseiten leicht gemacht

Aufbau und Pflege von Internetseiten leicht gemacht Aufbau und Pflege von Internetseiten leicht gemacht Einführung in die Grundlagen der CMS (Content Management Systeme) Was ist ein CMS? frei übersetzt: Inhaltsverwaltungssystem ist ein System, das die gemeinschaftliche

Mehr

Integration Services - Dienstarchitektur

Integration Services - Dienstarchitektur Integration Services - Dienstarchitektur Integration Services - Dienstarchitektur Dieser Artikel solle dabei unterstützen, Integration Services in Microsoft SQL Server be sser zu verstehen und damit die

Mehr

2 7 Erweiterungen. 7.1 Prozess-Kommunikation mit Datenbanken

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

Mehr

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

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

Mehr

Sructred Query Language

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

Mehr

Softwaretechnik (Medieninformatik) Überblick: 6. Objektorientiertes Design

Softwaretechnik (Medieninformatik) Überblick: 6. Objektorientiertes Design Softwaretechnik (Medieninformatik) Überblick: 6.1 Einleitung 6.2 Verfeinerung des Klassenmodells 6.3 Sequenzdiagramme 6.4 Umsetzung der Analysekonstrukte in das Design 6.5 Fallstudie 6.6 Software Kontrakte

Mehr

Integrating Architecture Apps for the Enterprise

Integrating Architecture Apps for the Enterprise Integrating Architecture Apps for the Enterprise Ein einheitliches Modulsystem für verteilte Unternehmensanwendungen Motivation und Grundkonzept Inhalt Problem Ursache Herausforderung Grundgedanke Architektur

Mehr

Kurzübersicht Diplomarbeit

Kurzübersicht Diplomarbeit Thema: Konzeption und Implementierung einer Basisarchitektur für eine regelbasierte Client-/Server-Anwendung für das Workflow Management Ort: Bundesamte für Wehrtechnik und Beschaffung, Wehrtechnische

Mehr

Praktikum Spring MVC. 1.2. Spring integrieren In der pom.xml Einträge für Spring hinzufügen.

Praktikum Spring MVC. 1.2. Spring integrieren In der pom.xml Einträge für Spring hinzufügen. Praktikum Spring MVC Aufgabe 1 Im ersten Teil des Praktikums wird eine Test Webapplikation entwickelt, anhand derer einige Konzepte von Spring nachvollzogen werden können. Dabei handelt es sich um Spring

Mehr