WS 2006/07 Prof. Dr. Andreas Schmie... by Katie Marcus 558 views\nAltran "Innovators" 02/2009 by AltranDeutschland 1830 views\n1. Gottfried Wilhelm Leibniz Universität Hannover Fakultät für Elektrotechnik und Informatik Institut für Praktische Informatik Fachgebiet Software Engineering Entwurfsvergleich einer SOA-Anwendung auf SOA-Me- und BPEL- Basis Bachelorarbeit im Studiengang Informatik von Christoph König Prüfer: Prof. Dr. Kurt Schneider Zweitprüfer: Prof. Dr. Udo Lipeck Betreuer: Dipl.-Wirt.-Inform. Daniel Lübke Hannover, 15. August 2007\n2. Zusammenfassung Geschäftsprozesse werden in der heutigen Zeit häufig nach dem Konzept der serviceorientier- ten Architektur als Software realisiert. Dies geschieht meistens mit Hilfe von Webservices und der Business Process Execution Language (BPEL). Wenngleich sich diese Sprache sehr für automatisch ablaufende Geschäftsprozesse eignet, unterstützt sie keine Benutzerinterakti- onen, obwohl viele reale Geschäftsprozesse menschliches Eingreifen erfordern. Aus diesem Grund wurde die SOA-Me-Plattform entwickelt, die, im Gegensatz zu BPEL, Benutzerinteraktionen gezielt unterstützt. Diese Arbeit vergleicht die beiden Systeme anhand eines konkreten Geschäftsprozesses mit Hilfe von speziell dafür ausgewählten Metriken und zieht aufgrund dieses Vergleiches Rück- schlüsse darauf, welches der beiden Systeme für diese Anwendung besser geeignet ist. Abstract The service orientated architecture paradigm (SOA) is more and more important for the reali- zation of business processes today. Mostly SOA is implemented by web services, composed by the Business Process Execution Language (BPEL). While this language is high suitable for completely automated business processes, it does not support user interactions. Although most real-live business processes require human intervention. For this reason the SOA-Me platform was developed. Contrary to BPEL, this system supports user interactions by design. This thesis compares the two systems, implementing a concrete business process, with the help of well chosen metrics. Based on the results of this comparison, it will show which of the both systems suits better for the given process. 2\n3. Danksagung Für die vorbildliche und hervorragende Betreuung dieser Arbeit möchte ich Herrn Daniel Lübke an dieser Stelle herzlich danken. 3\n4. Inhaltsverzeichnis 1 Einleitung ........................................................................................................................... 6 1.1 Motivation .................................................................................................................. 6 1.2 Ziel dieser Arbeit........................................................................................................ 6 1.3 Struktur dieser Arbeit ................................................................................................. 6 2 Grundlagen ......................................................................................................................... 8 2.1 Serviceorientierte Architektur .................................................................................... 8 2.2 Business Process Execution Language ...................................................................... 8 2.2.1 Mächtigkeit......................................................................................................... 9 2.2.2 Schwächen von BPEL...................................................................................... 10 2.3 SOA-Me ................................................................................................................... 10 2.3.1 Aufbau .............................................................................................................. 11 2.3.2 Mächtigkeit....................................................................................................... 12 2.4 Gegenüberstellung.................................................................................................... 14 3 Anforderungen und Entwurf ............................................................................................ 16 3.1 Gemeinsame Anforderungen und Entwurfsentscheidungen .................................... 16 3.1.1 Vision ............................................................................................................... 16 3.1.2 Stakeholder....................................................................................................... 16 3.1.3 Ablauf des Prozesses ........................................................................................ 17 3.1.4 Anbindung an externe Systeme........................................................................ 18 3.1.5 Datenbankschema............................................................................................. 18 3.2 BPEL ........................................................................................................................ 20 3.2.1 Prozess-Architektur .......................................................................................... 20 3.2.2 Sicherheitssystem ............................................................................................. 21 3.2.3 Gruppenverwaltung.......................................................................................... 23 3.2.4 Aufgabenverwaltung ........................................................................................ 23 3.2.5 Benutzeroberfläche........................................................................................... 25 3.3 SOA-Me ................................................................................................................... 25 3.3.1 Prozess-Aufbau ................................................................................................ 25 3.3.2 Persistenz.......................................................................................................... 26 4\n5. 4 Implementierung und Entwicklung.................................................................................. 28 4.1 Prozesse.................................................................................................................... 28 4.1.1 Aufbau des Prozessdokuments......................................................................... 28 4.1.2 Hauptteil ........................................................................................................... 28 4.1.3 Persistenz.......................................................................................................... 30 4.1.4 Fehlerbehandlung ............................................................................................. 30 4.1.5 Benutzeroberfläche........................................................................................... 31 4.2 Webservices ............................................................................................................. 31 4.2.1 Datenbankwebservices ..................................................................................... 32 4.2.2 Druckservice..................................................................................................... 33 4.2.3 E-Mail-Service ................................................................................................. 33 5 Vergleich .......................................................................................................................... 34 5.1 GQM......................................................................................................................... 34 5.2 Lesbarkeit ................................................................................................................. 37 5.3 Analyse der Codebasis ............................................................................................. 39 5.4 Kompositionsgröße .................................................................................................. 42 5.5 Benutzeroberflächen................................................................................................. 44 5.6 Prozessdauer............................................................................................................. 46 5.7 Fazit .......................................................................................................................... 47 5.7.1 Aufwand ........................................................................................................... 47 5.7.2 Toolsupport ...................................................................................................... 48 5.7.3 Usability ........................................................................................................... 48 5.7.4 Wartbarkeit....................................................................................................... 49 5.7.5 Flexibilität ........................................................................................................ 49 6 Zusammenfassung und Ausblick ..................................................................................... 50 Literaturverzeichnis.................................................................................................................. 52 Anhang ..................................................................................................................................... 53 Beispiel für ein Prozessdokument ........................................................................................ 53 Fragebogen zur Lesbarkeit der BPEL- und SOA-Me-Notation........................................... 55 Szenario zum Messen der Prozessdauer............................................................................... 57 Inhalt der CD-ROM ................................................................................................................. 58 Erklärung.................................................................................................................................. 59 5\n6. 1 Einleitung 1.1 Motivation Service-orientierte Architekturen sind in der heutigen Zeit ein häufig genutztes Konzept um Geschäftsprozesse zu automatisieren. Bei diesem Vorhaben wird meist auf Webservices ge- setzt, die einen kleinen Teil der Funktionalität des Prozesses kapseln und diese über ein Netzwerk zur Ausführung anbieten. Um größere Geschäftsprozesse unterstützen zu können müssen diese Webservices zu größe- ren Kompositionen zusammengefasst werden. Um dieses zu ermöglichen existieren verschie- dene Kompositionssprachen die komplexe Arbeitsabläufe (Workflows) unterstützen. Eine davon ist die 2002 von einigen großen Firmen vorgestellte Business Process Execution Language (BPEL). Sie hat gute Chancen die Standardsprache für die Komposition von Web- services zu werden. Dabei liegt der Schwerpunkt dieser Sprache auf komplett automatisch ablaufenden Geschäftsprozessen und nicht auf Prozessen, die das Eingreifen des Menschen erfordern. Diese kommen aber in vielen realen Geschäftsprozessen vor. Aus diesem Grund wurde 2006 am Fachgebiet Software Engineering der Universität Hanno- ver die SOA-Me-Plattform entwickelt. Dieses System wurde mit dem Ziel geschaffen, Benut- zerinteraktionen und Webservicekompositionen gleichermaßen zu unterstützen. Dabei setzt es vor allem auf zur Laufzeit generierte Benutzeroberflächen, um die Realisierung von Benutzer- interaktionen so einfach wie möglich zu machen. SOA-Me verwendet zur Prozesskomposition ereignisgesteuerte Prozessketten (EPKs), da davon ausgegangen wird, dass diese einfacher zu Beherrschen sind als die BPEL-Notation. 1.2 Ziel dieser Arbeit Ziel dieser Arbeit ist es herauszufinden, ob sich BPEL oder SOA-Me eher für einen bestimm- ten Geschäftsprozess eignet. Bei diesem Geschäftsprozess handelt es sich um ein Verwal- tungssystem für studentische Abschlussarbeiten am Fachgebiet Software Engineering. Dieser Prozess wurde im Wintersemester 2006/2007 im Rahmen der Projektarbeit "Entwick- lung einer Webservice-basierten Anwendung" bereits mit Hilfe von BPEL realisiert. Im Rah- men dieser Arbeit soll er auf die SOA-Me-Plattform portiert werden. Im Zuge dieser Portie- rung soll auch die Architektur der Realisierung auf BPEL-Basis analysiert und bewertet wer- den. Nach der Portierung sollen die beiden Anwendungen verglichen werden. Zu diesem Zweck müssen geeignete Metriken erhoben, angewendet und die Ergebnisse interpretiert werden. Dabei interessiert besonders welcher der beiden Ansätze aufwendiger zu realisieren und zu warten ist. Des Weiteren stellt sich die Frage, ob die automatisch generierten Benutzerober- flächen von SOA-Me gegenüber der Benutzeroberfläche der BPEL-Anwendung eine ähnliche Usability aufweisen und ob EPKs wirklich intuitiver zu verstehen sind als die BPEL-Notation. 1.3 Struktur dieser Arbeit Zunächst sollen in dieser Arbeit einige Grundlagen vermittelt werden. Dabei wird kurz das Konzept der serviceorientierten Architektur erläutert. Anschließend wird ein Überblick über die beiden SOA-Plattformen BPEL und SOA-Me gegeben. Im darauf folgenden Kapitel werden die Anforderungen an die Anwendung vorgestellt, die für beide Plattformen implementiert wurden. Außerdem werden die beiden verschiedenen Ent- würfe mit ihren unterschiedlichen aber auch gemeinsamen Entwurfentscheidungen erläutert. 6\n7. Im vierten Kapitel dieser Arbeit wird die Portierung der SOA-Anwendung von BPEL auf die SOA-Me-Plattform vorgestellt und die Rolle und Einbindung der verschiedenen Frameworks erläutert. Auch werden die bei der Implementierung aufgetretenen Probleme thematisiert. Kapitel fünf beschäftigt sich mit dem Vergleich der beiden SOA-Anwendungen. Es gibt einen Überblick über die Herangehensweise und angewandten Methoden des Vergleichs und stellt schließlich die Stärken und Schwächen beider Lösungen dar. Im letzten Kapitel wird ein Fazit gezogen und die Bedeutung dieser Arbeit für folgende Ar- beiten herausgestellt. Besonders wird hier auf die Konsequenzen für die SOA-Me-Plattform eingegangen, die sich aus dem Vergleich mit BPEL herausgestellt haben. Dabei werden eini- ge Empfehlungen für die weitere Entwicklung der SOA-Me-Plattform gegeben. 7\n8. 2 Grundlagen 2.1 Serviceorientierte Architektur Die Serviceorientierte Architektur (SOA) ist ein Konzept, das besonders zur Unterstützung von Geschäftsprozessen geeignet ist. Im Gegensatz zu traditionellen Software-Designs ver- sucht SOA prozessorientierte Softwareanwendung besser zu unterstützen, indem einzelne Softwarekomponenten (Services) an dem Geschäftsprozess ausgerichtet werden. Diese Servi- ces decken meist eine Aktivität im Geschäftsprozess ab (z.B. „Warenbestellung abschicken“) und sollen weitgehend unabhängig voneinander sein, so dass bei sich ändernden Geschäfts- prozessen eine möglichst hohe Flexibilität der Infrastruktur gewährleistet ist. Häufig sind Ser- vices nicht nur lokal sondern auch über Netzwerke erreichbar. Die heute meist anzutreffende Art Services zu implementieren ist die Implementierung durch Webservices nach den Standards SOAP (Protokoll für das Aufrufen entfernter Prozeduren), WSDL (Webservice Description Language; Schnittstellenbeschreibung von Webservices) und UDDI (Universal Description, Discovery and Integration; Webservice-Verzeichnisdienst), auch wenn prinzipiell andere Technologien wie z.B. die „Common Object Request Broker Architecture“ (CORBA) benutzt werden können. Abbildung 1: Schichten einer SOA-Anwendung nach [Lue05] SOA-Anwendungen können (nach [Lüe05]) in drei Schichten unterteilt werden (siehe Abbildung 1): die Serviceschicht, die Prozessschicht und die Präsentationsschicht. Die Servi- ce Schicht bildet die Grundlage der SOA-Anwendung. Auf dieser Schicht werden alle Servi- ces z.B. als Webservices realisiert. Darauf baut die Prozess-Schicht auf, die die Aktivitäten des Geschäftsprozesses auf die Services der Service-Schicht abbildet und mit der Präsentati- ons-Schicht kommuniziert. Diese beinhaltet die Benutzerschnittstelle zur Steuerung und In- teraktion mit dem Prozess. SOA-Anwendungen müssen nicht notwendigerweise alle diese Schichten umfassen. Vollau- tomatische Prozesse können zum Beispiel auf eine Präsentationsschicht verzichten, einfache benutzerorientierte Prozesse im Einzelfall auf die Serviceschicht. 2.2 Business Process Execution Language Die Business Process Execution Language (BPEL) ist eine auf XML basierende Sprache, die Geschäftsprozesse beschreibt, deren einzelne Aktivitäten durch Webservices implementiert werden. Sie wurde im Jahr 2002 von IBM, BEA und Microsoft eingeführt, die Version 2.0 wurde von OASIS standardisiert. 8\n9. BPEL wurde dazu entwickelt Webservices zu orchestrisieren, das heißt mehrere Webservices zu einem Webservice zusammenzustellen. Diese Orchestrisierung kann wieder als Webservi- ce angesprochen werden, damit ist BPEL hauptsächlich auf der Service-Ebene des Drei- Schichten-Modells aus 2.1 angesiedelt. Es ist aber auch möglich einen kompletten Geschäfts- prozess in BPEL zu beschreiben, falls dieser vollständig automatisiert ablaufen kann. Somit deckt BPEL die Prozess- und Serviceschicht ab. Abbildung 2: Übersicht über eine BPEL-Anwendung Eine BPEL-Anwendung (siehe Abbildung 2), wie z.B. die freie Implementierung ActiveB- PEL, funktioniert folgendermaßen: Der BPEL-Prozess wird auf dem BPEL-Designer model- liert. Dabei werden die benötigten Datenstrukturen mit XML Schema und die benötigten Webservices mit ihren WSDLs beschrieben. Der Prozess wird dann in Dateiform auf den BPEL-Server geladen (Deployment). Dieser ist fähig einzelne Instanzen des Prozesses auszu- führen und dazu Webservices aufzurufen. Da sich ein BPEL-Prozess nach außen wie ein Webservice verhält, wird er gestartet, indem er von außen (z.B. durch einen Client, anderen Webservice oder einem beliebigen anderen Programm, dass Webservices nutzen kann) aufge- rufen wird. 2.2.1 Mächtigkeit Nach [ACD+03] setzt sich ein BPEL-Prozess aus so genannten Aktivitäten zusammen. Dabei werden einfache und strukturierende Aktivitäten unterschieden. Einfache Aktivitäten (Basic Activities) sind grundlegende Aktivitäten, die nicht aus anderen Aktivitäten aufgebaut sind. Die wichtigsten einfachen Aktivitäten sind: assign: Verändert den Inhalt einer Variablen. invoke: Aufruf eines Webservices. Dieser kann asynchron (ohne warten auf eine Antwort) oder synchron (mit warten auf eine Antwort) erfolgen. receive: Öffnet einen Webservice-Port und blockiert den Prozess, bis über diesen Port ein Aufruf erfolgt ist. reply: Sendet eine Antwort auf einen per receive erhaltenden Aufruf. throw: Signalisiert einen Fehler (ähnlich wie bei Java), der, falls er nicht durch die Fehlerbehandlung abgefangen werden kann, zur Terminierung des Prozesses führt. 9\n10. wait: Verzögert den Prozess für eine gewisse Zeitspanne oder bis zu einem bestimmten Zeitpunkt. empty: Leere Aktivität, z.B. zum Unterdrücken von Fehlern verwendbar. terminate: Beendet den Prozess. Strukturierende Aktivitäten enthalten andere (sowohl einfache als auch strukturierende) Akti- vitäten. Mit Ihrer Hilfe können komplexe Prozesse aufgebaut werden. Zu den strukturierenden Aktivitäten gehören: sequence: Enthaltende Aktivitäten werden sequentiell abgearbeitet. while: Die enthaltene Aktivität wird solange ausgeführt, wie eine zugeordnete Bedingung erfüllt ist. pick: Wartet auf ein bestimmtes Ereignis (Nachricht, Timeout), je nach Ereignis wird eine andere Aktivität ausgeführt. switch: Führt, abhängig von einer zugeordneten Bedingung, eine Aktivität aus. flow: Führt mehrere Aktivitäten gleichzeitig (oder in beliebiger Reihenfolge) aus. Syn- chronisation der Aktivitäten ist durch so genannte Links möglich. scopes: Scopes erlauben es, eine neue Umgebung für die enthaltene Aktivität zu öffnen. Innerhalb eines Scopes angelegte Variablen gelten dann nur für diesen Scope und wirken sich nicht global aus. Auch kann jeder Scope über eine eigene Fehlerbe- handlung (Fault-Handler genannt) und einen eigenen Compensation-Handler ver- fügen. Letzterer dient dazu die von Aktivitäten innerhalb des Scopes gemachten Änderungen rückgängig zu machen. Dadurch können mit Hilfe von Scopes Trans- aktionen realisiert werden. 2.2.2 Schwächen von BPEL BPEL sieht keine Benutzerinteraktionen und damit, wie schon auf Abbildung 2 zu sehen, kei- nen Client vor. Es ist nicht direkt möglich innerhalb des Prozesses Aufgaben durch Benutzer sondern nur durch Webservices durchführen zu lassen. Zwar kann für eine Benutzerinterakti- on die Webservice-Schnittstelle des Prozesses verwandt werden, dabei ruft der Client aber immer den Prozess auf, der Prozess kann nicht auf eigene Initiative mit dem Client kommuni- zieren. Dies ist nur indirekt über einen Webservice der zwischen Prozess und Client vermittelt oder durch Polling durch den Client möglich. Ein Versuch diese Schwäche von BPEL zu beheben ist das von IBM in Zusammenarbeit mit SAP entwickelte BPEL4People [KKL+05], welches BPEL um so genannte „people activities“ erweitert. Diese regeln, was ein Benutzer tun muss (Aufgabenbeschreibung), welche Gruppe von Benutzern diese Aufgabe erledigen darf und welche Person aus dieser Gruppe zur Lauf- zeit letztendlich die Aufgabe erledigt (hat). BPEL4People lässt dabei aber offen, über welche Protokolle dies geschehen soll und wie letztendlich die Aufgaben dargestellt werden. Dazu müssen Individual-Lösungen entwickelt werden. 2.3 SOA-Me Die SOA-Me Plattform ist ein Prototyp einer Entwicklungs- und Ausführungsumgebung für auf Webservices basierende Geschäftsprozesse. Sie wurde im Wintersemester 2006/2007 im Rahmen des Software Projekts am Fachgebiet Software Engineering der Universität Hanno- ver mit dem Ziel entwickelt sowohl automatisierbare als auch nichtautomatisierbare Ge- schäftsprozesse zu unterstützen. 10\n11. Dabei wurde sich konzeptionell an den Schwächen von BPEL orientiert (siehe 2.2.2), so un- terstützt die SOA-Me Plattform nicht nur explizit von Benutzern zu bearbeitende Aktivitäten sondern stellt auch einen einheitlichen Client zur Verfügung, der dynamisch zur Laufzeit zu dem Geschäftsprozess passende Benutzeroberflächen generieren kann. Allerdings existiert keine Webserviceschnittstelle für die einzelnen Prozesse mehr. SOA-Me Prozesse können also, im Gegensatz zu BPEL, nicht als Webservices angesprochen werden. Damit deckt SOA- Me die oberen beiden Schichten, die Prozess- und die Darstellungsschicht, des Schichtmo- dells aus 2.1 ab. Die Plattform basiert auf ereignisgesteuerten Prozessketten (EPKs) die auf der Grundlage von [Lue05] und [Int06] um Benutzerinteraktionen und Webservice-Aufrufe erweitert wurden. Sie (genauer der SOA-Me Integrationsserver) ist in der Lage beliebige wohlstrukturierte EPKs auszuführen, welche nach [GL05] alle in der Praxis relevanten EPKs abdecken. Die zur Laufzeit benötigten Daten, die zum Aufrufen eines Webservices oder einer Benutzer- interaktion nötig sind, werden mit Hilfe von Extensible Stylesheet Language Transformation (XSLT) aus dem so genannten Prozessdokument gewonnen. Dieses Dokument ist eine einfa- che XML-Datei deren Struktur zum Großteil vom Entwickler des Prozesses vorgegeben wer- den kann. Diese Datei wächst mit der Ausführungszeit des Prozesses, da die Ergebnisse von Webservice-Aufrufen und Benutzerinteraktionen nach einer weiteren XSL-Transformation an das Prozessdokument angehängt werden. 2.3.1 Aufbau Die SOA-Me-Plattform (Abbildung 3) besteht aus drei Komponenten: Dem SOA-Me Integra- tionserver, der die Geschäftsprozesse ausführt, dem SOA-Me Kompositionseditor, mit dessen Hilfe Geschäftsprozesse modelliert werden können, und dem SOA-Me Client, für die Präsen- tation des Geschäftsprozesses. Abbildung 3: Übersicht über die SOA-Me Plattform Die Plattform funktioniert wie folgt: Der auf dem SOA-Me Editor entwickelte Prozess in Form einer ereignisgesteuerten Prozesskette wird zusammen mit den WSDL-Dateien der be- nötigten Webservices sowie der XSLT-Dateien zur Transformation der Prozessdaten entwe- der in Dateiform oder über eine Netzwerkverbindung auf den SOA-Me Server geladen (deployed). 11\n12. Dieser hält alle ihm bekannten Prozesse in einer Datenbank und bietet dazu berechtigten Clients den Start dieser Prozesse an. Wird eine Prozessinstanz gestartet, wird diese vom Ser- ver entsprechend der EPK ausgeführt, wobei Webservices aufgerufen und im Rahmen von Benutzerinteraktionen Clients über anstehende Aufgaben benachrichtigt werden. Für letzteres werden die zur Ausführung der Aufgabe berechtigten Personen ermittelt. Sofern sie zurzeit an dem Server angemeldet sind, werden den Clients, die diese Personen gerade benutzen, Infor- mationen über diese Aufgabe gesendet. Der SOA-Me Client fasst diese Informationen in einer ToDo-Liste für den Benutzer zusam- men. Dieser kann nun eine Aufgabe aus dieser Liste auswählen, woraufhin der Client auf- grund der Informationen über die Aufgabe eine zur Aufgabe passende graphische Benutzer- oberfläche generiert. Diese kann aus Eingabefeldern (Edit), Auswahllisten (Choice, nur ein Element selektierbar), Auswahlbuttons (Select, beliebig viele Elemente selektierbar) und Textinformationen (Display) bestehen (siehe auch 2.3.2.2). Einen Überblick über dieses Kon- zept verschafft [LLSG06]. Die Informationen zur Generierung der Oberfläche werden bereits im SOA-Me Editor erstellt. Hat der Benutzer die Aufgabe bearbeitet (indem er z.B. eine Ein- gabe getätigt, oder einfach nur den angezeigten Text gelesen hat), werden die Ergebnisse an den Server geschickt, der den Prozess darauf fortsetzt. Der SOA-Me Client besitzt ferner noch ein Experience Forum. Mit diesem Feature ist es möglich die Erfahrungen der Benutzer zu einer Aufgabe zu sammeln und später durch das Entwicklungsteam auszuwerten. Dieses Konzept wurde in [LS06] vorgestellt und in [Gri07] in die SOA-Me Plattform integriert. 2.3.2 Mächtigkeit Die Mächtigkeit der SOA-Me Plattform wird von zwei Teil-Modellen bestimmt. Einmal dem Modell der ereignisgesteuerten Prozesskette, welches zur Komposition der Prozesse dient, und einmal dem Task-Modell, welches zum Beschreiben der Aufgaben, die vom Benutzer ausgeführt werden, dient. 2.3.2.1 EPK EPKs sind die Grundlage der SOA-Me Prozesse und bestehen im Wesentlichen aus drei Klas- sen von Aktivitäten: Ereignisse, Funktionen und Konnektoren. Ereignisse stellen eingetretene Zustandsänderung dar. Sie können an Bedingungen geknüpft sein, so dass sie im Zusammenhang mit entsprechenden Konnektoren den Prozessablauf be- einflussen können. Ansonsten haben sie nur strukturierende Funktion (passives Element). Eine EPK beginnt immer mit einem Ereignis, dann folgen alternierend Funktionen und weite- re Ereignisse. Funktionen stellen die eigentlichen Aktivitäten der Prozesse da (aktives Element). Sie werden durch Ereignisse ausgelöst und resultieren wieder in einem Ereignis. Die SOA-Me Plattform sieht zwei Arten von Funktionen vor: Webservice-Aufrufe und Benutzer-Interaktionen. Konnektoren können die EPK verzweigen (Split) und wieder zusammenführen (Join). Sie werden entweder zwischen Funktion und Ereignis oder zwischen Ereignis und Funktion ein- gesetzt. Es gibt drei Arten von Konnektoren: OR-, XOR- und AND- Konnektoren. OR-Konnektoren beschreiben Alternativen. Auf eine OR-Verzweigung müssen bedingte Er- eignisse folgen. Alle Ereignisse, deren Bedingung wahr ist, werden gleichzeitig aktiviert. Bei der Zusammenführung durch ein OR wird solange gewartet, bis alle eingehenden Zweige Ihre Aktivität beendet haben. 12\n13. XOR-Konnektoren verhalten sich wie OR-Konnektoren, nur dass genau ein Ereignis aktiviert wird. Aus diesem Grund braucht bei der Zusammenführung durch ein XOR auch nicht gewar- tet zu werden. a) OR-Konstrukt b) AND-Konstrukt c) XOR- Konstrukt d) Iteration (parallele Ausführung) (Alternative) Abbildung 4: Typische Konstrukte mit Konnektoren AND-Konnektoren können nur nach Ereignissen eingesetzt werden. Sie führen zu einer unbe- dingten gleichzeitigen Aktivierung aller nachfolgenden Funktionen. AND- Zusammenführungen warten ebenfalls wie OR-Zusammenführungen, bis alle aktiven Zweige ihre Arbeit beendet haben. 2.3.2.2 Task-Modell Aufgaben der UI-Funktionen werden mit dem Task-Modell beschrieben. Dieses sieht eine Sequenz von UI-Elementen vor, die dem Benutzer angezeigt werden. Jedem dieser Elemente wird ein so genanntes „Information Object“ zugeordnet, welches die darzustellenden oder zu modifizierenden Daten enthält. Folgende UI-Elemente werden unterstützt: Display: Das Display Element zeigt die in dem Information Object enthaltenden Daten an. Die Daten können in HTML (Hypertext Markup Language) formatiert sein. Selection: Dieses Element lässt den Benutzer Daten auswählen. Bei diesen Daten kann es sich um Daten aus einem Information Object oder aber auch um ganze „Informati- on Objects“ handeln. Es ist möglich die Auswahl von mehreren Daten aber auch die Abwahl aller Daten zuzulassen. Edit: Mit Hilfe dieses Elements kann der Benutzer die Daten des zugehörigen Informa- tion Objects verändern. Control: Ein Control fordert den User zu einer Entscheidung auf. Diesem Element ist kein Information Object zugeordnet, sondern zwei oder mehr Aktionen (Actions) aus denen der User eine auswählen muss. 2.3.2.3 Benutzeroberfläche Das Task-Modell des SOA-Me-Systems sieht einen in vier Bereiche eingeteilten Client vor (siehe Abbildung 5). In der Prozessliste (A) werden dem Benutzer Prozesse angeboten, die dieser starten darf. Die ToDo-Liste (B) enthält alle Aufgaben aus laufenden Prozessen, die der Benutzer bearbeiten muss bzw. darf. In der Aufgabenanzeige (C) können die zuvor ausge- wählten Aufgaben bearbeitet werden. Dieser Bereich wird während des Prozessablaufs auto- matisch aus den zu den Benutzerinteraktionen gehörigen Elementen generiert. Im Experience Forum (D) kann der Benutzer Kommentare zu den einzelnen Aufgaben hinterlassen und sich die Erfahrungen anderer Benutzer ansehen. 13\n14. C A D B Abbildung 5: Benutzeroberfläche des SOA-Me Client 2.4 Gegenüberstellung In [Sch07] wurde auf Basis von [ADH03] die Mächtigkeiten von EPKs und BPEL verglichen. Dabei ging es darum, welche Muster von Arbeitsabläufen (Workflow Patterns) die beiden Kompositionssprachen beherrschen. Wie in Tabelle 1 zu sehen deckt dabei BPEL sechs Mus- ter mehr ab als EPK. Dabei ist BPEL aber keine Obermenge von EPK denn diese unterstützen ineinander verschränkte Schleifen, welche mit dem blockorientierten BPEL nicht möglich sind. Ansonsten gibt es noch System-inhärente Unterschiede zwischen BPEL und SOA-Me. Der fehlende generische Client und Unterstützung von Benutzerinteraktionen seitens BPEL wurde davon schon ausreichend behandelt. Da SOA-Me ein Prototyp ist, fehlen diesem System eini- ge Standardfunktionen für Workflow-Engines wie Persistenz und Transaktionen. Diese Funk- tionen müssen aufwendig und explizit in den zu realisierenden Prozessen eingebaut werden. 14\n15. Basic Control Patterns EPK BPEL WP1 - Sequence + + WP2 - Parallel Split + + WP3 - Synchronization + + WP4 - Exclusive Choice + + WP5 - Simple Merge + + Advanced Branching and Sync. Patterns WP6 - Multi Choice (+) + WP7 - Synchronizing Merge (+) + WP8 - Multi-Merge - - WP9 - Discriminator - - Structural Patterns WP10 - Arbitrary Cycles + - WP11 - Implicit Termination + + Involving Multiple Instances (MI) WP12 - MI Without Synchronisation - + WP13 - MI With a Priori Design Time - + WP14 - MI With a Priori Runtime - - WP15 - MI Without a Priori Runtime - - State-based Patterns WP16 - Deferred Choice - + WP17 - Interleaved Parallel Routing - (+) WP18 - Milestone - - Cancellation Patterns WP19 - Cancel Activity - + WP20 - Cancel Case - + Tabelle 1: Workflow Patterns in untersuchten Sprachen, nach [ADH03] 15\n16. 3 Anforderungen und Entwurf In diesem Kapitel sollen die Anforderungen an das Verwaltungssystem für Abschlussarbeiten sowie der Entwurf auf BPEL und SOA-Me erläutert werden. 3.1 Gemeinsame Anforderungen und Entwurfsentscheidungen Da die BPEL-Anwendung schon existierte und auf SOA-Me portiert werden musste, konnte vieles aus dem BPEL-Entwurf in den SOA-Me-Entwurf übernommen werden. Dieses Kapitel behandelt neben den gegebenen Anforderungen diese gemeinsamen Entwurfsentscheidungen. 3.1.1 Vision Es soll ein Computersystem entwickelt werden, dass die Abschlussarbeiten am Fachgebiet Software Engineering verwaltet. Es soll dabei sicherstellen, dass alle nötigen verwaltungs- technischen Formalitäten (z.B. Anmeldung beim Prüfungsamt, Erfassen der Abgabe) durch- geführt werden und dass die wesentlichen Teile der Betreuung (z.B. das Planen von Vorträ- gen) eingehalten werden. Außerdem soll es den Prozess der Bearbeitung von Abschlussarbei- ten, soweit möglich, automatisieren indem es beispielsweise einen geplanten Vortrag per E- Mail ankündigt. Um das System flexibel und erweiterbar zu halten und auch eventuell anderen Systemen Zugriff auf einzelne Funktionalitäten zu geben, soll es auf Basis von Webservices entwickelt werden. 3.1.2 Stakeholder Stakeholder eines Projektes sind, nach ISO 10006, alle Personen, die ein Interesse am Projekt haben oder vom Projekt in irgendeiner Weise betroffen sind. Folgende Personen sind an dem Prozess zur Verwaltung von Abschlussarbeiten beteiligt: Betreuer Aufgaben: Erstellt Themen, betreut Abschlussarbeiten (meldet an, plant Vorträge, erfasst Abgabe) Erwartungen: Möchte schnell und einfach Abschlussarbeiten verwalten Erstgutachter Aufgaben: Genehmigt Themen, erstellt Erstgutachten für Abschlussarbeiten Erwartungen: Möchte ausreichend über Themen informiert werden und sein Gutachten möglichst einfach eingeben können Zweitgutachter Aufgabe: Erstellt Zweitgutachten für Abschlussarbeiten Erwartung: Möchte sein Gutachten wie üblich (d.h. nicht mit dem System, sondern über das Sekretariat) erstellen Student Aufgabe: Bearbeitet Themen im Rahmen von Abschlussarbeiten Erwartungen: Reibungslose Verwaltung und faire Benotung seiner Abschlussarbeit Sekretariat Aufgabe: Erfasst Zweitgutachten Erwartung: Unkomplizierte Eingabe des Zweitgutachtens in das System Diese Gruppen sind nicht notwendigerweise disjunkt. So kann zum Beispiel ein Erstprüfer die Arbeit gleichzeitig betreuen. 16\n17. 3.1.3 Ablauf des Prozesses Der Prozess (Abbildung 6) beginnt mit dem Erstel- len des Themas der Abschlussarbeit durch den Be- treuer. In diesem Schritt wird auch der Erstprüfer der Arbeit festgelegt. Im nächsten Schritt wird das Thema dem Erstprüfer zur Genehmigung vorgelegt. Dieser hat die Mög- lichkeit das Thema abzulehnen oder zu genehmigen und diese Entscheidung zu kommentieren. Wird das Thema abgelehnt, wird der Betreuer be- nachrichtigt und erhält die Möglichkeit das Thema zu überarbeiten. Im Anschluss wird es dem Erstprü- fer erneut vorgelegt. Wird das Thema akzeptiert wird es automatisch auf der Webseite des Fachgebiets Software Engineering veröffentlicht und ausgedruckt. Nun wird der Betreuer aufgefordert sowohl einen Studenten für die Bearbeitung der Arbeit als auch einen Zweitgutachter zu benennen. Erst wenn beide Personen eingetragen sind, kann die Arbeit ange- meldet werden. Die Anmeldung der Arbeit soll nicht aktiv unter- stützt werden. Der Betreuer bekommt lediglich eine Checkliste über die notwendigen Schritte. Falls es sich bei der Arbeit um eine externe Ab- schlussarbeit handelt, wird der Betreuer nun aufge- fordert einen Termin für den Anfangsvortrag festzu- legen, der Termin wird automatisch dem Erstgut- achter und dem WAT-System des Fachgebiet Soft- ware Engineering mitgeteilt. Anschließend werden in jedem Fall Zwischen- und Abschlussvortrag, analog zum Anfangsvortrag ge- plant. Bei der Planung des Abschlussvortrages muss das System sicherstellen, dass der Termin nicht vor der geplanten Abgabe der Abschlussarbeit liegt. Im nächsten Schritt erfasst und archiviert der Be- treuer die Abgabe der Arbeit. Damit wird die Be- wertungsphase eingeleitet. In dieser können Betreuer, Erst- und Zweitgutachter die Arbeit bewerten. Dabei können nur Erst- und Zweitgutachter Noten vergeben, der Betreuer hat nur die Möglichkeit einen Kommentar zu verfassen. Der Zweitgutachter agiert nicht direkt mit dem Sys- tem, sein Gutachten wird vom Sekretariat erfasst und in das System eingegeben. 17 Abbildung 6: Prozessablauf\n18. 3.1.4 Anbindung an externe Systeme Eine wichtige Anforderung an das System zur Verwaltung von Abschlussarbeiten ist die An- bindung an schon bestehende Systeme um Standardaufgaben automatisieren zu können. Bei diesen Aufgaben handelt es sich um das Verschicken von E-Mails, einmal über das Simp- le Mail Transfer Protokoll (SMTP) und einmal über das WAT-Anmeldesystem des Fachgebiet Software Engineering, das Drucken von Aushängen und das Laden von Aushängen auf den WebServer des Fachgebiet Software Engineering. Für das WAT-Anmeldesystem existiert bereits ein Webservice, die restlichen müssen noch erstellt werden. SOA-Me und BPEL sehen einen Webservice namens PrintService für das Drucken und einen Webservice namens MailService für das Versenden von Mails via SMTP vor. BPEL benötigt darüber hinaus einen Proxy-Webservice namens WAT-Manager für das aufrufen des WAT-Anmeldesystems. Der Service zum Upload wurde von keinem Entwurf realisiert. 3.1.5 Datenbankschema Sowohl bei der BPEL als auch bei der SOA-Me Lösung kommt eine Datenbank zum Einsatz, in der u.a. alle zur Abschlussarbeitverwaltung nötigen Daten gespeichert werden. Diese ist nötig, da zum einen das SOA-Me System nicht persistent ist, die Daten also bei Abbruch des Prozesses verloren wären, und zum anderen benötigt der BPEL-Entwurf eine Möglichkeit Daten aus dem Prozess dem Client zur Verfügung zu stellen. Die SOA-Me und die BPEL-Lösung benutzen dabei ein einheitliches Basisschema (siehe Abbildung 7), das in der Projektarbeit "Entwicklung einer Webservice-basierten Anwendung" entwickelt wurde. Da beide Lösungen dieses Schema nur minimal erweitern, sind die Daten- bestände untereinander kompatibel. Das Basisschema enthält folgende Entitäten: Personen (Person) sind alle natürlichen Personen, die am Prozess beteiligt seien können, also Erst- und Zweitgutachter, Betreuer und Student sowie alle, die Zugang zum System haben (Mitarbeiter, Sekretariat). Zu jeder Person wird Anrede (salutation), Titel, Vor- und Nachna- me (firstName, lastName) sowie (falls vorhanden) Telefonnummer, E-Mail-Adresse, Matri- kelnummer (studentId) und Zimmernummer gespeichert. Eine Person kann beliebig viele Themen (Subject) betreuen, prüfen (als Erst- und Zweitgut- achter) und bearbeiten. Da nicht explizit zwischen Mitarbeitern, Mitgliedern der Universität und Studenten unterschieden wird, sind noch zusätzliche Anforderungen an diese Beziehun- gen nötig: Eine Person darf niemals bei einem Thema sowohl als Erst- als auch als Zweitgut- achter auftreten. Tritt sie als Erstgutachter oder Betreuer auf, muss ihr ein Benutzer (User) zugeordnet sein, da Betreuer und Erstgutachter mit dem System direkt interagieren müssen. Ferner darf eine Person nur ein Thema zurzeit bearbeiten und dieses Thema dann weder betreuen noch prüfen. Benutzer (User) sind Personen, die zum Nutzen des Systems berechtigt sind und ordnen ih- nen einen Usernamen und ein Passwort zum Login in das System zu. Es ist möglich, dass einer Person mehrere Benutzer zugeordnet werden, so kann sich eine Person unter mehreren Pseudonymen im System einloggen. Einem Benutzer können darüber hinaus Daten zum Log- in in das WAT-System des Fachgebiet Software Engineering zugeordnet werden. Über dieses System werden unter anderem die Massenbenachrichtigungen über die Vorträge zu Ab- schlussarbeiten verschickt. Themen (Subject) stellen vom Betreuer vorgeschlagene Themen für Abschlussarbeiten dar. Einige der Attribute dieser Entität lehnen sich an die vom Fachgebiet Software Engineering 18\n19. verwendeten Aushänge über Abschlussarbeiten an. Dazu gehören der Titel, der voraussichtli- che Typ der Arbeit (titleType), die Aufgabe, der Hintergrund, der frühest mögliche Beginn (appliableDate) und die Randbedingungen, sowie die internen Zusatzangaben für das Fach- gebiet Software Engineering über Bewertungskriterien (criteria), „Benutzerprofil und Aufga- benkontext“ (profile) und den Grund der Ausgabe (reason). Darüber hinaus beinhaltet ein Thema die Daten der Vorträge, das Datum des offiziellen Be- ginns der Abschlussarbeit sowie das geplante Abgabedatum. Falls der Erstgutachter das The- ma nicht genehmigt hat, wird seine Begründung für diese Entscheidung ebenfalls beim Thema abgelegt (rejectReason). Jedem Thema sind vier Personen zugeordnet: Ein Student, der das Thema bearbeitet, ein Betreuer und Erst- und Zweitgutachter. Außerdem kann ein Thema zugeordnet sein. lastName firstName telephone title emailAddress studentId salutation ID Person roomNumber profile title id titleType name watPassword conditions n 1 1 n rejectReason betreut ist User watUsername plannedDeliveryDate passwd n 2 intermediatePresentationDate Subject prüft finalPresentationDate n 1 appliableDate bearbeitet startDate criteria 1 1 hat zum Thema ID background task ID Thesis type state ratingSecondApprover ratingCommentScondApprover ratingFirstApprover ratingCommentFirstApprover ratingCommentTutor Abbildung 7: grundlegendes Datenbankschema Abschlussarbeiten (Thesis) beinhalten den aktuellen Status der Arbeit (noch nicht geneh- migt, zurückgewiesen, zu vergeben, vergeben, abgegeben, beendet oder abgebrochen), den letztendlich angemeldeten Typ der Arbeit (Bachelor-, Master-, Studien- oder Diplomarbeit) sowie die Bewertung von Erst- und Zweitgutachter als Kommentar und Note und die Bewer- tung vom Betreuer als Kommentar. Eine Abschlussarbeit ist einem Thema fest zugeordnet. 19\n20. 3.1.5.1 Schwächen des Datenbankschemas Die größte Schwäche des Entwurfs ist die Aufteilung der Attribute zwischen Abschlussarbeit und Thema. Ein Thema ohne zugeordnete Arbeit macht praktisch keinen Sinn, da der Student, der die Arbeit bearbeitet dem Thema zugeordnet wird und nicht der Arbeit. Umfangreiche Themen, die von zwei Studenten bearbeitet werden, sind so nicht darstellbar. Auch wird der Status der Arbeit nicht am Thema gespeichert, sondern bei der Abschlussarbeit, was dazu führt, dass am Thema alleine nicht feststellbar ist, ob es schon vom Erstprüfer genehmigt wur- de oder nicht, da diese Information im Status-Attribut abgelegt wird. Ein weiteres Problem ist, dass in dem Schema keine Rollen oder Gruppen von Personen mo- delliert werden können. So können Studenten, Mitarbeiter, Prüfer und Sekretariat nicht unter- schieden werden. Am deutlichsten wirkt sich das beim Sekretariat aus, da es direkt mit dem System interagieren muss (Erfassen des Zweitgutachtens), aus dem Schema aber nicht her- vorgeht, welche Personen zum Sekretariat gehören. 3.2 BPEL Der BPEL-Entwurf ist sehr umfangreich, da die BPEL-Plattform im Vergleich zur SOA-Me Plattform viele der geforderten Funktionen nicht bietet. Im Folgenden wird, nach der Vorstel- lung der allgemeinen Prozess-Architektur, auf die Entwürfe dieser Funktionen eingegangen. 3.2.1 Prozess-Architektur Der BPEL-Entwurf unterteilt den Prozess aus 3.1.3 hierarchisch in einen Hauptprozess und 12 Unterprozesse die vom Hauptprozess aufgerufen werden (siehe Abbildung 8). Jeder dieser Unterprozesse erledigt nur eine atomar ablaufende Funktion wie das Erstellen eines Themas oder Planen eines Vortrags. Abbildung 8: Prozess-Architektur des BPEL-Entwurfes [Sal07] Diese Architektur ähnelt sehr dem Entwurfsmuster Fassade (Facade-Pattern) aus [GHJV95], welches die Komplexität eines Teilsystems (hier die Unterprozesse) hinter einem einzelnen Modul (hier der Hauptprozess) versteckt. Im Gegensatz zu diesem Entwurfsmuster beschränkt sich der Hauptprozess nicht nur darauf, die von den Teilprozessen angebotenen Operationen 20\n21. an den Client weiterzureichen. Jeder gestartete Hauptprozess verwaltet genau eine Abschluss- arbeit. Er sorgt dafür, dass nur solche Operationen nach außen verfügbar sind, die auf die Ab- schlussarbeit in ihrem gegenwärtigen Status zugelassen sind. Der Hauptprozess bildet also den in 3.1.3 vorgestellten Ablauf ab. So ist sichergestellt, das der Client zum Beispiel nach dem Anmelden einer Arbeit dessen Thema nicht mehr zurückweisen kann. Die Unterprozesse sind alle sehr ähnlich aufgebaut. Zunächst überprüfen sie, ob der Benutzer, der für den Aufruf verantwortlich ist, zu diesem Aufruf autorisiert ist (näheres dazu in Kapitel 3.2.2). Danach laden sie alle für die Operation nötigen Daten aus der Datenbank nach und führen anschließend die für die Operationen benötigten Aktivitäten und Webservice aus. 3.2.2 Sicherheitssystem Der BPEL-Entwurf sieht ein kompliziertes Sicherheitssystem vor. Jeder Webservice-Aufruf eines Prozesses oder Webservices muss von einem zentralen Authentifizierungs-Webservice autorisiert werden. Dieser Webservice ist mit dem Benutzernamen und dem Passwort eines Superusers geschützt. Diese Daten werden in einem OASIS-Web-Services-Security-Header übertragen. 3.2.2.1 Ablauf Den Ablauf der Authentifizierung zeigt Abbildung 9. Zu Beginn loggt sich der Benutzer beim Client ein. Dieser ruft den Authentifizierungs-Webservice mit dem vom Benutzer eingegebe- nen Benutzernamen (u) und Passwort (pw als MD5-Hash) sowie einem Security-Header auf, der den Benutzernamen (su) und das Passwort (spw) des Superusers enthält. Der Superuser ist dem Benutzer nicht bekannt. Sind Benutzername und Passwort des Benutzers korrekt antwor- tet der Authentifizierungs-Webservice positiv. :Client Thesis:Process :Webservice :AuthService authUser(su, spw, u,pw) User someAction(u, pw) new(su, spw, u) SomeAction:Process authProcess(su, spw, u, processId) Person call(su, spw, u) authWebservice(su, spw, u, webserviceId) boolean destroy() Abbildung 9: Ablauf der Authentifizierung durch das Sicherheitssystem des BPEL-Entwurfs Nun kann der Client den Hauptprozess (siehe 3.2.1) aufrufen. Dieser Aufruf enthält nun Be- nutzernamen und Passwort des Benutzers im Security-Header. Der Hauptprozess extrahiert den Benutzernamen aus dem Security-Header und ruft mit diesem und den Benutzerdaten des Superusers, den für die vom Client angeforderte Funktion nötigen Unterprozess auf. Dieser prüft erst einmal durch eine Anfrage an den Authentifizierungs-Webservice, die Benutzerna- me, Prozessidentifikation und im Security-Header die Benutzerdaten des Superusers enthält, ob der Benutzer zur Ausführung des Prozesses berechtigt ist. Ist er es, wird daraufhin der nö- tige Webservice aufgerufen, wieder mit den Daten des Superusers und dem Benutzernamen. Dieser prüft die Berechtigung analog zum Unterprozess und fährt dann normal fort. 21\n22. Nach vollendetem Webserviceaufruf terminiert der Unterprozess nach einer Meldung an den Hauptprozess. Dieses Vorgehen ist unnötig kompliziert. Es würde vollkommen ausreichen, wenn der Haupt- prozess die Legitimation des Benutzers überprüfen würde. 3.2.2.2 Datenbankerweiterungen Client, Unterprozess und Webservice prüfen also bei jedem Aufruf die Berechtigungen des Benutzers. Die Rechte eines Benutzers werden dabei in der Datenbank gespeichert. Dazu muss das Schema aus 3.1.5 um zwei Entitäten (siehe Abbildung 10) erweitert werden: Dem Process und dem Webservice. id name watPassword User watUsername passwd n m n m darf nutzen darf nutzen id id Process Webservice descript descript Abbildung 10: Änderungen des Grundschemas für BPEL Beide Entitäten sind sehr ähnlich, sie besitzen jeweils das Attribut id und descript und identi- fizieren jeweils einen Unterprozess bzw. Webservice, wobei descript eine Beschreibung dar- stellt. Sie stehen auch in derselben Beziehung zu Benutzern (User), diese dürfen beliebig viele Webservices bzw. Prozesse nutzen. Umgekehrt dürfen Webservices und Prozesse auch von beliebig vielen Benutzern benutzt werden. Durch diese Gemeinsamkeiten fällt auf, dass diese Erweiterung etwas vereinfacht werden könnte, indem man Webservices und Prozesse zu einer Entität zusammenfasst. 3.2.2.3 Schwachstellen Obwohl das Sicherheitssystem auf den ersten Blick sehr durchdacht scheint, weißt es doch einige Sicherheitsmängel auf: • Die Datenübertragung erfolgt unverschlüsselt • Die Hashfunktion wird auf eine relativ unsichere Weise verwandt Da die Übertragung der Anfragen an den Authentifizierungs-Webservice unverschlüsselt er- folgt, kann ein Angreifer die Kommunikation mit relativ einfachen Mitteln im Klartext mitle- sen. Dabei wird bei der Anfrage vom Client an den Authentifizierungs-Webservice zwecks 22\n23. Authentifizierung des Benutzers das Passwort nicht im Security-Header sondern als direkten MD5-Hash (das heißt, dass der Wert direkt durch Anwenden der Hashfunktion auf das Pass- wort erfolgt) übergeben. In [Oec03] wurde eine Datenstruktur, die so genannte Rainbow-Table, vorgestellt, die eine schnelle, probabilistische Entschlüsselung von Hash-Werten ermöglicht. Somit ist das ent- schlüsseln der gehashten Passwörter unter bestimmten Vorraussetzung (Vorhandensein einer geeigneten Rainbow-Table) effizient möglich. Einem Internetdienst, der auf diesem Konzept basieret, war es innerhalb von zwei Stunden möglich das Passwort des Superusers (alphanu- merisches Passwort aus 6 Zeichen) zu entschlüsseln. 3.2.3 Gruppenverwaltung Der BPEL-Entwurf sieht keine explizite Gruppenverwaltung vor. Es wird aufgrund von schon vorhandenen Daten auf die Zugehörigkeiten der einzelnen Personen geschlossen. Trat eine Person z.B. schon einmal als Bearbeiter eines Themas auf, so wird sie vom PersonManager Service (einer der Webservices, der die Datenbank abstrahiert) als Student geführt. Personen die Arbeiten betreuen oder prüfen werden als Mitarbeiter geführt. Dabei geht der Entwurf von der Annahme aus, dass jede Person, die in die Datenbank eingetragen wird, automatisch zu einer Gruppe gehört. Es wird also davon ausgegangen, dass eine Person unmittelbar nachdem sie in das System eingetragen wurde, in irgendeiner Weise (z.B. als Prüfer, Betreuer oder Stu- dent) einer Abschlussarbeit zugeordnet wird. Auch ist nicht vorgesehen, dass Personen in mehreren Gruppen Mitglied sind, oder diese wechseln. Der Datensatz für einen neuen Mitar- beiter, der schon dem System als Student bekannt war, muss erneut angelegt werden, anstatt die Daten aus dem bestehenden Datensatz weiter zu verwenden, denn der vorhandene Daten- satz gilt implizit als Student, der z.B. nicht berechtigt ist Abschlussarbeiten zu betreuen. Das größte Problem dieses Ansatzes ist jedoch, dass Personen, die in den vom Prozess benö- tigten Daten nicht vorkommen (in diesem Fall die Mitarbeiter des Sekretariats) keiner Gruppe zugeordnet werden können. In der Implementierung des BPEL-Entwurfs führt das dazu, dass die Namen der Sekretariats-Mitarbeiter als magische Konstanten im Quellcode der Webservi- ces auftauchen. 3.2.4 Aufgabenverwaltung Thesis:Process DB:Database ToDoManager:Webservice :Client UPDATE Subject SET State... getTasks() SELECT Subject, ... FROM Thesis result SELECT State, ... FROM Subject result tasks Abbildung 11: Ablauf der Aufgabenverwaltung Der BPEL-Entwurf sieht einen extra Webservice für das Verwalten von Aufgaben vor: Den ToDo-Manager. Da der BPEL-Prozess dem Client nicht mitteilen kann, dass eine Aufgabe ansteht, muss dies der Client selbst tun, indem er periodisch den ToDo-Manager aufruft (siehe Abbildung 11). Der ToDo-Manager fragt daraufhin die Datenbank ab und leitet aus dem Sta- te-Attribute der Thesis-Entität (siehe Abbildung 7) sowie den Attributen der Subject-Entität die aktuelle Position im Thesis-Process ab. Damit stehen die zu erledigenden Aufgaben fest 23\n24. und werden, sofern sie den am Client eingeloggtem Benutzer betreffen, an den Client zurück- gegeben. Dieses Konzept hat einen Nachteil: Der Fortschritt eines Prozesses wird redundant an zwei Stellen gleichzeitig gespeichert. Einmal explizit über die Datenbank und einmal implizit über die aktuelle Position im Prozess, die von der Persistenzschicht des BPEL-Servers gespeichert wird. Für die korrekte Funktion des Systems sind beide Speicherstellen nötig, denn folgende zwei Fehlerszenarien sind denkbar: Falls der Eintrag über die Abschlussarbeit, die der Prozess verwaltet, in der Datenbank verlo- ren geht (Fehler im Datenbank-Management-System), kann der Client nicht mehr feststellen, welche Aufgaben für diesen Prozess noch ausgeführt werden müssen. Da der Prozess, wie in 3.2.1 vorgestellt, notfalls unendlich lange auf einen Aufruf eines geöffneten Webservice-Ports wartet, kann er nicht mehr terminiert werden. Die Arbeit ist verloren, obwohl der Prozess in seinen Variablen noch alle Daten bereithält. Falls der Prozess, während er auf Aktionen des Clients wartet, unerwartet terminiert wird (Fehler im BPEL-Server speziell in dessen Persistenzschicht), sind alle Daten über der zu ihm gehörigen Arbeit zwar noch in der Datenbank vorhanden und der ToDo-Manager kann die noch zu erledigenden Aufgaben korrekt bestimmen, aber der Aufruf des Prozesses durch den Client misslingt, da der zugehörige Webservice-Port geschlossen wurde. Damit ist die Arbeit ebenfalls verloren. B C A D F E Abbildung 12: Design des Clients des BPEL-Entwurfs 24\n25. 3.2.5 Benutzeroberfläche Die Benutzeroberfläche des Clients des BPEL-Entwurfs ist wie in Abbildung 12 gezeigt auf- gebaut. Die ersten Anlaufstellen für den Benutzer ist das Menü (Datei), mit Hilfe dessen er neue Themen anlegen und sich laufende Arbeiten anzeigen lassen kann, und die ToDo-Liste (A) in der die noch ausstehenden Aufgaben angezeigt werden. Das Anzeigen der Arbeiten zu Infor- mationszwecken geschieht im Anzeigebereich (B) tabellarisch in mehreren Registerkarten. Aktive Aufgaben für den Benutzer (neues Thema erstellen; Aufgabe aus ToDo-Liste berabei- ten) werden in einem neuen Fenster (D) angezeigt, welches in einen Arbeitsbereich (E) und das Experience Forum (F) unterteilt ist. Alle Aktionen des Benutzers, die mit der Aufgabe direkt zu tun haben geschehen im Aufgabenbereich. Im Experience Forum hat der Benutzer die Möglichkeit seine Erfahrungen zu der aktuellen Aufgabe anzugeben und Seiten des Hand- buchs aufzurufen. Das Experience Forum ist noch mal im Hauptfenster (C) vorhanden. 3.3 SOA-Me Der SOA-Me Entwurf ist nicht so umfangreich wie der BPEL-Entwurf. Dies liegt daran, dass die SOA-Me Plattform viele der in 3.1 genannten Anforderungen schon erfüllt. Funktionen wie das Experience Forum oder eine Aufgaben- und Gruppenverwaltung existieren bereits und müssen nicht wie bei BPEL zusätzlich entworfen werden. Auch ein Sicherheitssystem ist bereits vorhanden, wenngleich dieses keine Autorisierungsme- chanismen für das Ausführen von Webservices beinhaltet. Das Problem mit diesem System ist nur, dass es die Benutzerdaten nicht in einer relationalen Datenbank sondern in einer XML- basierten Konfigurationsdatei ablegt. Damit müssen die Benutzerdaten einmal in dieser Kon- figurationsdatei und (zumindest der Benutzername) einmal in der Datenbank abgelegt werden, damit der Prozess des SOA-Me-Entwurfes den in der Datenbank gespeicherten Personen Be- nutzernamen zuordnen kann. Es ist also im Betrieb darauf zu achten, dass Datenbank und Konfigurationsdateien synchron sind. Wünschenswert wäre eine erweiterte Schnittstelle für den SOA-Me Server, so dass dieser die Benutzerdaten aus einer Datenbank verwenden kann. Diese Schnittstelle wurde in dieser Arbeit aus Zeitgründen weder entworfen noch implemen- tiert. Am Rande sei noch erwähnt, dass das Sicherheitssystem der SOA-Me Pattform wie das Sicherheitssystem des BPEL-Entwurfs unverschlüsselte Verbindungen und die einfache An- wendung einer Hashfunktion nutzen, so dass ein Angriff wie er in 3.2.2.3 vorgestellt wurde auch bei SOA-Me funktionieren würde. Auch der SOA-Me Entwurf sieht eine Erweiterung des Datenbankschemas (siehe Abbildung 7) vor: Um auch externe Arbeiten unterstützen zu können, die nach 3.1.3 vorgesehen sind aber vom BPEL-Entwurf nicht berücksichtigt werden, werden die Entitäten Thesis und Sub- ject je um ein Attribut erweitert. Subject erhält zusätzlich das Attribut startPresentationDate, dass das Datum des Startvortrags für externe Arbeiten enthält; Thesis erhält das zusätzliche Attribut internally, das als boolscher Wert anzeigt, ob die Abschlussarbeit als externe oder interne Arbeit läuft. 3.3.1 Prozess-Aufbau Der SOA-Me-Entwurf sieht drei Prozesse vor. Ein Prozess zum Anlegen und Verwalten einer Abschlussarbeit (Hauptprozess), ein Prozess zum Fortsetzen einer durch einen Serverfehler unterbrochenen Abschlussarbeitsverwaltung (Persistenzprozess) und ein Hilfsprozess zum Anlegen neuer Personen. Die ersten beiden Prozesse verwenden dabei große Prozessteile ge- meinsam. Im Gegensatz zum BPEL-Entwurf wird der Prozess aus 3.1.3 nicht in mehrere Teilprozesse aufgeteilt sondern als ganzes modelliert (Hauptteil). Dies hat mehrere Gründe: Zum einen 25\n26. erlaubt es die SOA-Me Plattform schlicht nicht aus einem Prozess einen anderen Prozess auf- zurufen (die entsprechenden Elemente, Prozesswegweiser genannt, sind in der EPK-Notation zwar vorhanden, werden aber von der SOA-Me Plattform nicht unterstützt), zum anderen wä- re damit auch die Implementierung der expliziten Persistenz (siehe 3.3.2) und der einheitli- chen Fehlerbehandlung erschwert worden. Persistenzprozess Hilfsprozess Hauptprozess Persistenz Hauptteil Fehlerbehandlung Personenverwaltung Abbildung 13: konzeptioneller Aufbau der verschiedenen Prozesse Wie in Abbildung 13 zu sehen, besteht der Hauptprozess aus zwei Teilen. Der Hauptteil des Prozesses implementiert alle funktionalen Anforderungen an die Abschlussarbeitsverwaltung. Im normalen fehler- und abbruchsfreien Prozessablauf wird dieser Teil nie verlassen. Ein weiterer Teil ist für die Fehlerbehandlung zuständig. Kommt es bei einem Webserviceauf- ruf zu einem Fehler sorgt dieser Teil dafür, dass der Benutzer über den Fehler informiert und der Prozess kontrolliert beendet werden kann. Der Persistenzprozess umfasst alle Teile des Hauptprozesses (bis auf den Startpunkt) und er- weitert ihn um einen für die Persistenz zuständigen Teil. Hier wird wie in 3.3.2 beschrieben beim Fortsetzen des Prozesses an die entsprechende Stelle gesprungen. Trotz des hohen Überdeckungsgrades des Haupt- und Persistenzprozesses können beide nicht in einem Prozess zusammengeführt werden, da das SOA-Me-System nur einen Startereignis pro Prozess zulässt. Der Hilfsprozess ist sehr einfach aufgebaut. Er besteht nur aus einer Komponente, die sich um das Anlegen der Personen kümmert. 3.3.2 Persistenz Ein großes Problem beim SOA-Me System ist die fehlende Persistenz: Das System ist nicht in der Lage einen laufenden Prozess zu suspendieren, seinen Status zu speichern und später fort- zusetzen. Dies bedeutet konkret für das Abschlussarbeit-Verwaltungssystem, dass der SOA- Me Server nicht deaktiviert werden oder ausfallen kann, ohne dass alle Daten zu den laufen- den Abschlussarbeiten verloren gehen. Abbildung 14: Simpler, um Persistenz erweiterter, Prozess 26\n27. Eine Lösung wäre eine Persistenzschicht in den SOA-Me Server einzubauen, diese könnte jeden vom Server gemachten Schritt protokollieren sowie die zum Prozess gehörenden Daten (Prozessdokument) speichern. Mit diesen Daten wäre ein Fortsetzen des Prozesses beim Ser- verstart möglich. Diese Persistenzschicht wäre aber zu komplex, um sie im Umfang dieser Arbeit zu entwickeln. Daher wurde eine andere Lösung verfolgt, die keine Änderung an dem SOA-Me Server erfor- dert: Der Prozess kümmert sich selber um das Speichern seiner Daten. Dazu sind prinzipiell zwei Webservices nötig (vgl. Abbildung 14): Ein Webservice speichert alle relevanten Daten aus dem Prozessdokument in eine Datenbank, der zweite Webservice liest diese Daten aus der Datenbank aus und rekonstruiert daraus das Prozessdokument. Das Speichern des Prozessdokumentes ist dabei relativ unproblematisch: In den bestehenden Prozess muss nur an geeigneten Stellen der entsprechende Webservice gestartet werden. Das Wiederherstellen des Prozesses erfordert aber nicht nur die Rekonstruktion des Prozess- dokumentes, sondern auch die Bestimmung des vom Server zuletzt ausgeführten Schrittes, der Position im Prozess. Dieses kann aber im Fall des Abschlussarbeits-Verwaltungssystems durch eine Analyse des Prozessdokuments geschehen, da der aktuelle Status („zu genehmi- gen“, „zu vergeben“, „abgegeben“ usw.) dort vermerkt ist. Steht die Position fest, kann an die entsprechende Stelle in den Prozess „eingesprungen wer- den“, und der Prozess wird von da an fortgesetzt, als wäre er nie unterbrochen worden. Nachteilig an dieser Lösung ist allerdings, dass der Prozess durch die zahlreichen Einsprünge schnell relativ unübersichtlich wird; besonders dann, wenn eine parallele Prozessabarbeitung erfolgt, da für jeden Prozesszweig festgestellt werden muss, in welchem Zustand er sich be- fand. Auch muss das Fortsetzen eines Prozesses manuell und für jeden Prozess einzeln ge- schehen und kann nicht automatisch beim Start des Servers erfolgen. Außerdem werden die Informationen über die Abschlussarbeit redundant im laufenden Pro- zess (genauer im Prozessdokument) und in der Datenbank gespeichert. In den beiden Fehler- szenarien aus 3.2.4 (Fehler in der Datenbank, Fehler im Server) ist das unproblematisch. Im Gegenteil: Dadurch, dass entweder der Prozess oder die Datenbank alle Informationen besitzt, kann der Prozess normal weiterlaufen bzw. manuell wieder zum Laufen gebracht werden. Allerdings kann nicht ausgeschlossen werden, dass ein korrekt laufender Prozess manuell erneut „fortgesetzt“ wird. Dies führt dazu, dass zwei Prozesse um dieselbe Abschlussarbeit konkurrieren, was zu unvorhersehbaren Verhalten der beiden Prozesse führt. Insbesondere ist nicht klar, welcher Prozess welche Daten in die Datenbank geschrieben hat. 27\n28. 4 Implementierung und Entwicklung Die Implementierung war in drei Inkremente aufgeteilt, wobei jedes Inkrement ca. zwei Wo- chen Entwicklungszeit in Anspruch nahm. Im ersten Inkrement wurden die Datenbankweb- services (4.2.1), der Hilfsprozess und erste Teile des Hauptprozesses, darunter die wesentli- chen Teile für die Persistenz, entwickelt. Die Entwicklung des Prozesses wurde dann im zwei- ten Inkrement beendet. Das dritte Inkrement umfasste die Entwicklung sowie das Einbinden der Webservices für die externen Systeme Drucken, E-Mail und WAT-Service. Bei der Implementierung musste darauf geachtet werden, dass der entwickelte Quellcode zu dem Quellcode, der aus dem BPEL-Entwurf hervorgegangen war, vergleichbar bleibt. So wurde schon in der Entwurfsphase möglichst viel vom BPEL-Entwurf übernommen (wie z.B. das Datenbankschema, siehe 3.1.5). Für die Implementierung bedeutete das möglichst diesel- ben Frameworks zu verwenden. 4.1 Prozesse Wie schon in 3.3.1 erläutert gilt es drei Prozesse zu implementieren von denen zwei, der Haupt- und Persistenzprozess, sehr große Teile gemeinsam haben. Um den Aufwand gering zu halten wurden diese beiden Prozesse zunächst in einem Prozess zusammengefasst. Dabei wurden die beiden verschiedenen Startereignisse durch eine Fallunterscheidung miteinander verbunden, so dass beim Start des Prozesses zunächst eine Abfrage erschien, welcher der bei- den Teil-Prozesse gestartet werden sollte. Nach Vollendung des Prozesses wurde dieser zweimal gespeichert und in jeder Kopie die Abfrage und alle von dem jeweiligen Teil nicht benötigten Elemente entfernt. Der dritte Prozess (Hilfsprozess) dient zum Anlegen von neuen Personen in der Datenbank und ist sehr einfach aufgebaut. Nach dem Start wird der Benutzer nach den Personendaten und danach gefragt, ob diese Person Zugang zum System haben soll. Falls ja, wird zusätzlich noch nach den Benutzerdaten gefragt, danach werden die Daten in der Datenbank gespeichert. Im Folgenden wird ausschließlich der Prozess der aus dem Zusammenschluss von Haupt- und Persistenzprozess hervorgegangen ist behandelt. 4.1.1 Aufbau des Prozessdokuments Das Prozessdokument ist das Herzstück des Prozesses. In diesem XML-Dokument werden alle für den Prozess relevanten Daten abgelegt. Die XML-Elemente lehnen sich sehr stark an das Datenbankschema an, mussten aber für ei- nige Funktionen aufgeteilt werden, da während des Prozessablaufs Daten aus dem Prozessdo- kument nur gelesen oder angehängt aber nicht verändert werden können. Dieses Anhängen erfolgt bei jedem UI-Element einer Benutzerinteraktion. So ist jedem UI-Element mindestens ein XML-Element zugeordnet. Ein Beispiel für die Gestalt des Prozessdokumentes ist im Anhang auf Seite 53 dargestellt. 4.1.2 Hauptteil Die Implementierung des Hauptteils, also des Geschäftsprozesses, konnte relativ einfach aus den Anforderungen und der Darstellung in Abbildung 6 abgeleitet werden. Dieses Vorgehen soll anhand der Aktion „Betreuer plant Endvortrag“ erläutert werden. 28\n29. Laut Anforderungen soll in dieser Aktivität der Betreuer dazu aufgefordert werden einen Termin (Datum und Uhrzeit) für den Endvortrag zu planen. Dieser Termin darf nicht nach dem Abgabetermin der Abschlussarbeit liegen. Nachdem der Termin geplant ist, soll dieser per Mail und per WAT-System bekannt gegeben werden. Abbildung 15: Planen des Endvortrags Die Gestalt der EPK (siehe Abbildung 15) folgt direkt aus den Anforderungen. Eine Benut- zerinteraktion informiert über ein Display-Element den Benutzer und gibt ihm mit dem Edit- Element eine Möglichkeit einen Termin einzugeben. Die dem Edit-Element zugeordneten Stylesheets (nicht im Bild) sorgen dafür, dass die vom Benutzer angegebenen Daten in das Format des Prozessdokuments konvertiert werden. Anschließend folgt durch ein XOR-Split und den Bedingungen an den Events die Abfrage, ob der Termin gültig ist, sich also nach dem Abgabetermin befindet. Falls der Termin nicht gültig ist, wird nach dem XOR-Join fortgefahren und damit die Benut- zerinteraktion erneut aufgerufen. Die Stylesheets, die zu dem Display-Element gehören, sor- gen in diesem Fall dafür, dass der Benutzer eine entsprechende Nachricht erhält. Falls der Termin gültig ist, werden die beiden Webservices zum Senden von Nachrichten via E-Mails und WAT-System parallel gestartet. Die Stylesheets, die zu diesen beiden Webservi- ceaufrufen gehören, sorgen dafür, dass die für den Versand nötigen Daten über die Ab- schlussarbeit und die Empfänger aus dem Prozessdokument extrahiert und in das vom Web- service erwartete Format konvertiert werden. An diesem Beispiel lassen sich auch drei Probleme zeigen, die bei der Implementierung auf- traten. So unterstützte der SOA-Me Client zunächst das XML-Standardformat xsd:datetime nicht, das Datum und Uhrzeit enthält. Diese Formatierung musste erst noch in dem SOA-Me Client eingebaut werden. Das zweite Problem war, dass der SOA-Me Kompositionseditor keine „<“ und „>“ Zeichen in den Bedingungen an den Events unterstützte, die aber für die Abbfrage, ob der Termin für den Endvortrag gültig ist, benötigt wurde. So musste die Berechnung der Bedingung im Stylesheet 29\n30. des Edit-Elements erfolgen, so dass an den Events nur abgefragt werden musste, ob die zuvor berechnete Bedingung wahr oder falsch war. Das dritte Problem trat bei dem Aufruf des Webservices für das WAT-System auf. Dieser Webservice verwendete eine über SSL gesicherte Verbindung, die der SOA-Me Server nicht unterstützte. Das Problem konnte durch eine Anpassung des SOA-Me Servers gelöst werden. 4.1.3 Persistenz Die Persistenz wurde nach dem Konzept in 3.3.2 eingebaut. Dabei wurden die Webservice- aufrufe zum Speichern des aktuellen Prozessdokumentes immer vor die nächste Benutzerin- teraktion gesetzt. Diesem Aufruf folgt, nach dem obligatorischen Event, immer ein XOR-Join als Einsprungpunkt für das Fortsetzen des Prozesses. Beim Beispiel des Endvortrages erfolgte das Speichern vor dem XOR-Join, der gleichzeitig als Einsprungpunkt dient, und nach dem AND-Join. Zum Laden des Prozessdokumentes waren mehrere Webserviceaufrufe nötig. Ein Webservi- ceaufruf für das Laden der Informationen über die Abschlussarbeit und je ein Aufruf für das Nachladen der Benutzerdaten zu dem in der Abschlussarbeit genannten Betreuer und Erstprü- fer. Bei dem Einspringen in den Prozess gab es allerdings ein Problem mit der EPK-Notation: Diese erlaubt keine aufeinander folgenden Events und damit keine verfeinernden Bedingun- gen. Dies war aber beim Einspringen in den parallelen Teil am Ende des Prozesses, wo Be- treuer und Prüfer gleichzeitig ihre Bewertungen abgeben können, nötig. An dieser Stelle musste erst abgefragt werden, ob sich der Prozess zum Zeitpunkt des Abbruchs in dieser pa- rallelen Ausführung befand und falls dies der Fall war für jeden parallelen Prozesszweig ob dieser schon ausgeführt wurde (also ob derjenige Betreuer oder Prüfer schon bewertet hatte) oder nicht. Das Problem musste durch das Deaktivieren der Überprüfungsroutine des Editors für diese EPK-Eigenschaft gelöst werden. Besser wäre eine leere Funktion als neues EPK- Element einzuführen um die aufeinander folgenden Events zu trennen. 4.1.4 Fehlerbehandlung Abbildung 16: zentrale Fehlerbehandlung Die Fehlerbehandlung dient dazu fehlgeschlagene Webserviceaufrufe zu erkennen und zu behandeln. Diese Art von Fehler wird vom SOA-Me Server toleriert und nur durch einen kur- zen Eintrag ins Prozessdokument angezeigt. Bei allen anderen Arten von Fehlern wird der Prozess umgehend vom SOA-Me Server beendet. 30\n31. Nach jedem Webservice-Aufruf muss also eine Entscheidung getroffen werden, ob dieser Aufruf erfolg hatte oder nicht. Dies wird durch ein einfaches XOR-Split realisiert, dessen zu- geordnete Bedingungen grade auf die vom Server getätigten Eintragungen reagieren. Tritt ein Fehler auf, so wird dadurch der normale Prozessablauf unterbrochen und dem Benutzer eine Aufgabe, die eine Fehlermeldung enthält, gezeigt. Um nicht für jeden Webservice eine eigene Benutzerinteraktion für die Fehlermeldung erstel- len zu müssen werden alle Fehlerabzweigungen durch ein XOR-Join auf eine zentrale Benut- zerinteraktion geführt, wie in Abbildung 16 zu sehen. Deren Stylesheet kann durch Auswerten des Prozessdokuments die exakte Fehlerstelle (ID des Webserviceaufrufes) angeben. Der Be- nutzer wird aufgefordert diese Information an den Administrator des Systems weiterzuleiten. Bis das Problem behoben ist wird der Prozess unterbrochen, kann dann aber über den Per- sistenzprozess kurz vor Eintreten des Fehlers fortgesetzt werden. 4.1.5 Benutzeroberfläche Zu der Benutzeroberfläche ist nicht viel zu sagen. Die meisten Design-Elemente wie ToDo- Liste, Experienceforum usw. sind fest im SOA-Me Client eingebaut. Beim Design der Dis- play-Elemente für die Anzeige der Informationen wurde sich an den Aushängen des Fachge- biets Software Engineering orientiert, da diese den Benutzern bekannt seien und so wenig Umstellung bedeuten sollte. Im Kopf dieser Aushänge wird immer der aktuelle Status (zu vergeben, zu genehmigen usw.) und der Titel der Arbeit angezeigt, so dass dem Benutzer auf einen Blick klar wird, was zu tun ist und um welche Abschlussarbeit es sich genau handelt. 4.2 Webservices Client:Client Server:AxisServlet new() AxisStub:SomeClass someMethod() SOAP Request new() Impl:SomeClass someMethod() return SOAP Response return destroy() via network SOAP Request destroy() return SOAP Response return Abbildung 17: Funktionsweise des AXIS-Frameworks Alle Webservices benutzen das Java-Framework AXIS (Apache eXtensible Interaction Sys- tem) [Axi]. Es erleichtert das Erstellen und Aufrufen von SOAP-basierten Werbservices. Hier ist vor allem die Möglichkeit des Erstellens von Webservices gefragt, aufgerufen werden die- se vom SOA-Me Server und damit aus dem Prozess. Axis erlaubt in Verbindung mit einem Servlet-Container wie Apache Tomcat eine nahezu transparente Kommunikation auf Java- 31\n32. Ebene zwischen zwei über das Internet verbundene Systeme. Der Client kann den vom Server angebotenen Dienst wie ein lokales Objekt benutzen. Dabei werden die Methodenaufrufe von AXIS auf Clientseite in SOAP-Messages verpackt, verschickt und auf Serverseite an die imp- lementierende Klasse weitergereicht. Ein mächtiger Bestandteil des AXIS-Frameworks ist das Tool WSDL2Java. Es erstellt zu einem gegebenen WSDL-Dokument die Javaquellen für die Client und die Serverseite. Somit erleichtert sich das Erstellen eines Webservices enorm, es muss nur die WSDL-Datei ge- schrieben und die von AXIS daraus erstellte Skelettklasse mit Funktionalität gefüllt werden. Die Stubs, die AXIS für die Clientseite generiert, können für Testfälle genutzt werden. Alle Webservices verwenden einen gemeinsamen Stamm von Klassen, die der Datenhaltung dienen. Diese Klassen wurden durch das AXIS-Framework aus einem XML Schema erzeugt, das Bestandteil aller WSDL-Dateien ist. So wird redundanter Code vermieden, da beispiels- weise die Klasse für die Abschlussarbeiten (Thesis) sowohl von den Datenbankservices als auch von dem Druckwebservice benötigt wird. Die Struktur des Projektes, das die Webservices beinhaltet, ist so gewählt, dass alle Webser- vices gemeinsam in einem Webarchiv ausgeliefert werden können. 4.2.1 Datenbankwebservices Es wurden insgesamt die drei Webservices UserManager, ThesisManager und PersonManager für die Datenbankanbindung implementiert, je einen für eine der drei Entitäten Thesis, Person und User aus dem Datenbankschema (siehe 3.1.5). Dabei werden die Datensätze aus der Da- tenbank in Objekte überführt (Object-Relational-Mapping). Die Schnittstellen der Webservi- ces sind einander recht ähnlich. So existiert eine Operation zum Ändern eines bestehenden Objekts (ist dieses nicht vorhanden, so wird es erstellt) und zum Auflisten aller verfügbaren Objekte. Zum Zugriff auf ein bestimmtes Objektes bieten Thesis- und PersonManager eine Operation an, die das Objekt aufgrund seiner ID zurückgibt. Der UserManager verhält sich etwas anders. Da der Benutzername eindeutig sein muss wird dieser als identifizierendes Attribut für den Zugriff verwand. Außerdem existiert eine Opera- tion, die den User zu einer gegebenen Person (über dessen ID) findet. Diese Operation musste eingeführt werden, da dem Prozess durch das Laden einer Abschlussarbeit (Thesis-Objekt) zunächst nur die Personen bekannt sind. Im Fall des Betreuers und Erstprüfers ist aber auch der Username von Bedeutung. Da diese Operation nur ein User-Objekt zurückgibt, wird da- durch leider das Konzept der Aliase untergraben. Damit ist es einer Person nicht mehr mög- lich sich über verschiedene Benutzernamen am System anzumelden. Wie auch bei der BPEL-Implementation verwenden die Datenbankwebservices das Hiberna- te-Framework [Hib] für das Object-Relational-Mapping. Wie oben kurz angerissen sorgt die- ses Framework für die Übersetzung von Objekten in Datensätze einer relationalen Datenbank. Diese Übersetzung wird über Mapping-Dateien realisiert, in denen zum Beispiel festgelegt wird, in welcher Tabelle Objekte einer Klasse abgelegt werden, welche Tabellenspalten den einzelnen Attributen entsprechen und mit welchen anderen Objekten sie in Beziehung stehen. Diese Mapping-Dateien ließen sich mit einem Tool des Hibernate-Frameworks aus dem Da- tenbankschema erzeugen und auf die durch das AXIS-Framework erzeugten Klassen zur Da- tenhaltung anwenden. Zum Management der Datenbankverbindung wurde eine Hilfsklasse geschrieben, denn da das Hibernate-Framework nicht vollständig threadsicher ist, kann es beim gleichzeitigen Verwen- den derselben Datenbankverbindung durch mehrere Threads, wie es vorkommt, wenn zwei Prozesse zufälligerweise gleichzeitig auf die Datenbank zugreifen möchten, zu unerwünsch- ten Nebeneffekten und Deadlocks kommen. Die Hilfsklasse verwaltet für jeden Thread eine 32\n33. eigene Verbindung zur Datenbank und sorgt dafür, dass diese nach einiger Zeit der Inaktivität automatisch geschlossen wird. 4.2.2 Druckservice Der Druckservice ist zum Drucken der Aushänge, die Studenten über die zu vergebe- nen/laufenden Abschlussarbeiten informieren sollen, vorgesehen. Drucken ist eine sehr plattformabhängige Aufgabe und daher mit dem plattformunabhängigen Java sehr schwer zu realisieren. Einige Versuche mit der Java-Printing-API führten zu kaum brauchbaren Resultaten. Aus diesem Grund wurde der Ansatz direkt aus Java drucken zu wol- len verworfen und derselbe Ansatz wie bei der BPEL-Implementation verfolgt. Die Idee dabei ist nicht Java sondern ein plattformspezifisches Programm zum Ducken zu verwenden. Um dort auf Standard-Software zurückgreifen zu können, konvertiert der Druck- service die zu druckende Arbeit in ein PDF-Dokument. Dies wird mit dem iText-Framework [iTe] realisiert. Nachdem das Dokument erstellt und in einer temporären Datei gespeichert wurde, wird das in einer Konfigurationsdatei bezeichnete Programm (z.B. ghostscript oder der Acrobat Reader) zum Drucken aufgerufen. :Process WS:PrintService :Printer printThesis(thesis) printPDF() printPDF() Abbildung 18: Nichtblockierendes drucken Für diesen Webservice konnte fast der komplette Quellcode von der BPEL-Implementation genutzt werden. Es waren nur einige kleine stilistische Änderungen nötig. Außerdem wurde der Programmaufruf in einen eigenen Thread ausgelagert (siehe Abbildung 18), so dass durch das mehrere Sekunden dauernde Ausdrucken der Prozessablauf nicht verzögert wird. Der Webservice verfügt außerdem noch über eine Operation zum reinen Generieren eines PDF-Dokuments ohne es auszudrucken. Diese Operation war in Zusammenhang mit einem Service zum Bereitstellen des Aushangs auf einem Webserver gedacht, dieser wurde aber nicht implementiert. 4.2.3 E-Mail-Service Der E-Mail-Service ist für das Versenden von E-Mails vorgesehen. Er verwendet das Java- Mail Framework um die E-Mails an einen SMTP-Server, der in einer Konfigurationsdatei eingetragen ist, zu senden. Bei dem SMTP-Server kann es sich um einen so genannten Open- Relay-Server, der E-Mails an beliebige E-Mail-Adressen sendet (heutzutage aufgrund der hohen Spam-Belastung kaum noch zu finden), oder einen Closed-Relay-Server, der E-Mails erst nach gelungener Authentifizierung weiterleitet, handeln. Zudem kann noch die Absender- adresse der E-Mails verändert werden, falls der SMTP-Server nur E-Mails mit einer bestimm- ten Absenderadresse akzeptiert. In dem Fall wird der wahre Absender als Antwortadresse angegeben und auch im Textteil der E-Mail verwandt. Anhänge und E-Mails, die nicht im Standard-Textformat geschrieben sind, werden nicht unterstützt. 33\n34. 5 Vergleich 5.1 GQM Die Metriken für den Vergleich wurden nach dem GQM-(Goal Question Metric [BCR94]) Ansatz hergeleitet. Dabei werden von einem zentralen Ziel (hier: „Vergleich zwischen dem BPEL und dem SOA-Me System“) mehrere Fragestellungen abgeleitet, die dann wiederum von Messungen mit den verschiedenen Metriken beantwortet werden sollen. Dieser Vorgang lässt sich als Baum darstellen, indem die Wurzel das Ziel (Goal), die internen Knoten die Fra- gen (Question) und die Blätter die Metriken darstellen. Abbildung 19 stellt den GQM-Baum für den Vergleich der beiden SOA-Anwendungen dar. Dabei führt das Ziel „Vergleich zwischen dem BPEL- und dem SOA-Me-System“ zu folgen- den Fragen: 1. Welches System lässt sich besser warten? 2. Auf welchem System ist das Entwickeln aufwendiger? 3. Welches System wird besser von Tools unterstützt? 4. Welches System ist flexibler? 5. Welches System lässt sich vom Endanwender besser bedienen? Die Frage nach der Wartbarkeit (nach [IEE90] als Leichtigkeit definiert, mit der ein System geändert werden kann, um Fehler zu beheben, seine Fähigkeiten zu erhöhen oder es an eine veränderte Umgebung anzupassen) lässt sich durch die intuitive Lesbarkeit (Readability) der Kompositionen (in BPEL-Notation bzw. in Form einer EPK) und durch die Größe der Code- basis beantworten. Erstere soll dabei durch einen Versuch bestimmt werden, indem mehrere Testpersonen nacheinander beide Beschreibungen vorgelegt bekommen und nur anhand die- ser einen Fragenkatalog zu den Funktionalitäten des Prozesses beantworten sollen. Die Code- basisgröße wird mit dem Eclipse-Plugin Metrics [Met] in Lines of Code (LOC) und Methoden pro Klasse und ggf. Service gemessen. Die Frage nach dem Aufwand wird ebenfalls durch die Codebasisgröße und die Anzahl der benötigten Personenstunden beantwortet. Allerdings muss bei der Codebasisgröße berücksich- tigt werden, dass nicht alle Teile gleichschwer zu implementieren sind. Teile die von Tools generiert wurden, erfordern weniger Aufwand als Teile, die handgeschrieben wurden. Wie gut das Entwickeln durch Tools unterstützt wurde, wird durch zwei Aspekte beantwortet. Erstens durch die Auswertung meiner Erfahrungen beim Erstellen der SOA-Me-basierten Anwendung sowie der Erfahrungen der Entwickler des BPEL-Entwurfs und zweitens durch den Anteil der Codezeilen an der gesamten Codebasis, die durch Tools erzeugt wurden. Die Flexibilität des Systems ist nach [IEE90] als „Leichtigkeit, mit der ein System abgeändert werden kann, um es in Anwendungen oder Umgebungen zu benutzen, für die es nicht entwi- ckelt worden ist“ definiert und hängt damit auch von der Größe der Komposition des Prozes- ses (der Anzahl der Aktivitäten bzw. Funktionen) ab, die hier gemessen werden soll. Usability ist in ISO 9241, Teil 11 wie folgt definiert: „Der Grad, zu dem ein Produkt oder System durch definierte Benutzer verwendet werden kann, um spezielle Ziele, nämlich: - Effektivität (Genauigkeit und Vollständigkeit, mit der die Benutzer bestimmte Ziele erreichen) 34\n35. - Effizienz (von Benutzern aufgewendete Mittel im Verhältnis zur Zielerrei- chung) - Zufriedenheit (Freiheit von Unbehagen und Beschwerden, sowie die positive Einstellung zur Nutzung des Produkts oder Systems) in einem bestimmten Nutzungskontext zu erreichen.“ Hier soll, zum Einen durch die Zeit, die ein Benutzer durchschnittlich benötigt um den Pro- zess einmal zu durchlaufen (auch hier ist wieder einen Versuch mit Testpersonen vorgesehen) und zum Anderen über die Fähigkeit des SOA-Me Systems, die von dem Client des BPEL- Entwurfs benutzten Elemente der Benutzeroberfläche nachzubilden, auf die Usability ge- schlossen werden. 35\n36. Vergleich zwischen BPEL und SOA-Me Conceptual level Wartbarkeit Aufwand Toolsupport Flexibilität Usability Operational level Komfort der Benutzerober- 36 Auswertung der flächen Codebasisgröße Erfahrungen Lesbarkeit Personenstunden Kompositionsgröße Prozessdauer Quantitative level Abbildung 19: GQM-Baum für den Vergleich des SOA-Me- und BPEL-Entwurfs\n37. 5.2 Lesbarkeit Um die Lesbarkeit der beiden Notationen zur Prozesskomposition zu vergleichen, wurden die Prozesse des BPEL-Entwurfs und die EPK des Hauptprozesses des SOA-Me-Entwurfs eini- gen Probanden vorgelegt. Obwohl die Anzahl der Probanden sehr klein war, konnten sie doch in zwei Gruppen unterschieden werden. Zwei der Probanden (A und B) sind Informatik- Studenten, die das SOA-Me System mit entwickelt hatten, jedoch nicht mit BPEL vertraut waren. Der dritte Proband (C) ist Mathematik-Student und besaß nur rudimentäre XML- Kenntnisse. Es war also zu erwarten, dass Proband A und B mit dem SOA-Me Editor weniger Probleme haben würden als Proband C. Den Probanden wurde zunächst ein grober Überblick über den Allgemeinen Prozessablauf und den daran beteiligten Personen im Umfang der Abschnitte 3.1.2 und 3.1.3 gegeben. An- schließend wurde ihnen ein Fragenkatalog bestehend aus 5 Fragen ausgehändigt. Zu jeder Frage wurde eine Auswahl von möglichen Antworten gegeben, so dass die Probanden nur die richtige auswählen mussten. Die Fragen sollten sie jeweils für den Prozess in BPEL-Notation und den Prozess in EPK-Form beantworten und anschließend bewerten, wie schwer ihnen diese Antwort auf einer Skala von 1 (sehr leicht) bis 5 (sehr schwer) gefallen ist. Die Fragen wurden dabei so gestellt, dass sie sich auf bestimmte Modellierungsmöglichkeiten bezogen. Frage 1 und 2 betrafen die Ausführungsreihenfolge von bestimmten Aktivitäten. Bei Frage 1 mussten die Probanden erkennen, dass bestimmte Prozessteile gleichzeitig ablaufen können, bei Frage 2 ging es darum die Abhängigkeiten zwischen zwei Aktivitäten zu erfassen. Die beiden ersten Fragen konnten noch gelöst werden, indem sich die Probanden nur die gra- fische Notation ansahen, für die folgenden Fragen war eine Analyse von verschiedenen Aus- drücken nötig. 3 2 falsch richtig 1 0 ag B) ag B) ag B) ag B) ag B) ag S) ag S) ag S) ag S) ) (S ( ( ( ( ( ( ( ( ( 1 3 1 2 3 4 5 2 4 5 e e e e e e e e e e ag Fr Fr Fr Fr Fr Fr Fr Fr Fr Fr Abbildung 20: Korrektheit der Antworten (B = BPEL, S= SOA-Me) Frage 3 und 4 handelten von Fallunterscheidungen. Um Frage 3 zu beantworten musste in der BPEL-Notation die entsprechende Fallunterscheidung gefunden und eine einfache boolesche Bedingung, die eine Variable mit einer Konstanten verglich, verstanden werden. Bei SOA-Me gab es eine entsprechende Fallunterscheidung nicht, was die Pobanden erkennen mussten. Frage 4 drehte sich um die Plausibilitätsprüfung von Benutzerdaten. Die entsprechende Fall- unterscheidung verglich dazu zwei Variable. Diese Fallunterscheidung war im SOA-Me EPK zweigeteilt. Sie wurde in einem Stylesheet berechnet und führte erst in einem späteren XOR- Konnektor zu einer Verzweigung. 37\n38. Die 5. Frage handelte von einer Implementierungsentscheidung. Die Probanden sollten he- rausfinden, welchen Wert eine Konstante mit einer gegebenen Bedeutung hatte. Dafür musste in BPEL die entsprechende Assign-Anweisung und in SOA-Me der entsprechende Stylesheet gefunden werden. Dies war besonders bei BPEL schwierig, da die entsprechende Stelle nicht kommentiert war. Für die Bearbeitung des Fragebogens benötigten die Probanden je Notation ca. 30 min. Richtige Antworten Schwere (1-5) BPEL SOA-Me BPEL SOA-Me Probanden A und B 90,00% 80,00% 4,10 3,60 Proband C 80,00% 80,00% 4,40 3,60 Durchschnitt 86,67% 80,00% 4,20 3,60 Tabelle 2: Ergebnisse der Lesbarkeitsanalyse (Schwere: 1=sehr leicht, 5=sehr schwer) Nach der Auswertung der Fragebögen zeigte sich erst einmal eine Überraschung: Obwohl die Probanden A und B Erfahrungen mit der SOA-Me Plattform hatten, machten sie, wie in Tabelle 2 zu sehen, genauso viele Fehler bei der Beantwortung der Fragen zur SOA-Me- Plattform und bewerteten die Schwere der Fragen im Schnitt genauso wie Proband C. Mit der BPEL-Notation kamen A und B besser zu Recht als C und bewerteten diese auch leicht bes- ser, diese Abweichung ist aber sehr knapp, da nur eine richtige Antwort und 0,3 Einheiten „auf der Schwere-Skala“ zwischen beiden Gruppen liegt. 3 Sehr Schw er Schw er Durchschnittlich 2 Leicht Sehr leicht 1 0 ag ( S) ag S) ag S) ag S) ) ag B) ag B) ag B) ag B) ) (S Fr 5 ( B Fr 2 ( Fr 3 ( Fr 4 ( Fr 1 ( Fr 2 ( Fr 3 ( Fr 4 ( 1 5 e e e e e e e e e e ag ag Fr Fr Abbildung 21: Bewertung der Schwierigkeit der Fragen (B = BPEL, S= SOA-Me) Insgesamt ergibt sich, dass die SOA-Me-EPK etwas leichter empfunden wird als die BPEL- Notation, aber bei SOA-Me auch ein Fehler mehr gemacht wurde als bei BPEL. Wie in Abbildung 20 zu sehen wurde, bezogen auf das SOA-Me System, nur Frage 4 falsch beant- wortet. Die Aufteilung der Bedingung auf ein Stylesheet und einen XOR-Konnektor war wohl für die Probanden nicht zu erkennen. Das zwei von drei Probanden bei BPEL die Frage 2 falsch beantwortet haben lies sich nicht nachvollziehen. Die entsprechende Stelle in der BPEL-Notation war übersichtlicher als bei Frage 3. Auffällig ist hier auch, dass Frage 5 und nicht Frage 2 als schwierigste Frage empfunden wurde. 38


Personelle Weichenstellungen im Management von STADA | STADA\nPersonelle Weichenstellungen im Management von STADA\nMiguel Pagan wird neuer Vorstand für Produktion und Entwicklung\nSteffen Wagner wird Head of Europe\nCarsten Cron leitet Emerging Markets\nRobert Knerr folgt Wolter Kuizinga als Head of Business Development\nBad Vilbel, 16. April 2018 – Die STADA Arzneimittel AG („STADA“) treibt die im März angekündigte neue Strategie konsequent voran. Das Unternehmen setzt dabei auf die drei Säulen Generika, verschreibungsfreie Brands und Spezialpharmazeutika wie Biosimilars sowie auf Effizienzsteigerungen in den internen Prozessen. „Um diese neue strategische Ausrichtung optimal umzusetzen, haben wir gemeinsam mit dem Aufsichtsrat beschlossen, personell einige Weichenstellungen im Topmanagement vorzunehmen“, erläutert CEO Dr. Claudio Albrecht.\nDem bisherigen Vorstand für Produktion und Entwicklung Dr. Barthold Piening folgt der gebürtige Spanier Miguel Pagan (53) als Vorstand für Technical Operations.\nDie Bestellung von Dr. Barthold Piening zum Vorstandsmitglied der STADA ist einvernehmlich mit sofortiger Wirkung aufgehoben worden. Dr. Piening wird STADA Ende Mai 2018 verlassen, um sich neuen Karrieremöglichkeiten zu widmen. STADA dankt Dr. Piening für seine engagierte Tätigkeit und seinen großen Einsatz während einer Phase, die für STADA viele Veränderungen gebracht hat, sowie für die exzellente Zusammenarbeit, insbesondere während der vergangenen Monate. Vorstand und Aufsichtsrat wünschen ihm für seine kommenden Aufgaben alles Gute.\nMiguel Pagan war zuletzt bei SANDOZ als Head of Global Technical Operations und Global Head of Solids & Special Tech bei Novartis tätig. Zuvor war er für alle SANDOZ-Produktionsstätten in Europa und Indien verantwortlich und vorher Vice President US Operations bei Merck (MSD). „Wir freuen uns mit Miguel Pagan einen ausgewiesenen Experten für Produktion und Operations für STADA gewonnen zu haben. Er verfügt über langjährige Erfahrung in der Steuerung internationaler Produktionsnetzwerke großer Pharmaunternehmen und wird unser Management-Team hervorragend verstärken“, so Dr. Günter von Au, der Aufsichtsratsvorsitzende von STADA.\nDarüber hinaus bestellte STADA drei neue Mitglieder in die erweiterte Geschäftsleitung. Dr. Steffen Wagner (40) übernimmt zum 1. Juli 2018 als „Head of Europe“ die Verantwortung für das Europageschäft. Er war zuletzt Geschäftsführer von Biogen Deutschland und wird die Gesamtverantwortung für alle Märkte in Europa mit Ausnahme von Deutschland, Großbritannien und Russland übernehmen.\nMit Carsten Cron bekommt STADA ferner einen neuen „Head of Emerging Markets“. Der 47-jährige kommt von Pfizer, wo er zuletzt als Country Manager für die Länder Marokko, Tunesien und Libyen zuständig war und auch den Bereich Commercial & Business Operations für Nordafrika sowie den Nahen Osten leitete. Bisher lagen die Funktionen des „Head of Europe“ und des „Head of Emerging Markets“ in Personalunion beim CEO Albrecht.\nZu einem Wechsel kommt es auch im Bereich Business Development. Wolter Kuizinga hatte diese strategisch wichtige Funktion neu aufgebaut und interimistisch geleitet und dabei wesentliche Weichenstellungen vorgenommen. Ihm folgt spätestens ab 1. September der bisherige Vice President für Portfolio-Management Dr. Robert Knerr nach. „Diese Bestellung unterstreicht unseren Ansatz, künftig mehr Schlüsselpositionen bei STADA mit hochqualifizierten internen Kandidaten zu besetzen“, zeigte sich Albrecht sehr zufrieden. Als Nachfolger von Knerr für das Portfolio-Management konnte Dr. Stefan Busemann gewonnen werden, der von SANDOZ zur STADA wechselt.\nDie STADA Arzneimittel AG ist ein börsennotiertes Unternehmen mit Sitz im hessischen Bad Vilbel. STADA setzt konsequent auf eine Mehrsäulenstrategie aus Generika und Markenprodukten (OTC) bei zunehmend internationaler Marktausrichtung. Weltweit ist STADA mit rund 50 Vertriebsgesellschaften in rund 30 Ländern vertreten. Markenprodukte wie Grippostad und Ladival zählen in Deutschland zu den meistverkauften ihrer Produktkategorie. Im Geschäftsjahr 2017 erzielte STADA einen bereinigten Konzernumsatz von 2.255,3 Millionen Euro, ein bereinigtes Ergebnis vor Zinsen, Steuern und Abschreibungen (EBITDA) von 433,9 Millionen Euro und einen bereinigten Konzerngewinn von 195,6 Millionen Euro. Zum 31. Dezember 2017 beschäftigte STADA weltweit 10.176 Mitarbeiter.\nFoto Miguel Pagan Fernandez >\nLebenslauf Miguel Pagan Fernandez >\nFoto Dr. Steffen Wagner >\nCron neuer Leiter Emerging Markets >\nFoto Carsten Cron >\nFoto Dr. Robert Knerr


Verständnis für Gang ans Bundesgericht | zeitung.ch\nIch meinte, es wäre gut, wenn es auf der Bunkerwiese bald einen Spielplatz gäbe wie am Rand des Seeparks. Nach Einblick in die Planungen und Rechtslage habe ich aber Verständnis für die Gegner der vorliegenden Planung. Ich meine sogar, man müsse weit in den Kanton hinausrufen: Hier wird das gültige Recht zu Lasten der Öffentlichkeit mit Füssen getreten, um einem guten Investor zu dienen. Das wird an zwei Beispielen aufgezeigt.\nDas beanspruchte Land gehört dem Bund und somit uns allen. Es liegt nicht in einer Bauzone. Der Kanton hat grundsätzlich das Recht, auf nicht eingezontem Land Bauten zu bewilligen. Ein solches Recht wird gelegentlich beansprucht in Landwirtschaftszonen oder auf Berggipfeln. Darf es auch genutzt werden für einen kostenpflichtigen und eingezäunten Spielplatz mit Campinghütten und grossem Kiosk? Die Thurgauer Juristen finden eine einfache Erklärung für eine Zustimmung: Sie stellen der Zahl 1082 die Zahl 3 000 000 gegenüber. Sie akzeptieren das Argument: Wenn man mehr als 3 Millionen Franken aus seiner privaten Kasse investieren will, dokumentiert man das öffentliche Interesse an einem Bau. Sie missachten, dass hinter der Zahl 1082 ebenso viele Menschen stecken, die das öffentliche Interesse am Erhalt des Freiraumes dokumentieren! Wo darf man private Franken und mündige Menschen derart gegeneinander ausspielen?\nDie kantonalen Hüter des Rechtes müssten den folgenden Gesetzesartikel beachten: «Kanton und Gemeinden fördern im öffentlichen Interesse die Zugänglichkeit der Ufer sowie die Anlage von Uferwegen» Was passiert aber auf dem fraglichen Gebiet? Der vorhandene Weg, welcher der Hafenmauer entlang zum Jachthafen führt, wird durch ein eingezäuntes Gebiet unterbrochen. Nur ein Teil davon bleibt bestehen als Sackgasse. In Bananenrepubliken verdreht man Gesetze auf diese Weise. Zeigen Sie bitte Verständnis für die mutigen Einsprecher und berücksichtigen Sie gelegentliche Aufrufe zur Unterstützung.


HEUFT conveyor - Behältertransport\nProdukte Beverage Behältertransport HEUFT conveyor\nBehälter schonend und sicher transportieren: Effiziente Lösungen für jede Linie.\nDas Behältertransportsystem HEUFT conveyor befördert leere und volle Einzelbehälter aller Art besonders schnell und schonend durch Ihre Abfülllinie. Ob ein- oder mehrbahnig - die HEUFT-Lösung überzeugt durch ihre enorme Flexibilität: Sie passt in jede Abfüllanlage und sorgt auch bei höchster Beanspruchung für einen sicheren und effizienten Behältertransport. Dank seiner robusten, offenen Bauweise hält der HEUFT conveyor höchsten Belastungen stand und lässt sich ganz einfach reinigen.\nBehälter sicher durch die Line befördern: Ein- oder mehrbahniger Transport.\nSchonend, effizient, leise: Mit dem HEUFT conveyor werden Behälter aller Art ein- oder mehrbahnig sicher durch die Abfülllinie transportiert. Aus besonders robusten Materialien bestehend, lässt sich das individuell zusammenstellbare System optimal an die Bedingungen vor Ort anpassen.\nOb Neuplanung oder Restrukturierung – platzsparend und kompakt fügen sich hochwertige Komponenten wie magnetstabilisierte Ketten, Geländer mit behälterschonenden Kunststoffprofilen und stabile Bandstützen in die gesamte Linie ein. Dabei sind alle Teile offen und reinigungsoptimiert konstruiert, so dass Verunreinigungen keine Chance haben.\nDer ein- oder auch mehrbahnige Behältertransport wird so einfach extrem leise, sicher und sauber.\nIntensiv beraten, kompetent planen: Optimierter Wirkungsgrad für jede Anforderung.\nAusführliche Linienanalysen, eine intensive Beratung und exakte Planung führen zu individuellen Transportlösungen, die Ihren speziellen Anforderungen gerecht werden. Eine große Anzahl unterschiedlichster Komponenten und Kurvenradien sowie die Wahlmöglichkeit zwischen offener und geschlossener Kabelführung sorgen für eine optimale Anpassung an die vor Ort herrschenden Bedingungen. Von der Planung bis zur Installation steht das kompetente HEUFT-Expertenteam an Ihrer Seite, um einen idealen Behältertransport zu gewährleisten!\nbesonders schonender und geräuscharmer Behältertransport\nAnpassung an unterschiedlichste räumliche und hygienische Bedingungen\nwerkzeuglos verstellbare Kurvengeländer\nextrem kompakte, platzsparende Bauweise\nrobuste, wartungs- und reinigungsoptimierte offene Konstruktion\nausführliche Beratung und Planung durch das HEUFT-Expertenteam\nEntwicklung individueller Lösungen für besondere Aufgabenstellungen\nproblemlose Integration in bestehende Transportanlagen anderer Hersteller


Medikamente? | Forum Frag unsere Hebamme - urbia.de\n(1) 28.04.18 - 18:47\nHallo, ich hatte die letzten drei Tage Magen-Darm-Beschwerden, nachdem ich Gemüse gegessen hatte. Heute habe ich starkes grummeln in der Magengegend und mir ist ziemlich übel...fühlt sich nach Übersäuerung an. Ich habe Talcid, Pantoprazol und Bullrichsalz zuhause. Was kann ich davon nehmen? Vielen Dank Lisa3187\n(2) 28.04.18 - 18:55\nAntwort auf lisa3187 (1)\nBin in der 7ssw\n(3) 28.04.18 - 21:20\nAntwort auf lisa3187 (2)\nPantoprazol schon mal nicht. Das kann ich dir als Krankenschwester sagen\n(4) 28.04.18 - 21:55\nDanke für deine Antwort! Dann bleiben nur noch zwei Möglichkeiten.\n(5) 29.04.18 - 04:58\nDas stimmt nicht! Meine Schwester hat es fast die gesamte Ss genommen. Vom FA empfohlen..Du kannst die meisten Medikamente bei Embryotox im Internet nach schauen...anhabd dessen kannst du dir sicher sein, welche Medikamente ok sind und welche nicht.\nProduktnamen: rifun ® und weitere Generika\nIndikation: Refluxösophagitis, Ulcus duodeni und ventriculi, Ulcusrezidiv-prophylaxe.\n1. Trimenon: Inzwischen wurden in verschiedenen Studien zu Protonenpumpen-hemmern etwa 6000 Schwangerschaften (der überwiegende Anteil mit Omeprazol, ca. 600 mit Pantoprazol) vorwiegend prospektiv dokumentiert. In keiner der Studien wurde ein erhöhtes Fehlbildungsrisiko gesehen.\n2.-3. Trimenon / Perinatal: Hinweise auf eine fetotoxische Wirkung der Protonenpumpenhemmer liegen nicht vor.\nPlanung einer Therapie oder Planung einer Schwangerschaft unter Therapie: Zur Therapie einer Refluxösophagitis, eines Helicobacter-pylori-Befalls (im Rahmen einer Triple-Therapie) oder zur Gastritisprophylaxe in der Schwangerschaft sollte das am besten untersuchte Omeprazol bevorzugt werden. Bei entsprechenden therapeutischem Vorteil kann auch Pantoprazol eingesetzt werden.\nKonsequenzen nach Anwendung in der Schwangerschaft: Keine, gegebenenfalls Umstellung auf das besser untersuchte Omeprazol erwägen.\nBesser erprobte Alternativen: Omeprazol\n(6) 29.04.18 - 09:42\nAntwort auf nadja1910 (5)\nJa im Beipackzettel steht was anderes. Und dort steht ja auch lieber Omeprazol. Und ohne Absprache mit einem Arzt würde ich Pantoprazol nicht in der SS nehmen.\n(7) 30.04.18 - 16:40\ndu kannst Heilerde, Milch, geschälte Mandeln oder Reni benutzen. Pantoprazol sollte nur in Ausnahmefällen und in Absprache mit dem Arzt genommen werden.\n(8) 02.05.18 - 14:20\nAntwort auf hebamme.sarah (7)\nJa habe mir auch Reni und Gavisvon geholt. Mein Hausarzt hatte keine Idee, ausser das was ich schon habe. Morgen habe ich die Beschwerden allerdings schon eine Woche. Es rummort bei mir im Magen vor lauter Luft. Trinke genug, esse wenig. Muss ich mir sorgen machen?