Ein mobiler Android-Client für ein Enterprise-Content-Management System

Größe: px
Ab Seite anzeigen:

Download "Ein mobiler Android-Client für ein Enterprise-Content-Management System"

Transkript

1 HOCHSCHULE RHEIN-MAIN FACHBEREICH DESIGN INFORMATIK MEDIEN MEDIENINFORMATIK BACHELOR-THESIS ZUR ERLANGUNG DES AKADEMISCHEN GRADES BACHELOR OF SCIENCE - B.SC. Ein mobiler Android-Client für ein Enterprise-Content-Management System Autor: Michael LOSSAGK Referent: Prof. Dr. Dirk KRECHEL Korreferent: Prof. Dr. Peter BARTH 3. August 2010

2

3 Erklärung gem. BBPO, Ziff Ich versichere hiermit, dass ich die Bachelor-Thesis selbständig verfasst und keine anderen als die angegebenen Hilfsmittel benutzt habe. Wiesbaden, 3. August 2010 Michael Lossagk Erklärung zur Verwendung der Bachelor-Thesis Hiermit erkläre ich mein Einverständnis mit den im folgenden aufgeführten Verbreitungsformen dieser Bachelor-Thesis: Verbreitungsform ja nein Einstellung der Arbeit in die Bibliothek der Veröffentlichung des Titels der Arbeit im Internet Veröffentlichung der Arbeit im Internet x x x Wiesbaden, 3. August 2010 Michael Lossagk

4 Autor: Michael Lossagk Referent: Professor Dr. Dirk Krechel Korreferent: Professor Dr. Peter Barth Design Informatik Medien Wiesbaden Revision : 1

5 Bachelor-Thesis IV Inhaltsverzeichnis 1 Einleitung 1 2 Grundlagen Mobile Anwendungen Android Technikauswahl Enterprise-Content-Management System Produktfunktionen und Anforderungen Funktionale Anforderungen Nicht-funktionale Anforderungen Konzept und Design Konzeption Client Server Umsetzung Profil erstellen Sitzung erstellen Dokumente suchen Datei herunterladen Datei archivieren Ergebnisse und Ausblick Zusammenfassung Testbedingungen und Probleme Ausblick Literaturverzeichnis 68 Online-Quellen 68 Abbildungsverzeichnis 70 Listingverzeichnis 71

6 Bachelor-Thesis 1 1 Einleitung Heutzutage verlangt die moderne Arbeitswelt, dass Daten und Informationen, die in elektronischer Form vorliegen, nicht mehr nur am heimischen Computer, sondern auch unterwegs verfügbar sind. Hierfür werden vor allem mobile Endgeräte, wie zum Beispiel Handys, Smartphones und Tablet Computer [Lin08], eingesetzt. Mobile Geräte haben im Laufe der Jahre eine beachtliche Leistung erreicht und sind für viele Menschen, speziell für jene, die aus beruflichen Gründen häufig unterwegs sind, zu unermüdlichen Helfern geworden und unterstützen dabei den Tagesablauf zu organisieren und zu planen. Neben der Möglichkeit den Tagesablauf per Kalender oder Organizer zu gestalten und wichtige Termine im Griff zu haben, möchte ein Benutzer weitere Funktionalitäten zur Verfügung gestellt bekommen um typische Büroaufgaben, wie die Bearbeitung von Dokumenten jeglicher Art, wie z.b. von Rechnungen und Lieferscheinen, durchführen zu können. Für die Unterstützung der Arbeitsvorgänge in einem Unternehmen existieren hierzu die verschiedensten Softwarelösungen. Eine davon ist ein Enterprise-Content- Management System [Kam06]. Mit einem ECM-System ist es möglich sämtliche, im Unternehmen genutzte Dokumente in elektronischer Form zentral abzulegen, mit Metadaten zu beschreiben und daraufhin bei Bedarf wieder abzurufen und zur Verfügung gestellt zu bekommen. Üblicherweise werden solche ECM-Systeme per Computer am Arbeitsplatz im Büro genutzt. Jedoch wäre es ein immenser Vorteil für die Durchführung von täglichen Arbeitsvorgängen, die Funktionen eines ECM-Systems auch unterwegs auf einem Handy oder Smartphone nutzen zu können. Speziell für Mitarbeiter, die im Außendienst tätig sind und somit nicht permanent die Möglichkeit haben auf Dokumente von einem Bürorechner aus zuzugreifen, ist dies interessant. Hieraus entstand die Idee der Erstellung einer mobilen Anwendung für ein ECM-System. Das Ziel der Anwendung ist es, die Verwaltung von Dokumenten mit einem Enterprise-Content-Management System auch für die Verwendung mit einem mobilen Gerät sinnvoll umzusetzen und zu gestalten. Ein wichtiger Aspekt bei der Konzeption einer mobilen Anwendung ist es, dass der Entwickler darauf achtet die Anwendung nicht wie eine herkömmliche Desktop Applikation zu gestalten, sondern stets darauf bedacht ist den Anforderungen an eine mobile Anwendung gerecht zu werden. Das bedeutet zum einen, dass genau erörtert werden muss, welche Anwendungsfälle mit einem mobilen Gerät wirklich sinnvoll durchzuführen sind und zum anderen, welche Informationen auf dem, im Vergleich zu Desktop Monitoren, recht kleinen Bildschirm dargestellt werden sollen. Die wichtigsten Funktionen, die mit einem Smartphone sinnvoll genutzt werden können, umfassen die Archivierung und die Suche von Dokumenten. Zudem können mithilfe der mittlerweile häufig eingebauten

7 Bachelor-Thesis 2 Kameras eines Smartphones, Papierdokumente digitalisiert und in das System eingepflegt werden. Neben dem reinen Dokumentenmanagement muss auch die Zugriffskontrolle gewährleistet werden. Üblicherweise bekommt jeder Nutzer eines ECM-Systems ein eigenes Profil für die Identifikation zur Verfügung gestellt. Somit muss die Möglichkeit für einen Nutzer gegeben sein, sich mit seinem Profil anmelden und eine Sitzung mit dem ECM-System erstellen zu können. Hierbei ist zu beachten, dass ein mobiles Gerät seiner Bestimmung nach das Risiko mit sich trägt entwendet zu werden oder verloren zu gehen, weshalb die ECM-Sitzungen auch wieder beendet werden müssen, damit keine unbefugten Aktionen von nicht autorisierten Personen ausgeführt werden können. Um zu verdeutlichen, wie die geforderten Anforderungen an die Anwendung letztlich umgesetzt worden sind, wurde die Ausarbeitung in 6 Kapitel unterteilt. Im Anschluss an die vorliegende Einleitung wird im Kapitel 2 auf die Grundlagen dieser Arbeit eingegangen. Es wird darin zunächst beschrieben, was mobile Anwendungen sind und worin deren Besonderheiten und Unterschiede gegenüber Desktop Anwendungen liegen. Daraufhin wird die zugrundeliegende Mobilplattform Android [22] beschrieben, für die die Anwendung erstellt wurde. Hierbei wird auf die technischen Grundlagen eingegangen und die Entstehungsgeschichte dargestellt. Zudem werden die Funktionalitäten eines ECM-Systems näher betrachtet und gezeigt, welche Möglichkeiten bestehen die verfügbaren Schnittstellen zu nutzen. Das dritte Kapitel Produktfunktionen und Anforderungen enthält eine Übersicht der Ergebnisse der Anforderungsanalyse und beschreibt die daraus formulierten Anforderungen, die vor dem Beginn der Konzeptionsphase an die fertige Software gestellt wurden. Die Anforderungen leiten sich aus den Möglichkeiten des Dokumentenmanagements des ECM-Systems ab. Hierzu gehören die Suche nach hinterlegten Dokumenten anhand von Metadaten, sowie auch die Archivierung von Dateien im ECM-System. Daneben werden auch die möglichen Profil- und Sitzungseinstellungen definiert, die ein Nutzer durchführen kann. Im vierten Kapitel Konzept und Design werden grundlegende Designentscheidungen beschrieben. Hierzu wird erklärt, wie eine typische Client-Server Struktur verwendet wurde um die Kommunikation zwischen Client und Server zu ermöglichen. Desweiteren werden die verwendeten Möglichkeiten der Benutzeroberflächen Gestaltung und der Datenspeicherung erläutert, die Android dem Entwickler zur Verfügung stellt. Zudem wird die Funktion der einzelnen Klassen näher betrachtet und deren Einteilung innerhalb der Programmschichten dargestellt. Die eigentliche Umsetzung der Funktionalität wird im gleichnamigen Kapitel Umsetzung beschrieben. Hierbei wird anhand der erstellten Anforderungen der Weg der Daten innerhalb der Anwendung nachvollzogen und die Kommunikation der Klassen untereinander verdeutlicht. Es wird zudem mithilfe von Beispielen gezeigt, wie der Server die Daten vom Client empfängt und an die Schnittstelle des ECM-Systems

8 Bachelor-Thesis 3 weiterreicht um dort die gewünschten Aktionen auszuführen. Im Anschluss daran wird beschrieben, wie die Antworten des Servers empfangen und verarbeitet werden und auf welche Weise der Benutzer die erhaltenen Daten dargestellt bekommt. Das sechste und letzte Kapitel Ergebnisse und Ausblick zieht Résumé über die gesamte Phase der Bachelor Thesis. Hierbei werden die Probleme in der Frühphase der Arbeit beschrieben, die aufgrund der problematischen Schnittstellen Verwendung entstanden sind. Danach werden die umgesetzten Möglichkeiten des Benutzers mit dem ECM-System zu kommunizieren zusammengefasst und beschrieben welche Unterschiede zwischen den optimalen Testbedingungen, mit stets hohen Übertragungsgeschwindigkeiten und denen im Produktivbetrieb, bei nicht immer perfekten Empfangsbedingungen, bestehen. Zuletzt wird auf die zukünftige Entwicklung der Anwendung eingegangen und beschrieben, wie weitere Funktionalitäten, die das ECM-System bietet, implementiert werden könnten.

9 Bachelor-Thesis 4 2 Grundlagen Das Grundlagen Kapitel beschreibt zunächst was mobile Anwendungen sind und aus welchem Grund die Benutzung von mobilen Geräten immer interessanter wird. Im Anschluss daran wird die Mobilplattform Android [22] genauer betrachtet, welche letztlich den Vorzug für die Entstehung der Anwendung erhalten hat. Hierbei wird kurz auf die Entstehungsgeschichte eingegangen und die aktuelle Marktsituation dargelegt. Zudem werden die verwendeten Standards und Techniken erläutert, die für die Umsetzung der Applikation genutzt worden sind. Im nächsten Abschnitt werden die Grundlagen eines Enterprise-Content-Management Systems [Kam06] betrachtet und es wird darauf eingegangen was die genauen Aufgaben eines solchen Systems sind. Es wird beschrieben, wie die typischen Funktionalitäten eines ECM-Systems eingesetzt werden, um Abläufe und Prozesse innerhalb eines Unternehmens zu unterstützen und effizienter zu gestalten. Desweiteren wird genauer auf das ECM-System der Firma SER eingegangen, welches von der Anwendung genutzt wird. 2.1 Mobile Anwendungen Das mobile Internet gewinnt zunehmend an Bedeutung und wird immer häufiger Bestandteil einer digitalen Markenstrategie von Unternehmen. Netzwerkstrukturen werden stark ausgebaut und der Bedarf an der Umsetzung von Anwendungen mit Echtzeitanforderungen ist groß. Es kommen immer mehr mobile Endgeräte auf den Markt und die Hersteller überbieten sich mit fortschreitender Funktionalität, Leistung und Nutzbarkeit. Dies gilt zum einen für die Endgeräte, welche eine immer größere Funktionalität bieten, als auch für die Software, welche die sich bietenden Möglichkeiten immer besser und effektiver zu Nutzen weiß. Dank schneller mobiler Netze wie dem UMTS (3G) [15] Netz und zukünftig auch dem LTE (4G) [3] Netz wird der Nutzen von mobilen Geräten und insbesondere deren Anwendungen noch interessanter werden als er es heute bereits ist, denn es lassen sich mithilfe dieser schnellen Netze auch große Datenmengen innerhalb kürzester Zeit übertragen. Dies kommt vor allem solchen Diensten zu Gute, welche mit hohen Datenraten operieren und somit auf schnelle Datenverbindungen angewiesen sind, damit Nutzer die Anwendungen entsprechend komfortabel nutzen können, ohne zu lange Wartezeiten in Kauf nehmen zu müssen. Solche Dienste sind meist von multimedialer Natur, wie zum Beispiel Video und Audio Streaming Dienste, stellvertretend sind hier YouTube [23] und Pandora [36] zu nennen, aber eben auch Dienste, dessen Fokus nicht auf multimediale Unterhaltung ausgelegt ist und dennoch eine beträchtliche Datenmenge zu verarbeiten haben, wie beispielsweise Enterprise-Content-Management Systeme.

10 Bachelor-Thesis Android Zu einer der größten Plattformen auf dem Markt für mobile Lösungen hat sich Android von Google [31] entwickelt. Die Firma Google Inc. ist weltweit aktiv und vor allem für seine Suchmaschine, aber auch für viele weitere Web-Anwendungen wie z.b. den (Satelliten)-Kartenanwendungen Google Earth und Google Maps, der Anwendung GMail und dem Internetbrowser Chrome bekannt. Um die eigene Marktposition weiter auszubauen hat sich Google dem Markt für mobile Anwendungen zugewandt und eine eigene Plattform für mobile Geräte erstellt. Android ist der Name des Betriebssystems, wie auch einer ganzen mobilen Plattform für Smartphones, Mobiltelefonen, Netbooks und Tablet Computern [Lin08], welche von der Open Handset Alliance (OHA) [5] entwickelt wurde. Die Open Handset Alliance ist ein Konsortium von 65 Firmen welche die Schaffung von offenen Standards für Mobilgeräte vorantreibt. Gegründet wurde die Open Handset Alliance von Google, dem Unternehmen, die die treibende Kraft hinter diesem Projekt ist. Die Android Plattform ist noch eine recht junge Plattform. Im November 2007 veröffentlichte Google die erste Vorabversion von Android, welche von Nutzern sowie Entwicklern in gleichem Maße positiv aufgenommen wurde. Dies hat verdeutlicht, wie sehr der Wunsch nach einer quelloffenen Mobilplattform zu Tage tritt. Es wurden bisher weltweit 8 Mio. Android-Smartphones verkauft, wobei im ersten Quartal 2010 in den Vereinigten Staaten erstmals mehr Android-Mobiltelefone als iphones [30] verkauft wurden. Der Marktanteil bei Neugeräten betrug im untersuchten Zeitraum für Google 28 Prozent im Gegensatz zu 21 Prozent bei Apple [28]. Applikationen bekommt der Benutzer über den Android Market. Zugriff auf den Android Market bekommt der Nutzer mit dem gleichnamigen App, welches bei jeder Android Version enthalten ist. Mit dem App können, ebenso wie beim iphone, Programme und Spiele heruntergeladen und installiert werden. Die Anzahl der verfügbaren Programme beziffert sich hier auf und die Gesamtzahl der Downloads beträgt etwa 400 Millionen [21]. Die Entwicklung von Applikationen für den Android Market ist kostenlos und Google unterzieht die Programme vor der Einstellung in jenen keiner weiteren Kontrolle. Stattdessen findet lediglich eine Überprüfung der Identität des Entwicklers statt, bevor die entsprechende Anwendung freigegeben wird. Zur Überprüfung der Identität muss sich der Entwickler für einmalig 25 US-Dollar registrieren lassen.

11 Bachelor-Thesis 6 Technische Grundlagen Die Architektur von Android basiert auf einem Linux-Kernel [43]. Die Programmiersprache mit welcher Android Programme geschrieben werden ist Java [40] von der Firma Sun Microsystems [35]. Auf der Grundlage der quelloffenen JVM Apache Harmony [17] Java-Technik wurde die virtuelle Maschine Dalvik [2] und die dazugehörigen Android-Java-Klassenbibliotheken entwickelt. Es wurden verschiedene Standardbibliotheken von Java ersetzt, angepasst, oder sogar komplett gestrichen. Dies betrifft z.b. Bibliotheken, die sich um die Darstellung von grafischen Elementen kümmern, wie Swing oder AWT. Stattdessen kommen Grafikschnittstellen zum Einsatz, deren Möglichkeiten an die Ansprüche von mobilen Geräten angepasst wurden. Wie in der Abbildung 1 zu erkennen ist, werden die vom Java-Compiler erstellten Class-Dateien nicht direkt ausgeführt, sondern mit dem dx-compiler [12] erneut kompiliert. Die hieraus entstandenen Dex-Dateien sind nun auf der Dalvik VM ausführbar. Abbildung 1: Java zu Dex Bevorzugt wird eine Android Anwendung in der Entwicklungsumgebung Eclipse [19] entwickelt. Google hat hierfür das Plugin ADT (kurz für Android Development Tools) [12] erstellt. Ein Android Projekt gibt eine bestimmte Ordnerstruktur vor, wie in Abbildung 2 zu sehen ist. Die wichtigsten Elemente werden im Folgenden kurz erläutert. Innerhalb des src-ordners befinden sich die Java-Dateien und somit der eigentliche Quelltext, welcher üblicherweise in weiteren Unterpaketen gegliedert wird um eine übersichtliche Struktur zu erschaffen. Im gen-ordner sind ebenso Java-Klassen enthalten, die vom ADT-Plugin automatisch erstellt werden und nicht editiert werden sollten. Im Ordner Android 2.1-update1 befindet sich die Bibliothek android.jar,

12 Bachelor-Thesis 7 welche die kompletten Android Schnittstellen enthält, die zur Programmierung benötigt werden. Innerhalb des Verzeichnis Referenced Libraries befinden sich externe Bibliotheken, mit denen das Projekt um verschiedene Funktionalitäten erweitert werden kann. Der assets-ordner blieb im Verlauf der Entwicklung stets leer. Er dient hauptsächlich zur Unterbringung von Medien-Dateien, wie Musik und Videos. Einer der meistbenutzten Ordner während der Entwicklung ist der res-ordner. Das Kürzel res steht für resources und beinhaltet sämtliche Dateien, die vom Quelltext abstrahiert worden sind, um diesen besser lesbar und wartbar zu gestalten. Dies betrifft vor allem Definitionen der Bildschirmoberflächen und von Zeichenketten, welche per XML-Dateien vorgenommen werden. Dadurch wird dem Entwickler ein hohes Maß an Flexibilität geboten, denn es lassen sich Elemente leicht austauschen, ohne große Änderungen am Quelltext vornehmen zu müssen. Von besonderer Bedeutung ist die Datei Android Manifest.xml. Sie wird in jeder Android- Anwendung benötigt und befindet sich im Hauptverzeichnis des Projekts. Die AndroidManifest.xml enthält die Metadaten einer Applikation. Zudem wird in ihr angegeben, welche Komponenten eine Anwendung nutzt, welche Fähigkeiten die Applikation hat und welche Voraussetzungen Abbildung 2: Android Projektstruktur zum Betrieb notwendig sind. Beispielsweise müssen Oberflächendefinitionen innerhalb der Datei registriert werden, damit sie in der Anwendung verwendet werden können. Auch die Zugriffsrechte auf andere Dienste, wie die Erlaubnis der Anwendung auf das Netzwerk oder die Kamerafunktion zuzugreifen, werden über die Manifest-Datei festgelegt. Android Komponenten Anwendungen, die auf einer Android Plattform erstellt werden, sind stets komponentenbasiert aufgebaut. Die Android Entwickler haben hierbei das Ziel verfolgt, Anwendungen auf diese Weise wiederverwendbar zu gestalten und ein spezielles Berechtigungssystem zu erstellen, dass es anderen Anwendungen erlaubt Komponenten der eigenen Applikation zu verwenden bzw. auf Komponenten von Drittprogrammen zugreifen zu können. Es wird zwischen 4 Komponenten unterschieden, die im Folgenden vorgestellt werden. Anwendungen, die mit dem Anwender interagieren, brauchen mindestens eine Activity, um eine Oberfläche darzustellen. Activities sind sichtbar und können miteinander zu einer komplexeren Anwendung verknüpft werden und werden entweder direkt per Quelltext oder als XML-Definition beschrieben. Sie kümmern sich um die Darstellung von Daten und nehmen Anwendereingaben entgegen. Dies geschieht mithilfe üblicher Oberflächenelemente, wie Eingabefelder, Textfelder, Knöpfe und Auswahlboxen.

13 Bachelor-Thesis 8 Jedoch benötigt nicht jeder Teil einer Anwendung eine Oberfläche. Aktionen, die eine lange Laufzeit haben, können in Android als Service implementiert werden. Diese Aktionen werden weitergeführt, auch wenn die Bedienoberfläche bereits geschlossen wurde. Ein Service wird somit zumeist genutzt um Hintergrundprozesse zu erledigen, wie z.b. die Suche nach Dokumenten in einem ECM-System. Ein Content Provider stellt Funktionalitäten der eigenen Anwendung zur Verfügung. Beispielsweise können Applikationen, die sich darauf spezialisiert haben Medien Daten, wie Bilder und Videos darzustellen, anderen Anwendungen den Zugriff auf diese Funktionalität mittels Content Provider gewähren, indem sie dies in der AndroidManifest.xml entsprechend kennzeichnen. Um auf systemweite Nachrichten reagieren zu können, ist es in Android möglich Anwendungsteile als Broadcast Receiver zu deklarieren. Systemnachrichten sind unter anderem eingehende Telefonanrufe und Meldungen über einen geringen Ladezustand der Batterien. Desweiteren gibt es noch die Möglichkeit auf Notifications zu reagieren. Ein Notification erscheint beispielsweise, wenn der Benutzer eine Nachricht empfängt. Diese Mitteilung erscheint in der Statusleiste der Anzeige und erlaubt es weitere Aktionen auszuführen, wie z.b. die Weiterleitung zu anderen Anwendungen. 2.3 Technikauswahl In diesem Abschnitt wird ein Überblick darüber gegeben, welche Techniken zur Kommunikation zwischen den Programmteilen genutzt wurden. Hierzu wird erklärt, wie ein Client-Server-Modell [Ben04] aufgebaut ist und was die Aufgaben eines Webservice [Kal09] sind. Zudem wird erläutert welche Bedingungen erfüllt sein müssen, um einen Server zu einer REST konformen [Til09] Anwendung zu machen. Client-Server-Modell Das Client-Server Prinzip baut auf der Vernetzung von Computern und einer Arbeits- und Rollenverteilung auf. Es ist das Standardkonzept für die Verteilung von Aufgaben innerhalb eines Netzwerks. Der Server stellt Dienste zur Verfügung, die von anderen Computern angefordert werden können. Die Anfragesteller, welche Dienste vom Server anfordern, werden bei diesem Modell als Client bezeichnet, der die Antwort des Servers empfängt und entsprechend verarbeitet. Dabei muss ein Gerät, das einen Dienst vom Server anfragt, nicht unbedingt ein vollwertiger Computer sein, sondern es muss lediglich in der Lage sein, den Server ansprechen zu können. Somit kann ein Client auch ein Handy oder Smartphone sein. Typische Client-Server-Systeme sind Online-Dienste. Technisches Bindeglied ist ein gemeinsames Protokoll, wie z.b. HTTP [46], über das Informationen innerhalb eines Request-Response-Zyklus ausgetauscht werden können.

14 Bachelor-Thesis 9 Abbildung 3: Client Server Struktur Wie die Abbildung 3 verdeutlicht, kann der Server simultan von mehreren Clients angesprochen werden. Hieraus können sich unterschiedliche Antwortzeiten ergeben, je nachdem welche Last der Server zu diesem Zeitpunkt verarbeiten muss. Komplexere Client-Server-Strukturen erlauben zudem die Verteilung der Last auf mehrere Server. Hierbei fungiert der angesprochene Server lediglich als Stellvertreter, der die Anfrage entgegennimmt und an einen weiteren Server schickt, welcher sich um die eigentliche Durchführung der angefragten Aktion kümmert. Webservice Ein Webservice oder Webdienst ist eine Software-Anwendung, die mit einem Uniform Resource Identifier (URI [25]) eindeutig identifizierbar ist und deren Schnittstelle als XML-Artefakt definiert, beschrieben und gefunden werden kann. Ein Webservice unterstützt die direkte Interaktion mit anderen Applikationen unter Verwendung XML-basierter Nachrichten durch den Austausch über internetbasierte Protokolle. Bei diesen Protokollen handelt es sich zumeist um standardisierte Schnittstellen, wie z.b. UDDI [34], SOAP [47] und WSDL [48]. UDDI ist ein Verzeichnisdienst und dient zur Registrierung von Webservices. Es ermöglicht somit das dynamische Finden des Webservices durch den Konsumenten. UDDI wird meist nur in kleineren Firmennetzwerken verwendet und hat sich nie global durchgesetzt. SOAP dient zur eigentlichen Kommunikation. Mithilfe dieses Protokolls wird der Aufruf gestartet und die Verbindung eingeleitet. WSDL dient zur Beschreibung der aufzurufenden Funktionalität. Mithilfe von WSDL werden somit die Methoden, wie z.b. sessionisvalid, und deren Parameter beschrieben. Somit bildet ein Webservice die wichtigsten Elemente des zuvor erwähnten Client-Server Modells ab. Dies umfasst die Auffindung des Dienstes, sowie die Ver-

15 Bachelor-Thesis 10 bindungsherstellung zwischen dem Client und dem Server und letztlich den eigentlichen Datenaustausch zwischen beiden. REST Das Akronym REST steht für Representational State Transfer [Til09] und bezeichnet einen Softwarearchitekturstil für verteilte Hypermedia-Informationssysteme. Als Hypermedia bezeichnet man eine Variante von Hypertext unter expliziter Betonung des multimedialen Aspektes. Die Kernprinzipien von REST lassen sich wie folgt zusammenfassen: Ressourcen mit eindeutiger Identifikation Im Internet gibt es ein einheitliches Konzept für die Vergabe von IDs, nämlich die URI [25]. Mithilfe der URI wird sichergestellt, dass wesentliche Elemente eindeutig identifiziert werden können. So können die Funktionen, welche ein System bieten soll, für den Menschen leserlich innerhalb der URI untergebracht werden, wie z.b. Die Vorteile des einheitlichen Namenschemas gelten sowohl für die browserbasierte Kommunikation, als auch für die Kommunikation zwischen Anwendungen. Verknüpfungen/Hypermedia Kern dieses zweiten Prinzips ist das Konzept der Verknüpfungen (Hyperlinks). Dies ist nicht nur für die Speicherung von Lesezeichen im Browser interessant, sondern auch anwendungsübergreifend zu betrachten, da hinter einem Link eine eindeutige URI steht. Somit kann eine Anwendung mithilfe eines Links ebenso an Informationen gelangen wie der Nutzer des Browsers mithilfe von Lesezeichen. Wichtiger als die Verknüpfung zu Daten ist jedoch die Steuerung des Applikationszustands, indem die Applikation einem Link folgt, gelangt sie von einem Zustand in den nächsten. Standardmethoden Damit die URI von unterschiedlichen Anwendungen interpretiert werden kann, müssen gewisse Standards zu Grunde liegen. Bei HTTP sind dies vor allem die Methoden GET, POST, PUT und DELETE. Die Bedeutung dieser Funktionen ist in den HTTP Spezifikationen festgelegt [46]. Somit kann der Entwickler sich auf die definierten Verhaltensweisen verlassen. Vor allem kann er sich darauf verlassen, dass GET sicher ist, was bedeutet, dass diese Methode nur Informationen beschafft und keine sonstigen Effekte verursacht.

16 Bachelor-Thesis 11 Unterschiedliche Repräsentationen Die unter einer Adresse zugänglichen Ressourcen können unterschiedliche Repräsentationen haben. Ein REST-konformer Webservice kann z.b., je nachdem was der Client anfordert, eine HTMLoder XML-Repräsentation ausliefern. Hierdurch kann der Webbrowser zum Navigieren durch den Webservice verwendet werden und die Beschreibung und Dokumentation des Services über die gleiche Adresse verfügbar gemacht werden. Statuslose Kommunikation REST schreibt vor, dass der Zustand entweder vom Client gehalten werden soll oder vom Server in einen Ressourcenstatus umgewandelt werden muss. Beispiel für einen Ressourcenstatus auf dem Server ist ein Warenkorb, wie er von einem Onlinehändler bekannt ist, der als Ressource gespeichert wird und somit per Hyperlink erreichbar ist. Falls der Zustand jedoch vom Client gespeichert wird, so muss er bei jeder Übermittlung von Daten an den Server mitgesandt werden. Es ist daher nicht gewollt, dass ein serverseitig abgelegter Status über die Dauer einer Anfrage hinweg bestehen bleibt. Der Grund für den Verzicht auf einen Sitzungsstatus ist Skalierbarkeit. Zudem wird die Kopplung zwischen Client und Server verringert. 2.4 Enterprise-Content-Management System Ein Enterprise-Content-Management System, kurz ECM-System, ist eine Sammlung von verschiedenen Technologien zur Bearbeitung von Content und Dokumenten. Dies ist besonders für mittlere und größere Firmen bzw. Unternehmen interessant, welche täglich eine große Anzahl an Dokumenten, Rechnungen und sonstigem Schriftverkehr bearbeiten müssen. Es unterstützt die Mitarbeiter bei der Informationsversorgung und hilft bei der Durchführung und Koordinierung der Geschäftsprozesse. Das Akronym ECM und der Begriff Enterprise-Content-Management System stammen vom Branchenverband AIIM International [4] [Kam06]. Die Technologien, welche in einem Enterprise-Content-Management System vereinigt sind, umfassen die Erfassung, Speicherung, Bereitstellung, Archivierung und die Bearbeitung von Dokumenten. Zudem verfügen solche Systeme über verschiedene Sicherheitseinrichtungen, wie z.b. ein Zugangs- und Berechtigungssystem, welches den verschiedenen Nutzern unterschiedliche Privilegien zuordnet. Das bedeutet, dass nicht alle Benutzer die selben Rechte besitzen um Dokumente einzusehen oder bearbeiten zu können. Umgesetzt werden unterschiedliche Berechtigungen, indem jedem ECM-Nutzer eine eindeutige System-Identifikation zugewiesen wird, mithilfe derer er sich zunächst am System anmelden muss um die entsprechenden Funktionen eines ECM Systems nutzen zu können. Im Folgenden werden die einzelnen Kernkomponenten eines ECM-Systems näher betrachtet. Die Abbil-

17 Bachelor-Thesis 12 Abbildung 4: ECM-System Komponenten. Quelle: AIIM / PROJECT CONSULT 2003 [4] dung 4 zeigt die Komponenten grafisch und verdeutlicht gleichzeitig deren Interaktion und den zeitlichen Ablauf. Die Informationen werden (von links nach rechts bzw. von oben nach unten) erfasst (capture), bearbeitet (manage), gespeichert (store), archiviert (preserve) und ausgeliefert (deliver). Die ringförmigen Bestandteile um Store herum bedeuten im Einzelnen: Dokumenten-Management (DM), Collaboration (Collab), Web Content Management (WCM), Records Management (RM) und Workflow (WF) bzw. Business Process Management (BPM). In der Praxis des täglichen Geschäftsbetriebs müssen nicht alle ECM-Komponenten realisiert werden. Welche Komponenten wichtig sind hängt von den Geschäftsprozessen des jeweiligen Unternehmens ab. Capture (Erfassung) Die Erfassung des Contents, oder allgemein von Informationen, stellt die erste Komponente im Ablauf dar. Dies kann manuell oder automatisch erfolgen. Meist erfolgt die Informationserfassung jedoch nicht manuell, sondern zumindest teilautomatisch. Ein Beispiel hierfür ist das Einscannen von Textdokumenten. Dies geschieht meist mit der Unterstützung von Erkennungstechnologien (siehe [51]) wie OCR (Optical

18 Bachelor-Thesis 13 Character Recognition), ICR (Intelligent Character Recognition) oder OMR (Optical Mark Recognition). Das Ziel aller Capture-Teilkomponenten ist es, die erfassten Informationen für die Weiterbearbeitung und Archivierung der nachfolgenden Manage-Komponente bereitzustellen. Nach der Erfassung müssen die Daten deshalb um beschreibende Merkmale, so genannte Metadaten, ergänzt werden. Anhand dieser Daten können die Dokumente im ECM-System wieder aufgefunden werden. Manage (Bearbeitung und Nutzung) Im Bereich Management findet die eigentliche Arbeit mit dem Content statt. Hier werden die Vorteile des ECM-Systems für jeden Mitarbeiter deutlich. So können sie zum Beispiel Informationen in Datenbanken suchen und bei entsprechender Berechtigung darauf zugreifen und sie weiter bearbeiten. In der Abbildung wird die Manage-Komponente durch den Ring um Store beschrieben. Üblicherweise werden die Aufgaben der verschiedenen Module kombiniert genutzt. Die gilt vor allem für große Unternehmen. Kleine Unternehmen verzichten meist auf bestimmte Komponenten. Beispielsweise ist das Management des Web Content nur bei hinreichend komplexen Webauftritten notwendig, über welchen kleinere Firmen meist nicht verfügen. Unter dem Punkt Dokumentenmanagement versteht man die datengestützte Verwaltung elektronischer Dokumente. Wesentliche Eigenschaften von DM-Systemen sind Check-In und Check-Out Funktionen sowie die Versionierung, welche hilft, einen Überblick der verschiedenen Bearbeitungsstufen eines Dokuments zu erhalten. Store (Speicherung) Mithilfe der Store-Komponente werden Daten erfasst, welche nicht für eine langfristige Archivierung vorgesehen sind. Dieses Modul ist somit deutlich abzugrenzen von der eigentlichen Archivierungskomponente, dem Preservation-Modul. Die AIIM unterteilt die Store-Komponenten in drei unterschiedliche Bereiche, welche da sind: Repositories, Library Services und Technologies. Repositories Unter dem Sammelbegriff Repositories werden verschiedene Speichersysteme zusammengefasst. Dies sind unter anderem Dateisysteme, Caches und Datenbanken. Auf die Daten, welche in den Repositories gespeichert worden sind, wird per Library Services zugegriffen. Library Services

19 Bachelor-Thesis 14 Library Services sind systemnahe Verwaltungskomponenten zum Informationszugriff, die die Speicherorte in der temporären Ablage verwalten. Sie sind letztendlich für den Empfang und die Speicherung der Daten aus den Capture- und Manage-Komponenten zuständig. Zudem führen Library Services Protokoll über die Bearbeitung und Veränderung von Dokumenten und ermöglichen so die Versionierung von Content. Technologies Die Store-Komponente Technologies beinhaltet diverse Speichertechnologien. Dies sind üblicherweise Festplatten (HDD) bzw. komplette RAID-Systeme [8], Network-Attached-Storages (NAS) [9], Magnetbänder oder optische Datenträger, wie z.b. CDs, DVDs oder Blu-ray Discs [37]. Preserve (Archivierung) Um die eigentliche Langzeit-Archivierung von Daten kümmert sich die Preserve-Komponente. Informationen müssen unter rechtlichen Vorgaben stabil und geschützt gesichert werden. Es wird dabei zwischen der revisionssicheren Archivierung und der eigentlichen Langzeit-Archivierung unterschieden. Langzeit-Archivierung bedeutet, dass Informationen mindestens zehn Jahre aufbewahrt werden müssen. Die revisionssichere Archivierung hingegen muss bestimmten gesetzlichen Anforderungen genügen. Dies sind z.b. Anforderungen des Handelsgesetzbuches und der Abgabenordnung. Übliche Festplatten gelten im Allgemeinen als nicht geeignet für revisionssichere, elektronische Archivierung, da die gespeicherten Informationen jederzeit geändert und überschrieben werden können. Daher kommen in der Regel WORM-Systeme (Write Once Read Many) [13] zum Einsatz, welche den rechtlichen Anforderungen genügen, da sie sicherstellen, dass Daten unveränderbar gespeichert werden. Deliver (Bereitstellung) Die Deliver-Komponente stellt Daten nach der Speicherung wieder zur Verfügung. Sie wird daher auch als Output-Management bezeichnet. Der Benutzer bekommt die Daten in unterschiedlichen Formaten aufbereitet zur Verfügung gestellt. Die unterschiedlichen Formate, in denen die Daten aufbereitet werden, sind unter anderem JPEG [24], das Portable Document Format (PDF) [42], das Tagged Image File Format (TIFF oder auch TIF) [11] und XML (Extensible Markup Language) [49].

20 Bachelor-Thesis 15 Einordnung der Anwendung Die erstellte Client Anwendung nutzt lediglich einen Teil der verfügbaren Möglichkeiten eines ECM- Systems. Die verwendete Funktionalität beschränkt sich hierbei vor allem auf die Elemente Capture und Deliver, wie die Abbildung 5 verdeutlicht. Es werden somit lediglich die Komponenten des Dokumenten Managements genutzt. Zudem wird die Capture Funktionalität ohne die wichtigen Möglichkeiten der Text-Erkennungstechnologien durchgeführt, da sie lediglich die eingebaute Kamera des Smartphone benutzt um Bilder von Dokumenten zu erstellen. Daher wird die Funktionalität der Deliver Komponente des ECM-Systems die am häufigsten eingesetzte Funktion sein, um Dokumente nach der Speicherung wieder zur Verfügung gestellt zu bekommen. Abbildung 5: Einordnung der Anwendung im ECM-System SER Solutions Deutschland Umgesetzt wird die Anwendung für das ECM System der Firma SER [38]. Die Kontakte zu SER kamen durch Professoren der Hochschule zu Stande, die seit längerer Zeit in Verbindung mit dem Unternehmen stehen. Das Unternehmen beschreibt sich in seiner Webpräsenz (www.ser.de) als größter deutscher ECM Softwarehersteller und Direktanbieter von Komplettlösungen rund um die Informationslogistik. SER entwickelt seit 25 Jahren Software für Unternehmen jeder Branche und Größe. Die Firma betreibt Standorte in 28 Ländern Europas, davon 7 in Deutschland, und beschäftigt 320 Mitarbeiter in 15 Gesellschaften. Die Produkte von SER umfassen die Bereiche elektronische Archivierung und Dokumenten-Management, die automatisierte Posteingangsverarbeitung, -archivierung, elektronische Akten und Workflow. Dabei ist zu erwähnen, dass SER Hardware und Softwarelösungen kombiniert und Kunden mit einem Komplettpaket aus Funktionalität und Service beliefert.

21 Bachelor-Thesis 16 SER Enterprise-Content-Management DOXiS4 iecm-suite ist die Enterprise-Content-Management Lösung der Firma SER. Die Suite umfasst die typischen ECM Aufgaben von Capturing über Archivierung bis Business Process Management (Siehe Abbildung 4 und Abschnitt 2.4). Je nach Anforderungen werden spezifische Funktionspakete definiert, welche beim Kunden, auch in Verbindung mit Fremdsystemen, zum Einsatz kommen. Die Besonderheiten des ECM-Systems von SER sind laut Unternehmen hierbei der digitale Posteingang, die herausragende Integration von Dokumenten, Akten und anderen Informationsobjekten über den DO- XiS4 Content Service Bus (siehe Abbildung 6), sowie die einheitliche Oberfläche der unterschiedlichen Client Lösungen, wie z.b. DOXiS4 wincube und DOXiS4 webcube welche auf modernen Technologien basiert, wie Tabbed Browsing und die von Microsoft mit deren Office Lösung populär gemachte Ribbon- Ansicht. Der Erfolg, den SER mit seinen Lösungen hat, lässt sich anhand der Referenzen ablesen. Zu den Kunden gehören umsatzkräftige Unternehmen aus den unterschiedlichsten Branchen wie dem Bankengewerbe, Bauunternehmern, Mediengesellschaften und Pharmaindustrien. Blueline Die Blueline Schnittstelle ist Teil der DOXiS4 Java API [Blo06], welche aktuell in der Version V05.06 vorliegt. Mithilfe der Schnittstelle wird es Entwicklern ermöglicht eigene Anwendungen für die ECM Lösung DOXiS4 zu schreiben. Die Grundlage hierfür bildet eine serviceorientierte Architektur (SOA [14]) auf Basis von J2EE [41]. Der große Umfang an Bibliotheken der Schnittstelle macht sie zu einem mächtigen Werkzeug und ermöglicht komplexe Anwendungen, mit welcher sich sämtliche Funktionalitäten des ECM-Systems abbilden lassen. Sie stellt eine Vielzahl an Datentypen zur Verfügung, welche innerhalb von DOXiS4 eingesetzt werden und lässt dem Entwickler grossen Spielraum in der Art und Weise wie die Funktionalität umgesetzt werden soll. Wie die Abbildung 6 verdeutlicht, kann die Schnittstelle des DOXiS4 CSB von verschiedenen Anwendungen angesprochen werden. Dies umfasst unter anderem Windows- und Web-Client Systeme. Jedoch ist die Nutzung der Schnittstelle nicht auf die eben genannten Client-Systeme beschränkt. Die in dieser Ausarbeitung beschriebene mobile Anwendung ordnet sich auf derselben Ebene ein und greift somit auf die gleiche Schnittstelle zu.

22 Bachelor-Thesis 17 Abbildung 6: Architektur DOXiS4 Content Service Bus Dokumente innerhalb des DOXiS4 ECM-Systems bestehen aus verschiedenen Datei-Repräsentationen sowie einer eindeutigen DocumentID und werden mithilfe von Deskriptoren beschrieben (siehe Abbildung 7). Die typischen Repräsentationen liegen hierbei als PDF- oder TIFF-Datei zur Betrachtung und als Microsoft Word doc-datei oder im OpenDocument Format odf [6] zur Bearbeitung vor. Deskriptoren helfen dabei, die Merkmale eines Dokuments zu beschreiben und manifestieren sich beispielsweise in Form eines Datums, eines Lieferantennamens oder einer Rechnungsnummer. Sie werden auch Metadaten eines Dokuments genannt. Sammlungen von Deskriptoren werden als Suchklassen bzw. Archiv/Dokumentklassen bezeichnet. Eine Dokumentklasse kann beispielsweise Lieferschein heissen und als Deskriptoren eine Auftragsnummer, einen Lieferantennamen und ein Datum enthalten. Mithilfe dieser Dokumentklasse wird ein Dokument beschrieben und im ECM-System archiviert. Mit der entsprechenden Suchklasse, die zumeist dieselben Deskriptoren zur Verfügung stellt, kann das Dokument nach der Archivierung wieder aufgefunden und heruntergeladen werden. DOXiS Bridge Die DOXiS Bridge ist neben Blueline eine weitere Schnittstelle an das Enterprise-Content-Management System der Firma SER. Sie basiert auf der Blueline Schnittstelle und wird von den Mitarbeitern des ECM- Labors an der entwickelt. Derzeit befindet sich die DOXiS Bridge noch in der

23 Bachelor-Thesis 18 Abbildung 7: Aufbau eines Dokuments der DOXiS4 ECM-Lösung Entwicklungsphase, es können allerdings schon die grundlegenden Funktionen eines ECM-Systems, wie z.b. Sitzungserstellung, Suche und Archivierung, durchgeführt werden. Mithilfe der DOXiS Bridge ist es möglich, die Funktionalität des ECM-Systems als Webservice, basierend auf der Web Service Description Language (WSDL) [48], nach außen hin zur Verfügung zu stellen. Der Zugriff auf die Funktionen wird mittels dem Netzwerkprotokoll SOAP [47] durchgeführt. Gängige Webservices nutzen SOAP meist in Verbindung mit dem Hypertext Transfer Protocol kurz HTTP [46], was bei der DOXiS Bridge ebenso der Fall ist. Das bedeutet, dass Anwendungen, die Services der DOXiS Bridge nutzen wollen, die Möglichkeit haben müssen per SOAP mit der DOXiS Bridge kommunizieren zu können. In der Regel finden sich für Programmiersprachen und Plattformen geeignete Bibliotheken, welche die Funktionalität dieser Sprachen um die Fähigkeit per SOAP kommunizieren zu können, erweitern. Zusammenfassung Im Grundlagen Kapitel wurden die wesentlichen Elemente hervorgehoben, die zur Entwicklung der Anwendung beigetragen haben. Es wurde erklärt, was eine mobile Anwendung auszeichnet und es ist näher auf die verwendete Mobilplattform Android eingegangen worden. Zudem sind grundlegende Techniken

24 Bachelor-Thesis 19 und Standards erläutert worden, die bei der Umsetzung genutzt worden sind. Desweiteren wurde noch geklärt, was ein Enterprise-Content-Management System ist und wie dieses im Unternehmen zur Steigerung der Produktivität und zur Verbesserung der Arbeitsabläufe eingesetzt wird. Das nächste Kapitel zeigt auf, welche Anforderungen an die Anwendung vor der Umsetzung gestellt wurden und beschreibt diese im Detail.

25 Bachelor-Thesis 20 3 Produktfunktionen und Anforderungen Das Kapitel Produktfunktionen und Anforderungen (engl. requirements) beschreibt welche Funktionalenund Nicht-funktionalen Anforderungen an die Anwendung vor der Implementierung gestellt wurden. Die funktionalen Anforderungen ergeben sich aus den Funktionalitäten, die ein ECM-System zur Verfügung stellt. Die nicht-funktionalen Anforderungen orientieren sich an den Gegebenheiten, die durch ein mobiles Gerät festgelegt sind. 3.1 Funktionale Anforderungen Funktionale Anforderungen charakterisieren sich dadurch, dass sie nach dem "Was" einer Anwendung fragen. Hierbei wird unterschieden zwischen Muss-Funktionen, die in jedem Fall den Weg in das fertige Produkt finden sollen und Kann-Funktionen, welche im angelsächsischen auch als Nice to have-funktionen beschrieben werden. Die Muss-Funktionen sind bereits durch die typischen Anwendungsfälle eines ECM- Systems, wie sie bereits unter 2.4 beschrieben wurden, vorgegeben. Der Benutzer, welcher im Verlauf dieser Anforderungsbeschreibung stets als Akteur bezeichnet wird, soll Dokumente suchen und archivieren können. Desweiteren soll es ihm ermöglicht werden, Sitzungs- und Profileinstellungen vorzunehmen, sowie diverse Dateioperationen durchführen zu können (siehe Abbildung 8). Profileinstellungen Die Möglichkeit ein Profil erstellen zu können ist eine grundlegende Muss-Funktion. Ein Profil besteht aus dem Namen des Mandanten, des Benutzers und dem Passwort (siehe Abbildung 9) und wird persistent im Speicher des Smartphone abgelegt. Dies wird benötigt, damit ein Akteur sich am ECM-System anmelden kann. Diese Funktionalität wird üblicherweise per Eingabemaske umgesetzt. Der Akteur soll beim Aufruf der Profil erstellen-funktion die entsprechenden Daten innerhalb der Maske in die dafür vorgesehenen Textfelder eingeben. Nach Beendigung der Eingabe soll der Dialog, bzw. die Eingabemaske zwei Optionen zur Verfügung stellen, in welcher Weise fortgefahren werden soll. Zum einen soll es die Möglichkeit geben die Eingabe zu bestätigen, und zum anderen die Eingabe abzubrechen. Abbildung 9: Neues Profil erstellen (Entwurf) Falls die Eingabe bestätigt wird, soll eine Überprüfung auf Plausibilität der Daten erfolgen. Dies ist nicht zu verwechseln mit der Anmeldung am ECM-System, sondern es wird innerhalb der Anwendung getestet, ob die Eingabe-Felder eventuell leer sind oder ob die Länge der eingegebenen Wörter korrekt ist bzw. inner-

26 Bachelor-Thesis 21 Abbildung 8: Anwendungsfalldiagramm halb eines definierten Rahmen liegt. Zudem wird auf Leerzeichen innerhalb der Eingabe getestet, welche nicht gestattet sind. Sollte der Akteur eine fehlerhafte Eingabe getätigt haben, so ist vorgesehen, dass eine Fehlermeldung erscheint. Die Fehlermeldung soll darauf aufmerksam machen, welche Eingaben des Akteurs nicht korrekt sind. Nach der Bestätigung wird dem Akteur erneut die Möglichkeit gegeben die Eingabe durchzuführen, wobei bereits korrekt eingetragene Werte erhalten bleiben, damit nicht sämtliche Eingaben erneut getätigt werden müssen. Für den Fall einer erfolgreichen Überprüfung der Eingabewerte wird das Profil innerhalb der Anwendung erstellt und gespeichert. Hat der Akteur jedoch die Abbrechen-Taste betätigt, so werden die Dialog Anzeige und die evtl. eingetragenen Werte gelöscht und kein Profil in der Anwendung gespeichert. Neben der Erstellung eines Profils soll der Akteur auch in der Lage sein das Profil zu bearbeiten. Die Funk-

27 Bachelor-Thesis 22 tion Profil bearbeiten zählt nicht zu den Muss-Funktionen. Der Unterschied zur Profil erstellen-funktion wird der sein, dass der Akteur zunächst das zu editierende Profil in der Anwendung auswählt und danach die Werte innerhalb des Dialoges bearbeiten kann. Die Eingabefelder werden in diesem Falle bereits mit den gespeicherten Werten des Profils gefüllt sein. Ebenso wie bei Profil erstellen soll nach der Bearbeitung der Werte und der Bestätigung dieser, auf Plausibilität der Eingabe geprüft werden und erst im Anschluss daran das modifizierte Profil gespeichert werden. Sollte der Akteur jedoch auf die Abbrechen-Taste drücken, so ist vorgesehen, dass die alten Werte weiterhin beibehalten werden, auch wenn die Werte in den Eingabefeldern editiert worden sein sollten. Abbildung 10: Profil löschen Sollte der Akteur den Wunsch haben ein bereits erstelltes Profil in der (Entwurf) Anwendung zu löschen, so wird er dies ebenso tun können. Dies ist nur eine Kann-Funktion. Ähnlich wie bei Profil bearbeiten wird das zu löschende Profil zunächst per Auswahlliste ausgewählt (Abbildung 10) und danach per Ok-Taste gelöscht werden. Zuvor sollte jedoch eine Sicherheitsabfrage erscheinen, ob der Akteur sich wirklich sicher ist, das eingetragene Profil löschen zu wollen. Sollte die Frage positiv beantwortet werden, so wird das Profil aus der Anwendung gelöscht. Hat der Akteur jedoch die Abbrechen-Taste betätigt, so verbleibt das Profil in der Anwendung und der Dialog wird beendet. Sitzungseinstellungen Zu den Sitzungseinstellungen gehört die Anmeldung des Akteurs am ECM-System. Dies ist eine grundlegende Muss-Funktion. Die Identifikationsdaten oder auch Zugangsdaten (engl. Login-Daten), werden vom ECM-Betreiber bereitgestellt und mithilfe der Funktion Profil erstellen in den Profileinstellungen in der Anwendung bekannt gemacht. Ebenso sollte der Akteur die Möglichkeit haben, die erstellte Sitzung auch wieder beenden zu können (engl. Logout). Die Relevanz dieser Funktion ist unter dem Aspekt der Sicherheit nicht zu unterschätzen und somit von Bedeutung, daher ist auch dies eine Muss-Funktion. Verdeutlicht wird die Wichtigkeit der Funktion Sitzung beenden, falls dem Akteur das Gerät entwendet werden oder es ihm verloren gehen sollte. Für solch einen Fall sollte sichergestellt sein, dass keine aktive Sitzung vorhanden ist und der vermeintliche Dieb oder Finder keine unbefugten Aktionen ausführen und somit Schaden anrichten kann. Dies gilt jedoch nur für den Fall, dass die Funktion zum Speichern des Passworts im Profil nicht aktiviert wurde. Somit muss sich der Akteur stets darüber im Klaren sein, dass die permanente Speicherung des Passworts innerhalb eines Profils ein Sicherheitsrisiko darstellt.

28 Bachelor-Thesis 23 Der Akteur sollte somit in der Lage sein per Knopfdruck die erstellte Sitzung zu beenden. Falls jedoch keine Sitzung erstellt worden sein sollte, wird die Antwort entsprechend sein, dass zunächst eine Sitzung erstellt werden muss, bzw. wird es erst gar nicht möglich sein eine Sitzung beenden zu können, wenn keine aktive vorhanden ist. Wenn der Akteur sich, nach einer erstellten Sitzung, nicht explizit vom ECM-System abmelden sollte, verliert die Sitzung ihre Gültigkeit nach einer gewissen Zeitspanne. Dies geschieht wenn die maximale Zeit der Inaktivität überschritten worden ist, welche von den ECM-Servern bei der Erstellung einer Sitzung festgelegt wird. Die Möglichkeit des Akteurs eine Sitzung auf Gültigkeit überprüfen zu können wird den Kann-Funktionen zugeordnet. Diese Funktion ist somit nicht von solcher Relevanz wie die zuvor angesprochenen Funktionen. Der Grund dafür ist, dass, wenn der Akteur eine der Funktionen des ECM-Systems nutzen möchte, die Server automatisch prüfen ob die Sitzung gültig ist, da sie bei jeder eingehenden Anfrage nach der aktuellen TicketID verlangen. Es wird ein einfacher Knopfdruck genügen um die Funktion anzustoßen. Im Falle, dass die Sitzung gültig sein sollte, wird eine entsprechende Bestätigungsnachricht auf dem Bildschirm erscheinen. Ebenso wird dies für den Fall einer ungültigen Sitzung geschehen, allerdings mit entsprechend anderer Meldung an den Akteur. Dateioperationen Unter Dateioperationen fällt die Möglichkeit Dokumente, bzw. deren Repräsentation in Dateiform aus dem ECM-System auf dem Smartphone aufzulisten. Das bedeutet, dass die Dateien, welche in verschiedenen Formaten vorliegen können, in Listenform und in alphabetischer Reihenfolge angezeigt werden sollen. Im Falle, dass eine größere Anzahl an Dateien vorhanden sein sollte, als auf einmal auf dem Bildschirm dargestellt werden kann, soll der Akteur diese per Scrolling [33] erreichen können. Die Speicherung der Dateien auf dem Smartphone erfüllt gewissermaßen die Aufgaben eines Dateicaches, wobei die eigentlichen Daten auf den Servern des ECM-Systems gespeichert sind. Die Auflistung der Dateien soll, ähnlich der Ansicht eines Datei-Managers, neben dem Dateinamen auch die Dateiendung enthalten, damit der Nutzer direkt ablesen kann um was für einen Dateityp es sich handelt. Der Speicherort der Dateien soll ein Ordner im Dateisystem sein, der dem Profil eindeutig zugeordnet werden kann. Zudem soll es möglich sein, die alphabetische Sortierreihenfolge der Dateien zu ändern. Diese Funktion sollte per Optionsmenü erreichbar sein. Desweiteren soll es für den Akteur möglich sein weitere Dateioperationen durchzuführen, welche im weiteren Verlauf noch beschrieben werden. Erreichbar sollen diese Funktionen per Selektion einer Datei, und dem darauf erscheinenden Kontextmenü, sein. Eine der Hauptfunktionen der Anwendung soll sein, die

29 Bachelor-Thesis 24 vorliegenden Dateien, entsprechend ihres Dateityps, darzustellen. Die überwiegende Mehrheit der Dateien liegt im PDF- oder TIFF-Format vor, somit muss sichergestellt werden, dass die Anwendung entsprechende Drittprogramme aufrufen kann, mit dessen Hilfe diese Dateien dargestellt werden können. Neben den eben genannten Dateitypen muss die Anwendung aber auch Bildformate wie z.b. PNG und JPEG oder einfache Textdateien vom Dateityp txt im Stande sein anzuzeigen, bzw. die Aufgabe an weitere Programme delegieren zu können. Den Anstoß zu dieser Aktion wird der Akteur per Klick auf die Datei geben können. Das bedeutet, er navigiert zunächst zu der gewünschten Datei in der Auswahlliste, die angezeigt werden soll und selektiert diese daraufhin. Durch diese Aktion sollte sich das entsprechende Drittprogramm zur Anzeige der Datei öffnen und dem Akteur die Möglichkeit bieten darin zu navigieren (z.b. für den Fall, dass es sich bei der Datei um ein mehrseitiges PDF handelt). Nach der Beendigung des Drittprogramms soll erneut die Auswahlliste der Dateien angezeigt werden. Eine weitere Funktion für Dateien soll es dem Akteur gestatten die Datei löschen zu können. Hierbei ist zu beachten, dass das Dokument nicht innerhalb des Enterprise-Content-Managements Systems gelöscht wird, sondern dass diese Aktion nur lokalen Effekt haben wird. Das bedeutet, die Datei wird lediglich aus dem Dateisystem des Smartphones gelöscht werden. Somit kann das Dokument jederzeit wieder aus dem ECM-System, in Form der Standardrepräsentation, angefordert werden. Das verdeutlicht, dass die Speicherung der Dateien auf dem Smartphone lediglich als Cache dient. Der Löschbefehl soll per Kontextmenü ausgewählt werden. Aus Gründen der Sicherheit soll die Datei nach dem Klick auf Löschen nicht unmittelbar gelöscht werden, sondern es soll eine Sicherheitsabfrage in Form eines Dialogs erscheinen, die den Akteur fragt, ob die Datei tatsächlich aus dem Dateisystem gelöscht werden soll. Wird die Sicherheitsabfrage positiv beantwortet, so wird der Dialog beendet und die Datei erscheint nicht mehr im Dateisystem und in der Dateiauswahlliste. Wird die Abfrage jedoch negativ beantwortet, so soll der Dialog ebenfalls beendet werden und die Datei in der Auswahlliste verbleiben. Für den Fall, dass der Akteur beispielsweise geschäftlich unterwegs ist und Papierdokumente hat, die er ebenso in das ECM-System einpflegen möchte, sollte er die Möglichkeit haben, diese digitalisieren zu können. Dies ist eine weitere Kann-Funktion, dessen Nützlichkeit allerdings außer Frage steht, so dass sie auf der Liste der umzusetzenden Kann-Funktionen weit oben rangiert. Viele aktuelle Smartphones besitzen mittlerweile Kameras, mit welchen Bilder in beachtlicher Qualität erstellt werden können. Der Akteur soll somit die Möglichkeit haben Scans bzw. Bilder von Dokumenten mithilfe der integrierten Kamera erstellen zu können. Auch wenn die Bilder trotz ihrer Qualität nicht mit Scanneraufnahmen zu vergleichen sind und

30 Bachelor-Thesis 25 auch über keine OCR Technologien [51] zur Texterkennung verfügen, können diese als Zwischenlösung dienen, falls beispielsweise ein Geschäftspartner digitale Kopien von Dokumenten zeitnah zur Verfügung gestellt haben möchte. Die Funktion soll per Kontextmenü aufrufbar sein. Hat der Akteur ein Bild seiner Wahl erstellt, so wird dieses im Dateisystem unter einem neutralen Dateinamen wie z.b. Photo1.png abgespeichert und erscheint in der Dateiauswahlliste. Für den Fall, dass bereits eine Datei mit dem selben Namen existiert, wird der Zähler so oft um eine Stelle erhöht, bis die Datei gespeichert werden kann. Das bedeutet, falls bereits die Dateien Photo1.png, Photo2.png und Photo3.png existieren sollten, wird die Aufnahme als Photo4.png gespeichert werden. Damit dieser neutrale Dateiname geändert werden kann, benötigt der Akteur eine Dateinamen bearbeiten-funktion. Dies ist eine weitere Kann-Funktion. Die Möglichkeit einen Dateinamen ändern zu können ist in der Regel nicht von großer Bedeutung, da eine lokale Änderung des Dateinamens keinen Einfluss auf das Dokument im ECM-System hat. Ebenso wie bei der Dateien löschen-funktion wird der Akteur diese Funktion per Kontextmenü erreichen können. Das bedeutet, auch in diesem Falle wird die Datei zunächst per Auswahlliste aufgesucht und danach per Klick selektiert. Nach dem Aufruf der Funktion soll ein Dialog mit einem Eingabefeld erscheinen in dem der Name der zu editierenden Datei bereits eingetragen sein wird. Nun kann der Akteur in das Eingabefeld klicken und den Dateinamen editieren. Nach erfolgter Bearbeitung wird es zwei Möglichkeiten zum Fortfahren geben: Entweder bestätigt der Akteur per Klick auf den Ok-Knopf die Eingabe und die Datei wird unter dem neuen Namen im Dateisystem abgelegt und entsprechend auch in der Dateiauswahlliste angezeigt oder es folgt ein Klick auf den Abbrechen-Knopf, was dazu führt, dass der Dialog beendet wird und die Datei unter unverändertem Dateinamen bestehen bleibt. Dokumente suchen und herunterladen Eine der zentralen Muss-Funktionen in einem Client für ein Enterprise-Content-Management System ist die Suche nach Dokumenten. Damit der Akteur Dokumente suchen kann, muss er zunächst in der Anwendung ein Profil erstellt und sich am ECM-System angemeldet haben. Ist dies geschehen, kann er eine Suchklasse auswählen (siehe Abbildung 11 und Abschnitt 2.4). Anhand dieser Suchklasse sollen Eingabemasken erstellt werden. Das Aussehen der Eingabemasken, und somit die möglichen Benutzereingaben in Form von Textfeldern oder Ankreuzfeldern (engl. Checkboxen), werden anhand der Deskriptoren (2.4) ermittelt, die den Suchklassen zugeordnet sind. Ist die Suche gestartet worden, soll ein Wartedialog erscheinen, der den Akteur darauf aufmerksam macht,

31 Bachelor-Thesis 26 Abbildung 11: Dokumente suchen (Entwurf) dass die Aktion im Gange und noch nicht abgeschlossen ist. Nach erfolgreicher Suche, soll dieser erlöschen und im Anschluss die Ergebnisseite, dass bedeutet eine Liste mit Dokumenten, samt zugehöriger Metadaten, angezeigt werden. Die Elemente dieser Liste sollten wiederum selektierbar sein, ähnlich wie in der zuvor beschriebenen Dateiauswahlliste. Die möglichen Aktionen auf die Elemente der Ergebnisliste sollen per Kontextmenü aufrufbar sein. Eine Aktion soll der Download der Standardrepräsentation des Dokuments sein, und eine weitere das Öffnen des Dokuments, wobei das Öffnen einen automatischen Download einleiten wird und die Datei, sobald sie fertig heruntergeladen wurde, unmittelbar anzeigt. Für den Fall, dass die Suche nicht erfolgreich gewesen sein sollte, wird dem Akteur ebenso eine Benachrichtigung angezeigt werden. Damit der Wartedialog im Falle eines Fehlers, wie z.b. eines Verbindungsfehlers aufgrund von schlechtem Empfang, nicht endlos angezeigt wird, muss ein Timeout eingebaut werden, dass bedeutet, der Dialog soll eine definierte Zeit lang angezeigt werden und im Falle einer Zeitüberschreitung erlöschen und eine entsprechende Fehlermeldung muss erscheinen. Archivieren Die Archivierung von Dateien ähnelt der Suche von Dokumenten in vielen Punkten und ist ebenso eine Muss-Funktion. Bevor die Archivierung einer Datei vorgenommen werden kann, muss auch in diesem Fall zuerst ein Profil erstellt werden. Zudem verlangt das ECM-System nach einer gültigen Sitzung, was bedeu-

32 Bachelor-Thesis 27 tet, dass eben diese erstellt werden muss. Hat der Akteur eine Sitzung erstellt, werden zunächst Dateien gebraucht die archiviert werden sollen. Wurden die Dateien erstellt, bzw. in das Dateisystem Verzeichnis des Profils verschoben oder kopiert, so erscheinen diese in der Auswahlliste und können archiviert werden. Abbildung 12: Dateien archivieren (Entwurf) Der Befehl des Akteurs zur Archivierung soll per Kontextmenü erfolgen. Hierzu muss der Akteur die gewünschte Datei zunächst selektieren. Im Kontextmenü wird er den Auswahlpunkt Archivieren vorfinden. Sobald dieser Punkt gewählt wird, sollen die möglichen Archiv oder auch Dokumentklassen erscheinen, anhand welcher der Archivierungsdialog zusammengestellt wird. Das Aussehen des Dialogs wird demnach, wie bei der Funktion Dokumente suchen und herunterladen, durch die Deskriptoren bestimmt, welche wiederum den Dokumentklassen zugeordnet sind (siehe Abbildung 12). Ist der Dialog erstellt worden, können die Eingabefelder vom Akteur ausgefüllt werden. Nach der Eingabe aller Daten hat der Akteur die Möglichkeit den Archivieren-Knopf zu drücken, welcher die Archivierung einleiten wird. Zudem soll eine neue Bildschirmseite erscheinen, welche die eingegebenen Archivierungsdaten tabellarisch auflistet. Dies wird lediglich der Bestätigung dienen. Ist der Archivierungsvorgang letztlich gestartet worden, so wird auch hier ein Wartedialog erscheinen. Die

33 Bachelor-Thesis 28 Dauer der Archivierung wird im Gegensatz zur Suche meist eine etwas längere Zeit in Anspruch nehmen, da der Archivierungsvorgang aus zwei Teilen besteht. Zunächst wird die Datei auf den Server hochgeladen, und erst im Anschluss daran kann sie archiviert werden. Hinzu kommt noch, dass üblicherweise die Upload-Geschwindigkeiten geringer ausfallen als die Download-Geschwindigkeiten, was allerdings nicht vom Akteur beeinflusst werden kann, sondern Angelegenheit des jeweiligen Mobilfunkbetreibers ist, welcher den Zugang zur Verfügung stellt. Bei einer erfolgreichen Archivierung erlischt der Wartedialog und der Akteur wird eine DocumentID erhalten (siehe 2.4). Anhand einer DocumentID kann ein Dokument im ECM-System eindeutig identifiziert werden. Die DocumentID wird beim Download einer möglichen Repräsentation des Dokuments, beispielsweise einer PDF-Datei, benötigt. Ebenso wird bei einer fehlerhaften Übertragung der Datei der Akteur entsprechend benachrichtigt werden. Auch bei der Archivierung wird der Dialog, im Falle eines Verbindungsabbruchs, nicht unbegrenzt im Vordergrund verweilen, sondern nach einem Timeout erlöschen und der Akteur über den Fehler benachrichtigt werden. 3.2 Nicht-funktionale Anforderungen Nicht-funktionale Anforderungen repräsentieren keine Funktionen und im Gegensatz zu den funktionalen Anforderungen liegt die Schwierigkeit darin, dass sie erst häufig nach der Fertigstellung des Gesamtsystems erfahrbar und test- bzw. messbar werden. Zudem gibt es keine einheitliche, allgemein akzeptierte Definition, weshalb sich daher an die Vorgaben von Volere [45] und der DIN-Norm DIN [20] gehalten und eine Auswahl der empfohlenen nicht-funktionalen Anforderungen erstellt worden ist. Akteureingaben Um mit der Anwendung interagieren zu können muss es dem Akteur ermöglicht werden bestimmte Eingaben zu tätigen. Die meisten Eingaben, die an einem Android Smartphone getätigt werden, geschehen per Touchscreen. Dies sind neben einfachen Klicks auch Texteingaben und Multitouch Gesten [50]. Es existieren zwar auch Geräte mit einer physischen Tastatur, wie z.b. das Motorola Milestone, welches als Entwicklungsgerät zur Verfügung gestanden hat, allerdings sind diese auf dem Markt in der deutlichen Minderheit, weshalb die Anwendung vor allem für die Benutzung per sogenannter Soft-Tastatur erstellt worden ist. Aussehen und Handhabung (Look and Feel) Eine einheitliche Benutzeroberfläche der Anwendung erleichert die Benutzbarkeit und die Bedienbarkeit dieser. Häufig erscheinende Elemente der Benutzeroberfläche sollten nach Möglichkeit stets an derselben Stelle auffindbar sein. Dies bedeutet beispielsweise, dass bei den Funktionen Suchen und Archivieren die

34 Bachelor-Thesis 29 jeweiligen Knöpfe zum Anstoß der Aktion stets am unteren Bildschirmrand zu finden sein werden. Die Einhaltung der Einheitlichkeit führt letztlich dazu, dass der Akteur sich schnell auf allen möglichen Bildschirmseiten zurechtfinden wird. Neben der Einheitlichkeit der Benutzeroberfläche, sollte auch die Farbgebung so gewählt werden, dass Texte und Schriften gut lesbar sind. Somit ist darauf zu achten, dass ein hoher Kontrast zwischen Schriftfarbe und Hintergrundfarbe besteht. Den besten Kontrast bietet schwarze Schrift auf weißem Grund. Desweiteren sollten Hintergründe einfarbig sein oder nur dezente Muster haben, damit sie den Akteur von der eigentlichen Funktionalität nicht ablenken. Zudem sollte darauf verzichtet werden, dass Texte mit Effekten wie Blinken oder Größenänderung versehen werden, da dies ebenso nur zur Ablenkung des Akteurs führt. Desweiteren sollte sich das Aussehen der Anwendung an den Android Standard halten und dessen vorgefertigte Benutzeroberflächen Elemente und Funktionen verwenden. Die vorhandenen Benutzeroberflächen Elemente sind bei Android so erstellt worden, dass sie sehr gut für die Benutzung eines Smartphones geeignet sind und es daher keiner weiteren Anpassung seitens des Entwicklers bedarf. Zudem ist es sinnvoll diese einzusetzen, da es dem Akteur in puncto Aussehen keine größere Eingewöhnungszeit abverlangt, da er die angesprochenen Oberflächenelemente bereits von anderen Programmen her auf dem Smartphone kennt und sich somit recht schnell zurechtfinden wird. Benutzbarkeit Die Bedienung eines Smartphones gestaltet sich grundlegend anders, als die eines Desktop Computers. Zum einem wird ein Smartphone ohne dem derzeit wohl wichtigsten Eingabegerät am Desktop Computer, der Maus (engl. Mouse), bedient, zum anderen ist der Platz für die Darstellung von Informationen auf einem Smartphone-Bildschirm deutlich geringer als jener, den eine Desktop Anwendung in Anspruch nehmen kann. Typische Desktop Komplettsysteme werden heutzutage bereits mit 22"LCD Displays ausgeliefert, wohingegen die übliche Größe eines Smartphone Displays bei etwa 3,5"bis 4"liegt. Es muss somit darauf geachtet werden, nur die auch wirklich sinnvoll für eine mobile Plattform umsetzbaren Funktionen zu implementieren. Das bedeutet, die geringe Größe des Display muss optimal genutzt werden, um die entsprechende Funktionalität einer Anwendung zur Verfügung stellen zu können. Allerdings muss auch darauf geachtet werden, den Bildschirm nicht mit zu vielen Informationen zu überladen, damit der Akteur vom eigentlichen Inhalt nicht abgelenkt wird. Leistung und Effizienz Auch wenn das Niveau der Rechenleistung bei mobilen Geräten mittlerweile recht hoch ist, ist es doch im Vergleich zu aktuellen Desktop Computern relativ gering und der Speicherplatz, sowohl des Hauptspei-

35 Bachelor-Thesis 30 chers, als auch der des permanenten Speichers, beispielsweise in Form einer SD-Card [7], ist recht knapp gehalten. Zudem sind mobile Geräte von Natur aus nicht permanent an einen festen Stromanschluss gebunden, sondern werden per aufladbarer Batterie bzw. Akku [44] betrieben. Umso wichtiger ist es darauf zu achten die gegebene Leistung sinnvoll und effizient zu Nutzen. Als Entwickler sollte es somit vermieden werden teure Funktionsaufrufe oder Schleifendurchläufe zu erzeugen. Auch wenn die Aufrufe an sich nicht besonders viel Leistung in Anspruch nehmen, summiert sich deren Häufigkeit, was wiederum zu erhöhten Batterieverbrauch führen kann. Somit ist die Anwendung in jedem Fall auf Effizienz zu prüfen um den Anforderungen an eine mobile Anwendung gerecht zu werden. Wartbarkeit, Änderbarkeit Um eine Anwendung einfach wartbar zu gestalten, ist es für den Entwickler wichtig ein gutes Konzept zu entwickeln. Das bedeutet, dass funktional unterschiedliche Programmteile, wie z.b. Programmlogik, Benutzeroberflächen, Schnittstellen, Datenhaltung und Hilfsklassen voneinander getrennt werden bzw. nur lose miteinander gekoppelt sein sollten. Nützlich es ist zudem eine sinnvolle Paketstruktur zu kreieren, mithilfe dessen die Programmteile sortiert werden. Die Beachtung dieser nicht-funktionalen Anforderung ist nicht nur für den Entwickler der Anwendung interessant, sondern auch für Personen, die nicht unmittelbar mit der Entwicklung des Quelltexts zu tun hatten, diesen aber evtl. durchsehen, berichtigen oder erweitern müssen. Üblicherweise arbeitet auch nicht ein einzelner Entwickler an der Entstehung eines Programms mit, sondern sind es zumeist viele verschiedene Personen, die daran mitwirken. Somit kommt all diesen unterschiedlichen Personen eine einheitliche Struktur entgegen um die Wartbarkeit und Änderbarkeit einer Anwendung zu gewährleisten. Portierbarkeit und Übertragbarkeit Da Google Android als OpenSource Projekt gestartet und den Programmcode veröffentlicht hat, gibt es für jeden Hersteller eines Smartphones die Möglichkeit seine eigene, angepasste Version von Android zu implementieren. Hierbei verfolgen die Hersteller unterschiedliche Vorgehensweisen. Einige Hersteller übernehmen die neuesten Android Versionen mit nur geringen Anpassungen an die eigenen Geräte, andere wiederum modifizieren die Software recht intensiv und fügen eigene Anwendungen hinzu und ändern teilweise die Benutzeroberfläche und somit das Look and Feel des Systems. Der Entwickler kann in einer speziellen Datei, der AndroidManifest.xml (siehe 2.2) festlegen, welches API Level und somit welche Version des Betriebsystems die Anwendung mindestens voraussetzt (Aktuellste Android Version 2.2 Froyo API Level 8, Stand Juli 2010). Sofern sich durch neuere Android Versionen keine grundlegenden Funktionen ändern und der Entwickler gezwungen ist die Mindestanforderungen an

36 Bachelor-Thesis 31 das Betriebssystem sehr hoch zu setzen, ist es dem Entwickler ebenfalls nahe zu legen seine Anwendung für ein breites Spektrum an Geräten zur Verfügung zu stellen. Beispielsweise ist es nicht notwendig die eigene Anwendung auf die aktuellste Version 2.2 zu beschränken, da jene Veröffentlichung (engl. Release) vornehmlich Fehlerbereinigungen und Leistungssteigerungen enthält. Somit kann die Anwendung als Mindestvoraussetzung etwa auf Android 2.0 Eclair setzen, welches einige Smartphones noch als derzeit aktuellste Version vom Gerätehersteller zur Verfügung gestellt bekommen. Ältere Versionen, etwa Android 1.5 Cupcake und Android 1.6 Donut weisen schon größere Unterschiede im Gegensatz zu den 2.x Versionen auf, was vor allem die Programmierschnittstellen betrifft. Um die Kompatibilität mit jenen Versionen zu gewährleisten muss der Entwickler entsprechende Vorkehrungen treffen, welche teils nicht immer möglich sind, was wiederum dazu führt, dass nur noch neuere Geräte unterstützt werden können. Diese Entscheidung liegt im Ermessen des Entwicklers, wobei hier ein Zielkonflikt auftritt, ob die eigene Anwendung einer möglichst grossen Masse an Geräten, und somit potenziell zahlenden Kunden, zur Verfügung gestellt werden, oder ob es die neuesten Funktionen enthalten soll und entsprechend einige Nutzer (zunächst) außen vor bleiben. Sicherheitsanforderungen Die Sicherheitsanforderungen an mobile Geräte und deren Anwendungen sind ebenso hoch, wenn nicht sogar höher anzusetzen als bei Desktop Computern. Da ein mobiles Gerät seiner Bestimmung nach oftmals mit dem Anwender unterwegs ist, kann es durchaus passieren, dass es sowohl liegen gelassen, als auch entwendet wird, oder auf anderem Wege verloren geht. Dies ist sicherlich sehr ärgerlich. Noch ärgerlicher wäre es allerdings, wenn vertrauliche Daten wie z.b. Passwörter frei einsehbar sind, vor allem für die Augen unbefugter Personen. Dies sollte somit in jedem Fall verhindert und entsprechende Vorkehrungen getroffen werden. Eine Möglichkeit dies zu realisieren ist, dass gespeicherte Passwörter innerhalb der Anwendung nicht in Klartext, sondern verschlüsselt gespeichert werden. Zudem sollte, nach der Auswahl des Profils für die Anmeldung am ECM-System, nicht automatisch das, dem Profil zugehörige Passwort im Eingabefeld erscheinen, bzw. sollte es dem Akteur vorbehalten sein eine entsprechende Option hierfür zu haben dies an und abzustellen. Ein weitere Sicherheitsmaßnahme ist die Sicherheitsabfrage vor der Löschung einer Datei. Oftmals hat der Akteur schlicht auf die falsche Datei geklickt und es wäre fatal, wenn durch solch eine Unachtsamkeit ein wichtiges Dokument gelöscht werden sollte, erst recht, wenn es noch nicht im ECM-System hinterlegt worden ist.

37 Bachelor-Thesis 32 Zudem verfügt Android über ein Berechtigungssystem, dass den Akteur vor der Benutzung, genauer, vor der Installation der Anwendung warnt, und auflistet, auf welche Systemfunktionen die Anwendung zugreifen möchte. Das sind z.b. Zugriffe auf die gespeicherten Kontaktdaten, Zugriff auf das Internet und auf Netzwerke im Allgemeinen. Beantwortet der Akteur die Warnung positiv und lässt Android die Anwendung installieren, so muss er sich bewusst sein, dass der Anwendung jedweder Zugriff gestattet wird, was wiederum ein Sicherheitsrisiko darstellen kann. Flexibilität (Unterstützung von Standards) Um flexibel zu sein ist es für den Entwickler sinnvoll vorhandene Standards einzusetzen und zu unterstützen. Dies ist nicht nur im Sinne der Flexibilität interessant, sondern auch unter dem Aspekt, dass Standards in der Regel bereits eine Vielzahl an Testszenarien bestanden haben und somit für den sicheren und zuverlässigen Einsatz bestens geeignet sind. Zudem werden Standards meist gepflegt, weiterentwickelt und durch Konsortien von IT-Firmen unterstützt. Android an sich unterstützt bereits viele Standards, die beim Aufbau der Programmstruktur helfen, wie z.b. XML und bietet reichhaltige Bibliotheken für die Implementierung weiterer Standards innerhalb der Anwendung wie z.b. JSON (JavaScript Object Notation) [32], HTTP [46] und TCP/IP (Transmission Control Protocol/Internet Protocol) [27]. Zudem wird das Datenbanksystem SQLite [39] direkt implementiert und kann vom Entwickler daher unkompliziert für die eigene Anwendung genutzt werden. Ein weiterer Punkt, um innerhalb der Anwendung flexibel zu sein betrifft den Aspekt, die Anwendung mehrsprachig entwerfen zu können. Dies ist dank der Datei strings.xml in Android möglich, welche für verschiedene Sprachen angelegt werden kann und somit den Text vom eigentlichen Programmcode trennt. Zusammenfassung Das Kapitel Produktfunktionen und Anforderungen hat verdeutlicht, welche Erwartungen an die Anwendung vor der Implementierung gestellt wurden. Hierzu sind diese in funktionale und nicht-funktionale Anforderungen unterteilt und ausführlich beschrieben worden. Zudem wurde visuell verdeutlicht, welche Anwendungsfälle ein Benutzer ausführen kann und was genau deren Abhängigkeiten untereinander sind. Das nächste Kapitel gibt einen Einblick in die Konzeption der Anwendung und beschreibt die zu Grunde liegende Architektur und erläutert deren Aufbau anhand detaillierter Beschreibung der verwendeten Klassen.

38 Bachelor-Thesis 33 4 Konzept und Design Im Kapitel Konzept und Design wird die zugrunde liegende Architektur der Anwendung vorgestellt und die erstellten Klassen und deren Funktionen erläutert. Hierbei wird separat auf den Client und den Server eingegangen. Der Abschnitt Konzeption befasst sich mit den in Android zur Verfügung stehenden Möglichkeiten der Oberflächengestaltung, Datenspeicherung und Kommunikation mit dem Server. Desweiteren wird beschrieben, welche verschiedenen Varianten für die Kommunikation zwischen Client und Server getestet werden mussten, bis das finale Konzept stand. 4.1 Konzeption Dieser Abschnitt befasst sich mit der Konzeption der grundlegenden Bestandteile der Anwendung, wie der Kommunikation zwischen dem Client und dem Server, der Oberflächengestaltung und der Art wie Daten persistent gespeichert werden. Hierbei wird beispielsweise erläutert, welche Elemente zur Gestaltung der Benutzeroberfläche verwendet worden sind und welche, der in Android zur Verfügung stehenden Varianten zur persistenten Datenspeicherung genutzt worden ist. Datenpersistenz Android stellt mehrere Varianten zu Speicherung von Daten über den Lebenszyklus einer Anwendung hinaus zur Verfügung. Eine Möglichkeit ist, Daten in Form einer Datei innerhalb des Anwendungsverzeichnis abzulegen. Eine weitere Möglichkeit ist, die Daten per SQLite Datenbank zu speichern, welche direkt in Android implementiert ist. Jedoch hat die Variante, Daten mithilfe von SharedPreferences zu speichern, den Vorzug erhalten. Mit SharedPreferences ist es in einfacher Weise möglich, Schlüssel-Wert Paare unter einem freiwählbaren Verzeichnisnamen zu speichern. Das bedeutet, es wurde beispielsweise für die Speicherung der Profildaten, der Verzeichnisname UserPreferences gewählt und die Daten entsprechend mit Namen und Passwort gespeichert. Ebenso funktioniert die Speicherung der Daten des Einstellungsmenüs. Das aktive Profil, der aktuell gewählte Port und Server, sowie weitere Boolean-Werte, die per CheckBox einstellbar sind, werden im internen default-verzeichnis des Einstellungsmenüs mit einem eindeutigen Schlüssel wie z.b. currentuser, currentserver oder currentport und dem entsprechenden Wert abgelegt. Benutzeroberfläche Für die Gestaltung der Benutzeroberflächen (engl. Graphical User Interface, GUI) wurden stets vorgefertigte Standard-Oberflächenelemente genutzt, wie z.b. Button, TextView, Spinner, EditText und CheckBox. Diese Standard-Oberflächenelemente befinden sich innerhalb eines LinearLayout, was dafür sorgt, dass die Elemente zeilenweise angeordnet werden. Das LinearLayout wiederum ist stets von einer ScrollView umgeben, damit der Benutzer auch Oberflächenelemente per Scrolling [33] erreichen kann, die aufgrund von

39 Bachelor-Thesis 34 Platzmangel nicht permanent dargestellt werden können. Zudem stellt jede erreichbare Seite ein Optionsmenü zur Verfügung, das per Optionstaste am Gerät aufgerufen werden kann. Die Definition der Layouts und Oberflächenelemente wurde bevorzugt in einer XML-Datei durchgeführt, welche die entsprechende Activity (siehe 2.2) zur Darstellung am Beginn ihres Lebenszyklus aufruft. Es sind zudem neben den Standard-Oberflächenelementen auch lediglich Android Standard-Styles, Themes und Farbschemata verwendet worden, da diese bereits für die Verwendung mit einem Android Gerät optimiert worden sind. Zudem sind die drei meistbenutzten Oberflächen per Tab bzw. Registerkarte erreichbar um die Anwendung übersichtlich zu gestalten und wichtige Funktionen schnell erreichen zu können. Bei Daten, die in einer Listenansicht dargestellt werden, wurde auf spezielle Activities, wie ListActivity und ExpandableListActivity zurückgegriffen. Diese erlauben es in einfacher Weise Listenelemente zeilenweise anzuordnen und selektieren zu können. Dabei wurde ausgenutzt, dass in Android zwischen zwei verschiedenen Klick-Modi unterschieden wird, nämlich einem kurzen Klick (ShortClick) und einem langen Klick (LongClick). Per ShortClick wird die primäre Aktion ausgeführt, wie z.b. eine Datei zu öffnen oder bei der ExpandableListActivity die Unterpunkte aufzuklappen. Bei einem LongClick wird das Android Kontextmenü aufgerufen und dem Nutzer weitere Eingabemöglichkeiten zur Verfügung gestellt. Reagibilität In Android muss eine Anwendung responsive sein. Blockiert die Anwendung eine längere Zeit, beispielsweise in Form eines Wartedialogs, wird das Android Betriebssystem die Anwendung nach einer gewissen Zeit beenden und eine Fehlermeldung anzeigen. Diese Fehlermeldung wird als Application Not Responding (ANR) [1] Fehler bezeichnet. Um diesen Fehler zu verhindern, müssen vor allem bei zeitintensiven Programmabläufen nebenläufige Prozesse verwendet werden. Die Suche und die Archivierung wurde daher als Service (siehe 2.2) implementiert, womit ein asynchroner Kommunikationsverlauf entsteht. Das bedeutet, der Nutzer muss nicht warten, bis die Suche oder die Archivierung beendet worden ist, sondern kann nach dem Absetzen des jeweiliges Befehls die Anwendung weiter bedienen. Bei der Beendigung der Aktion wird dem Benutzer per Notification mittgeteilt, dass der Befehl komplett ausgeführt worden ist (siehe Abbildung 13). Diese Mitteilung ist anwendungsübergreifend und erscheint in der Statusleiste des Betriebssystems. Somit kann der Benutzer frei entscheiden, zu welchem Zeitpunkt er die Nachricht einsehen möchte, da die Mitteilung so lange in der Statusleiste verweilt, bis sie aufgerufen wird. Client-Server Kommunikation Für den Kommunikationsaufbau und den Datenaustausch zwischen Client und Server wurde auf JSON (JavaScript Object Notation) [32] und HTTP [46] zurückgegriffen. JSON ist ein leichtgewichtiges und einfach zu bedienendes Datenaustauschformat mit welchem sämtliche Daten wie Suchergebnislisten, Archivierungsinformationen und Sitzungsdaten zwischen Client und Server ausgetauscht werden. Die meisten

40 Bachelor-Thesis 35 Abbildung 13: Sequenzdiagramm Suche Daten werden hierbei als Schlüssel-Wert Paar übermittelt, wie z.b. die aktuelle TicketID, wohingegen die Liste der gefundenen Dokumente, nach einer erfolgreichen Suche, als JSON-Array übermittelt wird. Aufgrund der Einfachheit von JSON können die JSON-Objekte zudem leicht geparst und in die gewünschte Form für die Darstellung z.b. als ExpandableListActivity gebracht werden. Client-Server Konzeptvarianten Die ursprünglich geplante Konzeption basierte auf einer üblichen Client-Server Struktur. Der Server war bereits vorhanden und es sollte lediglich eine Client Anwendung erstellt werden, welche die gegebenen Schnittstellen implementiert und sich mit den Servern des ECM-Systems verbindet (siehe Abbildung 14). Die Schnittstelle, welche implementiert werden sollte, trägt den Namen Blueline und wurde bereits in Abschnitt 2.4 beschrieben. Bei einem Desktop System mit einer Standard Java-Laufzeitumgebung ist es üblich, die gegebenen Bibliotheken, welche üblicherweise als jar-pakete vorliegen, lediglich im Projekt bekannt zu machen und zu benutzen. Hierbei ist es zu Problemen gekommen, da die Laufzeitumgebung von Android sich deutlich von der Standard Java-Laufzeitumgebung unterscheidet, obwohl sie auf deren Grundlage entwickelt worden ist. Einige der Bibliotheken ließen sich mit dem dex-compiler nicht von Class- zu Dex-Dateien umwandeln (siehe Abschnitt 2.2). So war es nicht möglich die Schnittstellen Bibliotheken einzusetzen. Zudem dauerte es bei den Bibliotheken, die sich kompilieren ließen, sehr lange, bis sie im Dex-Format

41 Bachelor-Thesis 36 vorlagen. Dies lag daran, dass die zu kompilierenden Class-Dateien im Paket teilweise mehrere Megabyte groß waren und selbst mit aktuellen Desktop Computern kann die Kompilierung solcher Datenmengen mehrere Minuten dauern. Hinzu kommt noch die Tatsache, dass bei jeder Änderung des Quelltexts der Anwendung eine komplette Neukompilierung erforderlich gewesen wäre, was die Entwicklung stark verzögert und das Testen erschwert hätte. Abbildung 14: Android mit Blueline Da es nicht möglich gewesen ist die Blueline Schnittstelle innerhalb von Android zu integrieren, musste eine andere Lösung gefunden werden. Statt die Blueline Schnittstelle direkt zu implementieren, wurde die DOXiS Bridge eingesetzt, welche auf der Blueline basiert (siehe Abschnitt 2.4). Die DOXiS Bridge nimmt die Anfragen des Client zunächst entgegen und leitet sie danach an das ECM-System weiter, wie in Abbildung 15 verdeutlicht ist. Das bedeutet, die Funktionalität des ECM-Systems sollte per Webservice (siehe 2.3) genutzt werden. Da der Webservice der DOXiS Bridge auf SOAP [47] basiert, konnte dieser vermeintlich in Android mit entsprechender Erweiterung durch Bibliotheken genutzt werden. Möchte der Entwickler Android um die Funktionalität des SOAP Protokolls erweitern, so muss er auf die derzeit einzig verfügbare Bibliothek zugreifen, welche sich ksoap 2 [29] nennt. Abbildung 15: Android mit ksoap2 und DOXiS Bridge als Webservice Das Problem welches mit ksoap aufgetreten ist, zeigt sich wie folgt: Die DOXiS Bridge verlangt bei der Anmeldung am ECM-System nach Login-Daten, welche per String-Array übergeben werden müssen. Und

42 Bachelor-Thesis 37 genau diese Fähigkeit, String-Arrays zu übergeben, besitzt die ksoap Bibliothek nicht, weshalb bereits eine erfolgreiche Anmeldung am ECM-System nicht durchzuführen war. Die ksoap Bibliothek unterstützt nur die Benutzung von String-Vectors, welche zwar abgesendet werden konnten, aber auf der Gegenseite der DOXiS Bridge nicht angekommen sind, bzw. nicht interpretiert werden konnten. Da die vollständige Unterstützung des SOAP Standards nicht gegeben war und dessen Implementierung somit nicht möglich gewesen ist, musste erneut eine neue Variante ausprobiert werden. Um den Problemen der vorangegangenen Variante zu entgehen wurde versucht die DOXiS Bridge als RESTful Webservice (siehe 2.3) zu nutzen. Hierbei sollte die DOXiS Bridge per HTTP Client-Bibliothek, welche zuvor in Android eingefügt wurde, angesprochen und gesteuert werden, was in Abbildung 16 aufgezeigt wird. Abbildung 16: Android Client und DOXiS Bridge als RESTful Webservice Auch diese Variante schlug fehl, da es nicht gelang die HTTP Client-Bibliothek in Android so zu nutzen, dass die DOXiS Bridge in der Art einer RESTful-Application antwortet. Der Webservice wurde mithilfe von Axis2 [16] erstellt und repräsentiert daher sowohl einen REST- als auch einen SOAP-Endpunkt. Je nach Konfiguration der Apache HTTP Bibliotheken antwortet der Webservice entsprechend mit einem SOAP Envelope oder mit einer REST-konformen Antwort. Die Android HTTP Bibliotheken bieten keine speziellen Einstellungsmöglichkeiten um vom Webservice eine REST-konforme Antwort zu erhalten. Mit den Android HTTP Bibliotheken konnte die DOXiS Bridge zwar angesprochen werden und es wurde seitens des Webservice auch geantwortet, allerdings entsprach diese nicht der gewünschten Form, da der Webservice lediglich eine leere XML-Hülle zurücksandte. Die Apache HTTP Bibliotheken ließen sich nur mit der normalen Java Virtual Machine nutzen und konnten nicht in Android eingesetzt werden. Da die Versuche, die DOXiS Bridge als Webservice zu nutzen bisher alle fehlgeschlagen sind, wurde erneut auf die Blueline zurückgegriffen. Die Blueline wurde allerdings nicht in den Android Client implementiert, was aufgrund der Probleme mit der Übersetzung von Class- zu Dex-Dateien nicht funktioniert hatte, sondern sie wurde innerhalb eines zwischengeschalteten Servers als Middleware [10] implementiert (siehe Abbildung 17). Der Server basierte auf einer einfachen Java-Anwendung. Somit konnten die Blueli-

43 Bachelor-Thesis 38 ne Bibliotheken implementiert und genutzt werden, ohne dass die angesprochenen Kompilierungsprobleme auftraten. Eine Verbindung zwischen dem Client und dem Server wurde per Socket hergestellt, auf deren Grundlage miteinander kommuniziert werden konnte. Diese Lösung war lauffähig und funktionierte zuverlässig. Doch brachte sie auch die angesprochenen Probleme der erhöhten Komplexität mit sich, da die Blueline API sehr umfangreich ist. Der Entwickler ist gezwungen, selbst für einfache Anfragen an das ECM-System, eine Vielzahl an Programmzeilen zu erstellen. Zudem gab es Probleme bei der Übermittlung von Objekten, da diese serialisiert werden mussten und dies nicht bei allen Objekten möglich gewesen ist. Somit hätten in der vorgegebenen Zeit nur relativ wenige Funktionalitäten implementiert werden können, was nicht im Sinne aller Beteiligten war, zumal die eigentliche Aufgabenstellung gewesen ist, eine Client-Anwendung zu entwerfen, dessen Relevanz im Vordergrund stand. Abbildung 17: Android Client und Blueline Middleware Die finale Konzeptvariante kam durch ein Experiment zu Stande und sollte sich gegenüber den anderen Varianten als so überlegen erweisen, dass sie letztlich bestehen blieb. Wie schon erwähnt, ist die Blueline recht komplex und die Verwendung der DOXiS Bridge ist der Blueline in jedem Falle vorzuziehen, da sie bereits viele Anwendungsfälle abstrahiert und relativ leicht zu programmieren ist. Da bereits eine Vielzahl an Varianten, die DOXiS Bridge als Webservice zu benutzen, probiert worden sind, kam dies nicht mehr in Frage. Es spricht allerdings nichts dagegen, die zur Verfügung gestellte Funktionalität wie eine Bibliothek zu benutzen. Die Verwendung der DOXiS Bridge Klassen geschieht mithilfe einer Middleware, welche die DOXiS Bridge steuert und mit ihr zusammen ein Paket bildet, wie die Abbildung 18 verdeutlicht. Somit ergaben sich zweierlei Vorteile: Zum einen wurde die Komplexität der Blueline umgangen und zum anderen wurde die Nutzung als Webservice verhindert. Die Grundlage des Pakets aus DOXiS Bridge und der DOXiS Bridge Middleware bildet ein Apache Tomcat [18] Server. Dieser Server, genannt mobilecubeserver, kommuniziert auf der Basis von HTTP und JSON und antwortet entsprechend des Request-

44 Bachelor-Thesis 39 Abbildung 18: Android Client und DOXiS Bridge Middleware Response Zyklus [26]. Zudem wurde er als RESTful Application implementiert (siehe 2.3). Nach dem Empfang der Daten gibt der Server die benötigten Informationen an die DOXiS Bridge weiter, welche wiederum die eigentliche Kommunikation mit den ECM-Servern herstellt. Die Antwort der ECM-Server geht zurück an die DOXiS Bridge, welche sie weiter an die Steuerklassen leitet. Diese wiederum schicken die Daten an den Android Client, womit ein kompletter Kommunikationsdurchlauf beendet worden ist. 4.2 Client In diesem Abschnitt wird die Architektur der finalen Version des Client erläutert. Es werden die einzelnen Schichten beschrieben und die interne Kommunikation zwischen den GUI, Logik und Verbindungsklassen verdeutlicht. Zudem werden weitere Designentscheidungen erklärt, wie z.b. die Verwendung einer übergeordneten Logikklasse, von welcher die übrigen Logikklassen abgeleitet werden. Architektur Neben der vordefinierten Projektstruktur, die einem Android Projekt zugrunde liegt, muss sich auch innerhalb des src-ordners für eine Struktur, seitens des Entwicklers, entschieden werden. Die Architektur, die hierbei zugrunde liegt wird anhand der erstellten Java-Klassen erläutert. In der Designphase wurde sich für eine typische Schichtenarchitektur entschieden, welche die Funktionen der Programmteile logisch voneinander abtrennt und sich in der Aufteilung der Java-Pakete, bis auf einige Ausnahmen (siehe Abbildung 19), widerspiegelt. Die oberste Schicht repräsentiert die Benutzeroberfläche, in welcher sich hauptsächlich Klassen aus dem Paket ui vorfinden. Diese Klassen sind fast alle von der Android internen Oberklasse Activity (siehe 2.2) abgeleitet, was sie somit selbst zu Activities macht und zur Darstellung der Bildschirmseiten genutzt werden. Eine Ebene darunter befindet sich die Logik Schicht. Diese Schicht ist die umfangreichste Schicht der Architektur und enthält neben dem logic-paket, dessen Klassen sich vor allem um die Verarbeitung der eingehenden Benutzeroberflächen Daten kümmern, auch die Pakete thread, exception, util und

45 Bachelor-Thesis 40 Abbildung 19: mobilecube Schichtenarchitektur vor allem connection, dessen Klassen sich um die Kommunikation mit dem Server kümmern. Die unterste Schicht stellt die Persistenzschicht dar. Sie sorgt dafür, dass eingegebene Profildaten, Einträge des Einstellungsmenüs und die heruntergeladenen Dateien auch über den Lebenszyklus der Anwendung hinaus existieren. Um die einzelnen Schichten der Architektur besser verstehen zu können, wird im folgenden Abschnitt genauer auf die wichtigsten Klassen des Client eingegangen und erläutert was deren Aufgabenstellung innerhalb der Anwendung ist. Dazu wird jedes Paket im einzelnen betrachtet, angefangen bei der obersten Schicht: ui Wie bereits erwähnt sind die Klassen innerhalb des ui-pakets von der Oberklasse Activity abgeleitet. Activities bieten die Möglichkeit für den Nutzer mit dem System zu interagieren (siehe auch 4.1). Die Klassen CubeArchive, CubeArchiveResult, CubeCamera, CubePreferencesServer, CubeSearch und CubeSession sind Standard-Activities und repräsentieren einfache Bildschirmseiten. Neben den Standard- Activities sind auch speziell angepasste Activities eingesetzt worden, was bei CubeLocal mit einer ListAc-

46 Bachelor-Thesis 41 tivity, bei CubePreferences mit einer PreferenceActivity, bei CubeSearchResult mit einer Expandable- ListActivity und bei MainTabHost mit einer TabActivity der Fall ist. Deren Aufgabe wird bei der folgenden Vorstellung der einzelnen Klassen näher betrachtet. Abbildung 20: Activities CubeArchive, CubeLocal, CubePreferences, CubeSession CubeArchive hat die Aufgabe, anhand der möglichen Archiv- bzw. Dokumentklassen zu einem Profil, einen Dialog zusammenzustellen (siehe Abbildung 20, linkes Bild). Die Elemente des Dialogs sind typischerweise Eingabefelder und deren Beschreibungen. Zudem enthält der Dialog noch spezielle Date Widgets (engl. für Fensterkomponenten) um auf einfache Weise Datumsangaben tätigen zu können. Nach der Eingabe wird per Knopfdruck der Archivierungsvorgang gestartet und der Nutzer bekommt die CubeArchiveResult Activity zu sehen, welche recht einfach aufgebaut ist und nur aus Textfeldern besteht. Die Aufgabe besteht darin dem Nutzer eine Zusammenfassung der eingegebenen Archivierungsdaten zu liefern. Ebenso wie die CubeArchive Activity hat die CubeSearch Activity die Aufgabe, anhand der Suchklassen, einen Dialog aufzubauen. Auch hier gibt es hauptsächlich Eingabefelder, Textfelder, Date Widgets und den Starte Suche-Knopf, welcher eine Suche anhand der gelieferten Daten startet. Sollte die Suche erfolgreich gewesen sein bekommt der Benutzer per Notification (Benachrichtigung) eine Nachricht auf den Bildschirm. Diese Nachricht ist anwendungsübergreifend, das bedeutet, der Benutzer erhält die Nachricht auch, falls der Client nicht mehr die aktive Applikation im Vordergrund sein sollte. Dies kann der Fall sein, falls die Suche etwas länger gedauert hat und der Nutzer in der Zwischenzeit die Anwendung verlassen haben sollte. Die eingehende Nachricht erscheint in der Hauptleiste am oberen Rand eines

47 Bachelor-Thesis 42 Android Systems. Per Klick auf die entsprechende Schaltfläche wird der Benutzer zur CubeSearchResult weitergeleitet. CubeSearchResult ist eine spezielle Activity vom Typ ExpandableListActivity. Jedes Element des Suchergebnis ist somit erweiterbar (engl. expandable) bzw. kann aufgeklappt werden um weitere Informationen, wie in diesem Fall Metadaten zu dem Dokument, darzustellen. Zudem kann per Long Click auf ein Element das Kontextmenü geöffnet werden, welches die Möglichkeit zu einer Detailansicht bietet oder den Download einer Datei einleitet und diese anschließend öffnet. CubeCamera wird zwar von einer normalen Activity abgeleitet, verhält sich allerdings untypisch. Mithilfe dieser Activity werden keine GUI-Elemente angezeigt, sondern es wird die eingebaute Kamera des Smartphones aktiviert und im Display erscheint die Ansicht, welche das Objektiv momentan erfasst. Das bedeutet, dass per CubeCamera Photos gemacht werden können, welche im zugehörigen Verzeichnis des aktuellen Profils gespeichert werden. Aufgelistet werden die Photos, wie auch weitere, bereits im Verzeichnis enthaltene Dateien per CubeLocal Activity (2. Bild von links auf Abbildung 20). CubeLocal ist abgeleitet von einer ListActivity und hat entsprechend die Aufgabe, die Dateien in Listenform darzustellen. Jedes Listenelement besteht aus dem Dateinamen und dem zugehörigen Icon, welches anhand der Dateiendung ermittelt wird. Zudem ist jedes Listenelement selektierbar und hat ein Kontextmenü hinterlegt, mit welchem weitere Datei-Aktionen ausführbar sind. Die Activity CubeSession besteht aus Eingabe Schaltflächen und Textfeldern (siehe Abbildung 20, rechtes Bild). Mithilfe dieser Activity kann der Nutzer Sitzungseinstellungen vornehmen. Dies umfasst die Anund Abmeldung vom ECM-System, sowie die Überprüfung der Sitzung auf Gültigkeit. Zudem können Profildaten eingetragen werden. Diese können ebenfalls editiert und gelöscht werden. Eine weitere spezielle Activity ist CubePreferences. Sie ist von PreferenceActivity abgeleitet und definiert das Aussehen der Anwendungseinstellungen (2. Bild von rechts auf Abbildung 20). Hierfür gibt es vorgefertigte Elemente die speziell an die übersichtliche Darstellung von Anwendungseinstellungen angepasst sind, wie CheckBoxPreference, welche einfache true oder false Werte beschreibt. Dies wird genutzt, wenn der Benutzer die automatische Konvertierung von TIFF- zu PDF-Dateien aktiviert hat oder sein Passwort innerhalb der Anwendung speichern möchte. Desweiteren gibt es ListPreference, mit dessen Hilfe der Nutzer aus einer Liste von Werten einen bestimmten auswählen kann. Dies ist unter anderem bei der Wahl des aktuellen Profils genutzt worden, da nur ein Profil zur gleichen Zeit aktiv sein kann. Per Schaltfläche PreferenceScreen wird der Benutzer zu einer weiteren Activity weitergeleitet. In diesem Fall

48 Bachelor-Thesis 43 zu CubePreferencesServer, welche wiederum eine normale Activity mit Schaltflächen und Textfeldern ist, auf welcher Server und Port Einstellungen getätigt werden können. Die letzte verwendete Activity ist MainTabHost. Der MainTabHost ist als TabActivity realisiert worden und kapselt andere Activities. Das bedeutet, dass die Activities CubeLocal, CubeSession und CubeSearch als Tab aufrufbar sind, somit leicht erreicht werden können und unnötiges navigieren durch viele Oberflächen erspart bleibt. logic Sämtliche Klassen innerhalb des logic Pakets sind den entsprechenden Activities aus dem ui-paket zugehörig. Deren Aufgabe ist vor allem die Verarbeitung der eingehenden Benutzereingaben, welche mit Textfeldern, Ankreuzfeldern, Schaltflächen oder dem Kontext- und Optionsmenü getätigt worden sind. Alle Klassen innerhalb des Pakets haben zudem die Klasse CubeLogic zur Oberklasse. Die Klasse CubeLogic hält wichtige Daten, welche während der Verarbeitung sämtlicher Funktionen, wie der Suche und dem Archivieren, gebraucht werden. Innerhalb der Klasse gibt es somit keine Funktionen, sondern diese besteht nur aus Variablendefinitionen. Eine Auflistung und Erklärung aller Variablen würde an dieser Stelle den Rahmen sprengen, weshalb nun einige stellvertretend beschrieben werden: Beispielsweise stellt eine dieser Variablen die TicketID dar, welche der Benutzer nach der Anmeldung am ECM-System erhalten hat und in weiteren Klassen für die Interaktion mit dem ECM-System oftmals benötigt wird. Ebenso sind auch die Informationen über das aktuelle Profil und dessen Zugangsdaten hinterlegt. Desweiteren gibt es eine enum-definition, welche Informationen über den aktuellen Verbindungsstatus einer Anfrage an das ECM-System hält. Die Eingaben innerhalb der ListActivity CubeLocal verarbeitet CubeLocalLogic. Mithilfe dieser Logik- Klasse ist es möglich Dateien zu öffnen, zu bearbeiten, zu löschen, zu sortieren und zum Archivierungsdialog weiterzuleiten. Zudem werden TIFF-Dateien automatisch in PDF-Dateien umgewandelt, da es für Android derzeit noch keinen TIFF-Betrachter gibt, diese Dateien allerdings, laut den Anforderungen, angezeigt werden müssen. Desweiteren hat CubeLocalLogic die Aufgabe auf die Activity CubeCamera weiterzuleiten, damit Bilder von Dokumenten erstellt werden können. Die Klasse CubeArchiveLogic ist dafür zuständig, den Dateiupload einzuleiten. Das bedeutet, dass in der Funktion void uploadfiles() der Service, der für den eigentlichen Upload zuständig ist, gestartet wird. Zudem stellt die Klasse die benötigten Archiv- bzw. Dokumentenklassen (siehe 2.4) für die Darstellung des Archivierungsdialogs aus dem JSON-Objekt bereit. Erst mithilfe dieser Dokumentenklassen ist es

49 Bachelor-Thesis 44 möglich einen Archivierungsdialog anzuzeigen. Diese Daten werden unmittelbar nach der Anmeldung am ECM-System empfangen, da hierfür eine gültige Sitzung benötigt wird und die Daten anhand des Profils ermittelt werden. Das Pendant zur CubeArchiveLogic ist die Logik-Klasse CubeSearchLogic. In dieser Klasse werden die benötigten Informationen für den entsprechenden Suchdialog aus dem JSON-Objekt bereitgestellt. Auch die Suche nach Dokumenten wird, wie beim Archivierungsvorgang, per Service eingeleitet. Die Listenelemente, welche durch die Activity CubeSearchResult nach erfolgreicher Suche dargestellt werden, sind zunächst in der CubeSearchResultLogic bearbeitet worden. Die Funktion showsearch Result sorgt dafür, dass die Suchergebnisse, welche per JSON-Objekt geliefert werden, mithilfe einer ExpandableListActivity dargestellt werden können. Zudem leitet die Klasse den Download einer Datei per representationrequest ein. Per CubeSessionLogic werden sämtliche Modifikationen eines Benutzerprofils gesteuert. Das betrifft sowohl die Erstellung, die Editierung als auch die Löschung. Zudem leitet die Klasse auch die Erstellung einer Sitzung sowie die Prüfung auf Gültigkeit einer Sitzung und die Schließung der Sitzung ein. Die CubePreferencesLogic ist eine wichtige Klasse für Daten, die permanent gespeichert werden sollen. Dies betrifft Daten, die per Einstellungsmenü hinterlegt werden, wie z.b. die Eingabe und die Auswahl der Server IP und des zugehörigen Ports. Zudem wird das ausgewählte Profil gespeichert und Einstellungen, welche die Speicherung des Passworts für die Anmeldung betreffen. Ebenso wird festgelegt, ob die automatische Konvertierung von TIFF- in PDF-Dateien aktiviert werden soll. Desweiteren können mithilfe dieser Klasse bereits gespeicherte Daten, wie Profile, Server IPs und Ports auch wieder gelöscht werden. thread Das Paket thread beinhaltet Klassen, welche jeweils von java.lang.runnable abgeleitet sind. Sie werden dafür genutzt um Aktionen in einem eigenen Thread ausführen zu können. Die ist unter anderem notwendig, damit ein Wartedialog angezeigt werden kann, der den Benutzer darauf aufmerksam macht, dass ein Vorgang noch nicht abgeschlossen ist. Es können auch Aktionen gestartet werden, die im Hintergrund laufen ohne dass ein Wartedialog erscheint, welche per Service implementiert werden (siehe 4.1). Die Klasse TiffConverterThread kapselt den Aufruf einer externen Bibliothek zur Konvertierung von TIFF- zu PDF-Dateien. Eine sehr wichtige Aufgabe innerhalb der Anwendung erfüllt die TimeoutObserver Thread Klasse. Die Aufgabe der Klasse ist es, die Suche, die Archivierung und den Dateiupload zu kapseln und dafür zu sorgen, dass die Aktion nach Überschreitung einer definierten Zeit abgebrochen wird. Der

50 Bachelor-Thesis 45 WorkerThread leitet die eigentliche Verbindung mit dem ECM-System ein. Das bedeutet, dieser Thread wird durch den TimeoutObserverThread gekapselt und wird im Falle der Zeitüberschreitung beendet. exception Bei der Eingabe der Profildaten wird eine Überprüfung auf syntaktische Korrektheit der Daten durchgeführt. Im Falle einer Fehlermeldung werden, je nachdem welche eingegebenen Parameter fehlerhaft sind, die entsprechenden Ausnahmen geworfen. Dies ist eine InvalidUsernameException im Falle einer fehlerhaften Eingabe des Benutzernamens und eine InvalidPasswordException falls das Passwort syntaktische Fehler aufweist. Die Überprüfung betrifft hierbei die Länge der eingegebenen Zeichenkette und ob Leerzeichen enthalten sind. connection Das Paket connection enthält wichtige Klassen bezüglich der Verbindung mit dem ECM-System. Die wichtigste Klasse ist hierbei CubeBridgeConnector. Diese Klasse wird vom WorkerThread aufgerufen und stellt die Verbindung per HTTP mit dem ECM-System her. Die empfangene Antwort wird, je nach aufgerufener Funktion, an die dafür zuständige Klasse weitergeleitet. Es existiert für jede mögliche Funktion, die mit dem Client ausgeführt werden kann, eine Antwortklasse. Das bedeutet, die Klasse Archive verarbeitet die eingehenden Server Daten des Archivierungsvorgangs, die Klasse Search, die Daten der Suche, usw. Die verschiedenen Klassen sind notwendig, damit nach jeder durchgeführten Interaktion mit dem ECM-System eine spezifische Aufgabe erfüllt und Antwort generiert werden kann, wie z.b. die Speicherung der TicketID nach der Anmeldung mit entsprechender Erfolgsmitteilung an den Benutzer. Analog dazu geschieht dies in den weiteren Klassen. Desweiteren enthält das Paket noch die Klasse ConnectionService, welche z.b. die Suche und die Archivierung als Service implementiert und dafür sorgt, dass diese Aktionen im Hintergrund ausgeführt werden und somit die Benutzeroberfläche nicht mit einem Wartedialog blockiert wird (siehe 4.1). Bei der Klasse Connection handelt es sich um ein Interface, welches für die Implementierung des Command Pattern [EG94] benötigt wird. Die Implementierung des Interface wird genutzt um die entsprechende Klasse zur Verarbeitung der Server Antwort zu ermitteln. Nach dem Empfang der Daten vom Server wird je nachdem beispielsweise ein Wartedialog gelöscht oder eine Textnachricht angezeigt. util ActivityUtil erstellt unter anderem Intents, welche gebraucht werden um z.b. Anfragen des Client an Drittprogramme weiterzuleiten. Das wird benötigt damit eine PDF-Datei mit einem PDF-Betrachter auf dem Smartphone geöffnet werden kann. Zudem wird mit der Klasse ein Wartedialog erstellt, dessen Aufbau mit Ausnahme des Informationstexts immer identisch ist und daher ausgelagert werden kann.

51 Bachelor-Thesis 46 ConnectionUtil liest den JSON String aus dem InputStream welcher per URLConnection übermittelt wird. Zudem setzt die Klasse beim Start einer neuen Verbindung zum ECM-System die Verbindungsparameter wieder in den Ursprungszustand zurück. Dies sind unter anderem der Name der hochzuladenden Datei oder der aktuelle Verbindungsstatus, welcher in diesem Fall von SUCCESSFUL auf PROCESSING gesetzt wird. Die Hilfsklasse IOUtil unterstützt bei sämtlichen Dateioperationen. Das umfasst die Trennung des Dateinamens in deren Namen und Dateinamen-Endung und das Entfernen der Datei aus dem Dateisystem. Zudem wird anhand des aktivierten Profils der korrekte Pfadname für die Speicherung der Dateien ermittelt. Um eine Datei in das ECM-System hochladen zu können, muss diese zunächst in einen Stream geschrieben werden, was die Hilfsklasse MultiPartOutputUtil durchführt. Die Klasse SimpleCrypto sorgt dafür, dass das Password eines Profils per AES (Advanced Encryption Standard) [Dae02] verschlüsselt gespeichert wird, falls der Benutzer die Option zur Speicherung des Passworts aktiviert haben sollte. Um eine TIFF- in eine PDF-Datei konvertieren zu können wird eine externe Bibliothek benötigt, welche per Tiff2PDF genutzt wird. root Das übergeordnete Paket enthält lediglich die Datei MobileCubeApp, welche von Application abgeleitet wird und den Einstiegspunkt eines Android Programms markiert. Dadurch, dass diese Klasse vom Typ Application ist, wird der Android interne Application Manager informiert, welcher für die Zuteilung des benötigten Hauptspeichers und anderer Ressourcen zuständig ist. 4.3 Server Im folgenden Abschnitt wird beschrieben, auf welche Art die Klassen der DOXiS Bridge verwendet werden und wie diese, zusammen mit den Steuerklassen, die mobilecubeserver-architektur ergeben. Da der Server als RESTful Application (siehe 2.3) konzipiert wurde, wird an den entsprechenden Stellen erklärt, wie die Funktionalitäten umgesetzt wurden. Architektur Betrieben wird der Server mithilfe eines Apache Tomcat [18] Server. Das Grundgerüst des Servers besteht aus der DOXiS Bridge (siehe 2.4) und Klassen, welche die Funktionalität der DOXiS Bridge implementieren, wie die Abbildung 21 verdeutlicht. Die hauptsächlich verwendeten Komponenten der DOXiS Bridge, welche die gekapselte Funktionalität der Blueline nach außen hin zur Verfügung stellt, sind die Klassen ArchiveWSDL, SearchWSDL und SessionWSDL. Die Steuerklassen, welche die Funktionen der drei eben

52 Bachelor-Thesis 47 genannten Klassen der DOXiS Bridge implementieren, werden nun vorgestellt. Abbildung 21: mobilecubeserver Architektur ServerBridgeConnector Die Klasse ServerBridgeConnector ist die zentrale Klasse des Servers. Sie wird von HttpServlet abgeleitet und empfängt alle eingehenden Anfragen. Dies wurde in der web.xml entsprechend eingestellt. Die web.xml regelt diverse Einstellungen des Apache Tomcat Servers und der zugehörigen Servlets. Die ServerBridgeConnector Klasse setzt zudem die geforderten Anforderungen an eine RESTful Application um, was im Folgenden beschrieben wird. Die Aufgabe des ServerBridgeConnector-Servlets ist die Aufteilung der URL (Uniform Resource Locator) mit der das Servlet aufgerufen wurde und die Weiterleitung an die Klasse, welche die gewünschte Funktion ausführt. Dies ist z.b. die Search oder Archive Klasse, je nachdem welche Funktion per URI angefragt wurde. Damit sind bereits die Forderungen, die an eine REST-konforme Anwendung gestellt werden, erfüllt. Zum einen geschieht die Kommunikation per HTTP unter Benutzung der Standardmethoden wie GET und POST. Desweiteren sind die Ressourcen anhand ihrer URI, welche sich aus Servernamen und Funktionsnamen zusammensetzt, eindeutig identifizierbar (z.b. mobilecubeserver/sessioncreate) und können unterschiedlich repräsentiert werden, da der Aufruf sowohl per Browser, als auch per Android- Client möglich ist und entsprechend unterschiedliche Repräsentationen liefert. Zuletzt ist auch die Anforderung an die statuslose Kommunikation erfüllt, da sämtliche Zustandsdaten, wie die aktuelle TicketID, auf dem Client gespeichert werden.

53 Bachelor-Thesis 48 Archive, ArchiveUploadFiles und UploadedFile Die drei genannten Klassen haben die Aufgabe den Upload Vorgang zu ermöglichen und nach dem Hochladen der Datei, diese im ECM-System zu archivieren. Das ECM-System erwartet eine gewisse Ordnerstruktur, welche sich aus dem Dateinamen der hochzuladenden Datei und deren möglichen Repräsentationen zusammensetzt. Die ArchiveUploadFiles sorgt dafür, dass diese Struktur gebildet wird. Zudem sorgt sie dafür, dass der eingehende Datenstrom gelesen und daraus eine Datei erstellt wird. Dies geschieht unter Zuhilfenahme von UploadedFile. Nach der erfolgreichen Erstellung der Datei aus dem Datenstrom, hat die Archive Klasse die Aufgabe diese Datei zu den ECM-Servern hochzuladen, wo sie archiviert wird. Zudem benachrichtigt sie den Client über die erfolgreiche Archivierung. Dies geschieht, indem die erhaltene DocumentID (siehe 2.4) vom ECM-System, welche ein Dokument innerhalb des Systems eindeutig identifiziert, an den Client geschickt wird. MultipartInputStreamHandler, MultiPartOutputUtil, MultipartRequest, RepresentationRequest Diese Hilfsklassen ermöglichen den Dateitransfer zwischen Server und Client, indem sie die eigehenden Datenströme entgegennehmen und daraus die entsprechenden Dateien erstellen. Zudem sorgen sie auch dafür, dass Dateien in einen Datenstrom gewandelt werden, wenn der Client einen Download Befehl einleitet. ArchiveClassesRequest und SearchClassesRequest Die Aufgabe dieser beiden Klassen ist, die Such- und Archivklassen (siehe 2.4) vom ECM-System, anhand von Informationen des aktiven Profils, zu erlangen. Mit deren Hilfe kann ein Such- bzw. Archivierungsdialog erstellt werden, mit denen wiederum die Suche und die Archivierung ermöglicht wird. SessionClose, SessionCreate und SessionIsValid Die Aufgabe dieser Klassen ist die Erstellung, die Schließung und die Überprüfung auf Gültigkeit einer Sitzung. Bei jeder dieser Anfragen ist die TicketID von großer Bedeutung. Im Falle einer Anmeldung wird von SessionCreate eine TicketID vom ECM-System angefragt und diese an den Client weitergereicht. Bei der Abmeldung wird die bereits erhaltene TicketID vom Client an den Server gesendet und per SessionClose an das ECM-System geschickt, welches die Sitzung darauf beendet und die TicketID ungültig und im Client zurückgesetzt wird. SessionIsValid empfängt ebenso die TicketID vom Client und sendet diese an das ECM-System, in welchem geprüft wird ob die Sitzung noch gültig ist. Search Die Search-Klasse erstellt anhand der gelieferten Suchdaten vom Client eine entsprechende Suchanfrage an das ECM-System welches die Suchergebnisse zurückliefert. Die Suchergebnisse werden wieder an den Client zurückgeschickt. In den Daten, welche an den Client zurückgeliefert werden, befindet sich zu jedem

54 Bachelor-Thesis 49 gefundenen Dokument auch dessen DocumentID anhand dessen ein Download Befehl eingeleitet werden kann. ConnectionUtil In der Klasse ConnectionUtil befinden sich diverse Hilfsfunktionen. Die Funktion getserverpath sorgt beispielsweise dafür, dass der Pfad des Arbeitsverzeichnisses vom Server anhand des Servlet Kontext ermittelt wird. In diesem Pfad hat der Server Rechte zum Schreiben von Dateien und Ordnern. Dort werden die Dateien gespeichert, welche an das ECM-System geschickt, oder von diesem heruntergeladen werden. Weitere wichtige Hilfsfunktionen sind zudem bytearraytofile, die Dateien aus einem bytearray erstellt und die Funktion readjsonstringfromrequestbody, welche dafür sorgt, dass der JSON String aus dem eingehenden Datenstrom generiert wird. Zusammenfassung In diesem Kapitel wurden zunächst grundlegende Konzept Entscheidungen vorgestellt. Desweiteren wurden die verschiedenen Konzepte der Client-Server Kommunikation erläutert und ein Überblick darüber gegeben, wie diese sich unterscheiden. Danach ist beschrieben worden wie die Anwendung aufgebaut ist. Es wurde die zugrunde liegende Architektur des Servers und Clients vorgestellt und mithilfe von Diagrammen und detaillierten Erläuterungen aufgezeigt welche Aufgaben die erstellten Klassen haben. Im nächsten Kapitel wird beschrieben, wie die geforderten Funktionen, die sich aus der Anforderungsanalyse ergeben haben, umgesetzt worden sind. Es wird anhand von Quelltext Beispielen gezeigt, welche Vorgänge innerhalb der Anwendung stattfinden und verdeutlicht, wie die Kommunikation der Schichten untereinander funktioniert.

55 Bachelor-Thesis 50 5 Umsetzung In diesem Kapitel werden anhand von Quelltext-Beispielen die wichtigsten Anwendungsfälle des Android- ECM-Clients beschrieben. Es wird insbesonders Wert darauf gelegt zu verdeutlichen, welchen Weg die Daten von der Eingabe des Benutzers, über die Verbindungsschnittstelle mit dem Server, zum ECM-System nehmen und wieder im Client empfangen und verarbeitet werden. Die entscheidenden Abschnitte im Quelltext werden zudem mit Listings verdeutlicht, z.b. wie die Kommunikation zwischen Client und Server umgesetzt worden ist und in welcher Weise die Schnittstellen der DOXiS Bridge verwendet werden. Desweiteren wird mit Screenshots verdeutlicht, wie die Benutzeroberfläche unter Zuhilfenahme der Standard Oberflächenelemente in Android erstellt worden ist, um die möglichen Benutzereingaben entgegennehmen zu können. 5.1 Profil erstellen Um ein Profil zu erstellen muss der Benutzer zunächst zum Session-Tab navigieren. Die Session-Ansicht wird von der Activity CubeSession repräsentiert und besteht lediglich aus den GUI-Elementen Button und TextView. Nach dem Druck auf den Button Profil erstellen erscheint der Dialog createuserdialog wie in Abbildung 22 zu sehen ist. Hat nun der Benutzer die geforderten Daten eingetragen und den Ok-Knopf betätigt, wird die Funktion createuser in der CubeSessionLogic ausgeführt, welche die Aufgabe weiter an die createuser-funktion der CubePreferencesLogic-Klasse delegiert. In dieser Funktion wird zunächst auf syntaktische Korrektheit der Eingaben getestet, was wiederum von den Hilfsfunktionen isusernamevalid und ispasswordvalid durchgeführt wird. Sollte die Überprüfung fehlschlagen, wird entsprechend eine Exception geworfen, die im Dialog abgefangen wird und den Benutzer auf Abbildung 22: Profil erstellen die falsche Eingabe hinweist. Ist die Eingabe jedoch syntaktisch korrekt, werden die Daten mittels SharedPreferences gespeichert. SharedPreferences ist in Android eine einfache Möglichkeit Schlüssel-Wert-Paare persistent zu speichern (siehe 4.1). Zuvor wird jedoch das eingegebene Passwort, mittels der Funktion encrypt der Hilfsklasse SimpleCrypto, mit dem AES-Kryptosystem [Dae02] verschlüsselt. Ist das neue Profil erfolgreich gespeichert worden, erscheint eine Toast Mitteilung (eine kurzzeitig erscheinende Textnachricht) und der Dialog wird von der Oberfläche gelöscht.

56 Bachelor-Thesis Sitzung erstellen Um eine Sitzung mit dem ECM-System erstellen zu können, muss zunächst ein Profil existieren. Ist ein Profil erstellt worden, kann der Nutzer zum Session-Tab navigieren und die Option Sitzung erstellen wählen, indem er die entsprechende Schaltfläche betätigt. Damit eine Tab-Ansicht ermöglicht werden kann, müssen die gewünschten Activities, die per Tab dargestellt werden sollen, in einem TabHost gesammelt werden. Das Listing 1 zeigt, wie ein TabHost aufgebaut ist und wie festgelegt wird, welche Activities darin gekapselt werden. Listing 1: TabHost 1 / / Resource o b j e c t t o g e t Drawables and t h e a c t i v i t y TabHost 2 p r i v a t e s t a t i c R e s o u r c e s r e s ; 3 p r i v a t e s t a t i c TabHost t a b H o s t ; 4 6 p u b l i c v oid o n C r e a t e ( Bundle s a v e d I n s t a n c e S t a t e ) { 7 s u p e r. o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; r e s = g e t R e s o u r c e s ( ) ; / / Resource o b j e c t t o g e t d r a w a b l e s 10 t a b H o s t = gettabhost ( ) ; / / The a c t i v i t y TabHost 11 TabHost. TabSpec s pec ; / / R e u s a b l e TabSpec f o r each t a b 12 I n t e n t i n t e n t ; / / R e u s a b l e I n t e n t f o r each t a b TAG_0 = ( S t r i n g ) g e t A p p l i c a t i o n C o n t e x t ( ). g e t T e x t ( " S e s s i o n " ) ; / / C r e a t e an I n t e n t t o l a u n c h an A c t i v i t y f o r t h e t a b ( t o be r e u s e d ) 17 / / I n i t i a l i z e a TabSpec f o r each t a b and add i t t o t h e TabHost 18 / / t a b 1 19 i n t e n t = new I n t e n t ( ). s e t C l a s s ( t h i s, CubeSession. c l a s s ) ; 20 s pec = t a b H o s t. newtabspec (TAG_0 ). s e t I n d i c a t o r ( TAG_0, i c o n ). s e t C o n t e n t ( i n t e n t ) ; 21 t a b H o s t. addtab ( spec ) ; 22.. Um festzulegen, dass der TabHost wiederum angezeigt wird, müssen entsprechende Einträge in der Einstellungsdatei der Applikation, der AndroidManifest.xml (siehe 2.2), vorgenommen werden. Diese Datei verwaltet Informationen, welche die Anwendungsumgebung betreffen. Dazu gehören auch die genutzten Activities, die mit ihrem Namen und dem Paket, in welchem sie abgelegt sind, eingetragen werden müssen. Die Activity MainTabHost wird zur MAIN-Activity bestimmt und beim Start der Anwendung als erste Activity angezeigt, was wiederum per <category android:name="launcher"/> festgelegt

57 Bachelor-Thesis 52 wird. Diese speziellen Einstellungen werden per <intent-filter> vorgenommen. Einträge innerhalb von <intent-filter> definieren die Fähigkeiten einer Activity, Informationen vom Android Betriebssystem zu empfangen. (siehe 2.2), welche vor dem Start dieser festgelegt werden müssen. Das bedeutet, die Intent Filter reagieren auf einen Broadcast des Betriebssystems. Ein Ausschnitt der vorgenommenen Einstellungen aus der AndroidManifest.xml-Datei verdeutlicht dies in Listing 2. Listing 2: AndroidManifest 1 < m a n i f e s t xmlns : a n d r o i d =" h t t p : / / schemas. a n d r o i d. com / apk / r e s / a n d r o i d " 2 package =" u i " a n d r o i d : v e r s i o n C o d e ="1" a n d r o i d : versionname ="1.0" > 3 4 < a c t i v i t y a n d r o i d : name = ". u i. MainTabHost " 5 a n d r o i d : l a b e l / mobile_cube_app_name "> 6 < i n t e n t f i l t e r > 7 < a c t i o n a n d r o i d : name=" a n d r o i d. i n t e n t. a c t i o n.main" / > 8 < c a t e g o r y a n d r o i d : name=" a n d r o i d. i n t e n t. c a t e g o r y.launcher" / > 9 </ i n t e n t f i l t e r > 10 </ a c t i v i t y > 11.. Nachdem nun die Activity CubeSession in einem TabHost eingebettet und angewählt wurde, kann diese auf dem Bildschirm dargestellt werden. Um nun eine Sitzung erstellen zu können, muss der Nutzer die Schaltfläche Sitzung erstellen anwählen. Daraufhin wird der entsprechende Dialog erstellt, der dem Nutzer die eigentliche Anmeldung am ECM-System ermöglicht. Die Abbildung 23 stellt diesen Dialog dar. Der Dialog selbst wird per createsessiondialog erstellt und ist dem createuserdialog in vielen Punkten ähnlich, bis auf die Spinner-Elemente, die hier zum Einsatz kommen. Neben der IP des Servers und dem zugehörigen Port wird auch das gewünschte Profil per Spinner gewählt, für das die Sitzung erstellt werden soll. Die Definition der Ansicht des Sitzung erstellen-dialogs wird im res/layout-verzeichnis per cube_session dialog_create_session.xml festgelegt, welche wiederum in der zuvor erwähnten Funktion create SessionDialog aufgerufen wird. Die Oberflächenelemente des Dialogs werden von einem LinearLayout umgeben und dort definiert. Das LinearLayout legt fest, dass alle Elemente innerhalb des Layouts zeilenweise angeordnet werden. Ein sehr wichtiges Attribut eines Oberflächenelements ist die ID, welche per android:id festgelegt wird und mithilfe dessen das Element eindeutig in der Anwendung referenziert werden kann. Das wird beispielsweise bei einem Eingabefeld gebraucht um die Nutzereingaben ermitteln zu können. Ebenso wird die ID bei einem Spinner gebraucht um die anzuzeigenden Werte zu ermitteln.

58 Bachelor-Thesis 53 Die möglichen Namen, die für die Auswahl des Profils im Spinner zur Verfügung stehen, werden dynamisch ermittelt. Das geschieht, indem aus der cubesessionlogic-klasse per Funktion getusers, die zu dem Zeitpunkt erstellten Profile aus den SharedPreferences geholt werden. Diese Liste mit Profilen ist allerdings unsortiert, was in diesem Fall nicht gewünscht ist. Um den Namen des aktuell angemeldeten Profils auch als ersten Eintrag im Spinner zur Auswahl zu haben, muss die Position des aktuellen Profils in der angesprochenen Liste ermittelt werden und entsprechend diese Position per Spinner.setSelection gesetzt werden, damit das Profil automatisch ausgewählt ist. Die EditText-Elemente, bei denen der Benutzername und das Passwort einzutragen sind, werden anhand des gewählten Profilnamens automatisch gesetzt. Das Passwort wird allerdings nur automatisch gesetzt, wenn dies in den Anwendungseinstellungen auch so festgelegt worden ist, andernfalls bleibt das Feld leer und der Benutzer muss das Eingabefeld manuell ausfüllen. Abbildung 23: Sitzung erstellen Dialog Abbildung 24: Sitzung erstellen - Ablauf Sind alle benötigten Eingaben getätigt worden, kann der Benutzer auf den Ok-Knopf drücken und die Erstellung einer Sitzung wird gestartet. Der komplette Durchlauf wird mithilfe von Abbildung 24 veranschaulicht. Nach dem Drücken des Knopfs wird die Funktion createsession in der Klasse CubeSessionLogic aufgerufen. Die Parameter, die hierbei an die Funktion übergeben werden, sind der Name des Mandanten, der Name des Benutzers, das Passwort und der Programmkontext per Context. Context wird von

59 Bachelor-Thesis 54 android.content abgeleitet und wird sehr häufig während des Programmablaufs benötigt, da im Kontext globale Informationen über die gesamte Anwendungsumgebung enthalten sind, die zudem stets aktuell sein müssen. Deswegen muss der Kontext an die Klassen weitergereicht werden, die nicht selbst darauf zugreifen können. Zugriff auf den Kontext haben lediglich Klassen, die von Android internen Klassen abgeleitet werden, wie z.b. die Activities. Die Aufgabe von createsession ist nun die Verbindung einzuleiten, indem sie zunächst einen Wartedialog erstellt und im Sinne des Command Pattern [EG94] der Variable connection eine Instanz von SessionCreate übergibt. Verdeutlicht wird diese Aktion mit einem Ausschnitt der Funktion im Listing 3. Diese Variable wird nun dem TimeoutObserverThread zusammen mit context übergeben und der Thread gestartet. Der TimeoutObserverThread wiederum erstellt einen WorkerThread und übergibt diesem die erhaltenen beiden Variablen. Da der TimeoutObserverThread zuvor in SessionCreate gestartet worden ist, wurde die run-methode des Threads angestoßen und der Looper des timeoutobserver ThreadHandler aktiviert. Der Looper sorgt dafür, dass die MessageQueue in dem entsprechenden Thread gestartet wird, mithilfe dessen über einen Handler mit dem Thread kommuniziert werden kann. Listing 3: createsession Funktion 1 / / show d i a l o g 2 p r o g r e s s D i a l o g = P r o g r e s s D i a l o g. show ( c o n t e x t, t i t l e, message, t r u e, f a l s e ) ; 3 C o n n e c t i o n c o n n e c t i o n = new S e s s i o n C r e a t e ( ) ; 4 5 / / t h e h a n d l i n g t h r e a d f o r t h e o p e r a t i o n, which h a n d l e s t h e t i m e o u t. 6 Runnable r = ( Runnable ) new TimeoutObserverThread ( c o n t e x t, c o n n e c t i o n ) ; 7 Thread t = new Thread ( r ) ; 8 t. s t a r t ( ) ; Die Aufgabe der run-methode des TimeoutObserverThread ist nun, so lange per while(true)-schleife aktiv zu sein, bis entweder die Verbindung mit dem ECM-System erfolgreich gewesen ist, die maximale Zeit für die Verbindung überschritten worden ist oder ein Fehler während des Verbindungsvorgangs aufgetreten ist. Die Mitteilung darüber bekommt die Funktion anhand des enum ConnectionStatus, welcher die Werte ERROR, SUCCESS, PROCESSING oder TIMEOUT annehmen kann. Im Konstruktor des TimeoutObserverThread wird der ConnectionStatus auf PROCESSING gesetzt und solange der ConnectionStatus diesen Zustand hat, läuft auch die while(true)-schleife innerhalb der run- Methode. Der zuvor erwähnte WorkerThread wird neben der Initialisierung im Konstruktor des TimeoutObserver Thread auch gleich darauf gestartet und hat die Aufgabe, die Klasse bzw. dessen Funktion aufzurufen, welche die eigentliche Verbindung startet. Die aufgerufene Funktion befindet sich in der Klasse CubeBridge

60 Bachelor-Thesis 55 Connector und hat die Bezeichnung executehttprequest. Die Vorgehensweise einen WorkerThread in einem TimeoutThread zu kapseln ist unter anderem in [SS02] beschrieben. Die Aufgabe dieser Klasse ist die Erstellung der HTTP-Anfrage und die Zusammenstellung und Übergabe der Daten per JSON-Objekt. Listing 4 verdeutlicht die Anfrageerstellung und die Weitergabe des Antwortobjekts. Aus Gründen der Vereinfachung werden sämtliche verfügbare Daten in das JSON-Objekt eingefügt, damit nicht jeder Verbindungsfall per if-else unterschieden werden muss und die Funktion übersichtlich bleibt. Die Empfänger Funktion extrahiert nur die benötigen Daten aus dem JSON-Objekt, weshalb die Durchführung keine Probleme bereitet. Auf den Empfänger wird in den folgenden Passagen noch detaillierter eingegangen. Listing 4: executehttprequest Funktion 1 H t t p C l i e n t h t t p C l i e n t = new D e f a u l t H t t p C l i e n t ( ) ; 2 H t t p H o s t t a r g e t H o s t = new H t t p H o st ( a d d r e s s, I n t e g e r. p a r s e I n t ( p o r t ), p r o t o c o l ) ; 3 H t t p P o s t h t t p P o s t = new H t t p P o s t ( u r l ) ; / / Using POST h e r e / / c r e a t e t h e JSONObject we send t o s e r v e r 6 L i s t <NameValuePair > j s o n O b j e c t W r a p p e r = c r e a t e J S O N O b j e c t s ( ) ; 7 h t t p P o s t. s e t E n t i t y ( new UrlEncodedFormEntity ( j s o n O b j e c t W r a p p e r ) ) ; 8 9 / / g e t t h e r e s p o n s e 10 S t r i n g r e s p o n s e 1 = h t t p C l i e n t. e x e c u t e ( h t t p H o s t T a r g e t H o s t, h t t p P o s t, h a n d l e r ) ; / / A Simple JSONObject C r e a t i o n 13 JSONObject j s o n R e s p o n s e O b j e c t = new JSONObject ( r e s p o n s e 1 ) ; 14 c o n n e c t i o n. h a n d l e R e s p o n s e ( j s o n R e s p o n s e O b j e c t ) ; Die Erstellung des JSON-Objekts geschieht in der Hilfsfunktion createjsonobjects. Wie bereits erwähnt, werden sämtliche Daten die verfügbar sind eingefügt, was bedeutet, dass z.b. die Verbindungsdaten immer eingefügt werden, da sie bei jeder Verbindung mit dem ECM-System benötigt werden. Zudem werden aber auch die weiteren JSON-Objekte beispielsweise mit Daten für die Suche und die Archivierung stets erstellt. Das wird in dieser Weise gehandhabt um die verschiedenen möglichen Anfragen an den Server auf die selbe Weise erstellen zu können, womit die Komplexität verringert wird, da nicht jeder Fall separat behandelt werden muss. Wurde die komplette HTTP-Anfrage erstellt, wird sie per httpclient.execute abgesendet. Die Hauptklasse ServerBridgeConnector des Servers nimmt die Verbindung entgegen. Da die Anfrage per HTTP- POST abgesendet wurde, empfängt die Klasse ServerBridgeConnector die Anfrage entsprechend in der

61 Bachelor-Thesis 56 Methode dopost. Hier wird zunächst die URI per requesturi.split aufgeteilt und ermittelt, was für eine Funktion angefragt worden ist. In diesem Fall ist es die Anfrage an die Funktion SessionCreate, welche von der Klasse ServerBridgeConnector entsprechend weiterdelegiert wird. Jede mögliche Funktion ist hierbei als eigene Klasse repräsentiert worden, womit festgelegt ist, dass die Klasse SessionCreate die Aufgabe übernimmt. In der Klasse SessionCreate wiederum kümmert sich die Funktion JSONObject handlerequest um die Durchführung der Aufgabe. Die Funktion handlerequest bekommt das per HTTP übermittelte JSON- Objekt übergeben und liefert auch ein JSON-Objekt an den Aufrufer zurück. In dieser Funktion wird die Schnittstelle der DOXiS Bridge implementiert. Zunächst liest die Funktion jedoch die benötigten Daten aus dem JSON-Objekt aus und wandelt sie in Java-Objekte um. Das ist notwendig, da die Schnittstellen Funktion der DOXiS Bridge Java-Objekte als Parameter erwartet. Nach der Umwandlung der JSON-Objekte, werden die Java-Objekte der Funktion createsession der Klasse SessionWSDL übergeben. Ab dieser Stelle übernimmt die DOXiS Bridge die weiteren Aufgaben, indem sie die Daten aufbereitet und an das ECM-System weiterleitet. Nach der Anfrage am ECM-System, antwortet dieses entsprechend und sendet die Daten zurück zur DO- XiS Bridge, welche sie wiederum an die createsession zurückliefert. Die Antwort ist in diesem Fall die TicketID, welche als java.lang.string vorliegt. Diese TicketID wird nun von einem JSON-Objekt gekapselt und an die ServerBridgeConnector-Klasse zurückgeliefert. Das JSON-Objekt wird nun per PrintWriter, welcher über die Funktion HttpServletResponse.getWriter aufgerufen wurde, an den Aufrufer, die Klasse CubeBridgeConnector des Clients, zurückgesendet. Den Vorgang der Verbindungsherstellung mit der DOXiS Bridge und den Empfang der TicketID verdeutlicht das Listing 5. Listing 5: mobilecubeserver SessionCreate 1 / / r e q u e s t a t i c k e t I D 2 SessionWSDL sessionwsdl = new SessionWSDL ( ) ; 3 S t r i n g t i c k e t I d = sessionwsdl. c r e a t e S e s s i o n ( username, password, keys, v a l s ) ; 4 5 / / p u t v a l u e i n t o JSON O b j e c t and send i t back t o c l i e n t 6 JSONObject j s o n R e s p o n s e O b j e c t = new JSONObject ( ) ; 7 j s o n R e s p o n s e O b j e c t. p u t ( " t i c k e t I d ", t i c k e t I d ) ; Sobald die Antwort in der executehttprequest-funktion der CubeBridgeConnector-Klasse angekommen ist, wird sie an die dafür zuständige Antwortklasse weitergeleitet. An dieser Stelle lässt sich die Funktionsweise des Command Pattern gut erkennen. Es wird nämlich die Funktion handleresponse von connection ausgeführt, welche das empfangene JSON-Objekt als Parameter übergibt. Die executehttp Request-Funktion hat jedoch keinerlei Informationen darüber, mit welcher Instanz connection erstellt

62 Bachelor-Thesis 57 wurde. Das braucht sie allerdings auch nicht und somit ruft die connection automatisch die korrekte connection.handleresponse auf, welche sich um die Weiterverarbeitung der empfangenen Daten kümmert. In diesem Fall ist es die handleresponse der Klasse SessionCreate, die zunächst die TicketID aus dem JSON-Objekt ausliest und danach einen android.app.service startet. Die Antwortbehandlung von handleresponse wird mit dem Listing 6 veranschaulicht. Wie bereits erwähnt ist ein Service in Android eine Funktion, die ihre Aufgabe im Hintergrund erledigt (siehe 4.1). Dies kann in diesem Fall getan werden, da der Wartedialog noch aktiv ist und somit kein zusätzlicher gestartet werden muss. Implementiert wird der Service von der Klasse ConnectionService. Aufgabe ist es, die zu einem Profil zugehörigen Such- und Archivklassen zu erfragen. Dies ist notwendig, damit eine Suche bzw. eine Archivierung durchgeführt werden kann (siehe 2.4). Die Anfrage muss nach der Erlangung der TicketID geschehen, da die entsprechende Funktion nach einer gültigen Sitzung verlangt. Listing 6: mobilecube SessionCreate 1 p u b l i c c l a s s S e s s i o n C r e a t e e x t e n d s CubeLogic implements C o n n e c t i o n { 2 p u b l i c v oid h a n d l e R e s p o n s e ( JSONObject j s o n R e s p o n s e O b j e c t ) { 3 t i c k e t I d = j s o n R e s p o n s e O b j e c t. g e t S t r i n g ( " t i c k e t I d " ) ; 4 / / i n s t a n t l y f i l l s e a r c h c l a s s v a l u e s 5 s e r v i c e = new I n t e n t ( ) ; 6 s e r v i c e. s e t C l a s s ( c o n t e x t, C o n n e c t i o n S e r v i c e. c l a s s ) ; 7 s e r v i c e. p u t E x t r a ( " c o n n e c t i o n ", c o n t e x t. g e t T e x t ( c l a s s _ n a m e ) ) ; 8 c o n t e x t. s t a r t S e r v i c e ( s e r v i c e ) ; 9 } 10 } Sind die Such- und Archivklassen beim Client angekommen, wird der ConnectionStatus auf SUCCESS gesetzt und der TimeoutObserverThread beendet die while(true)-schleife und den Wartedialog, womit ein kompletter Durchlauf der Sitzungserstellung ausgeführt worden ist. 5.3 Dokumente suchen Damit eine Suche nach Dokumenten gestartet werden kann, muss zunächst ein Profil und eine Sitzung erstellt worden sein. Hat der Benutzer dies durchgeführt, kann er zum Suchen-Tab navigieren und bekommt den Suchdialog präsentiert wie in Abbildung 25 zu sehen ist. Die Ansicht wird von der CubeSearch- Activity erstellt. In dieser Activity wird die kombinierte Verwendung von XML-Dateien und Quelltext zur Erstellung des Suchdialogs genutzt. Die Dialogfelder werden anhand des Eintrags im Spinner erstellt. Das bedeutet, es wird zu jeder Suchklasse ein individueller Suchdialog erstellt.

63 Bachelor-Thesis 58 Die Parameter, die das Aussehen des Dialogs bestimmen, werden aus dem JSON-Objekt gelesen und im OnItemSelectedListener des searchclassspinner zusammengebaut. Die möglichen GUI-Elemente sind hierbei IDate, IMaskedEdit und ISelectionBox, welche in der Blueline definiert werden und in entsprechende Android GUI-Elemente übersetzt werden müssen. Hat der Benutzer die gewünschten Suchparameter eingegeben, werden die Werte innerhalb der onclick-methode der Starte Suche- Schaltfläche in die entsprechenden JSON-Objekte geschrieben und die Funktion standardsearch der Klasse CubeSearchLogic aufgerufen. Die Suche wurde als Service implementiert und wird somit im Hintergrund durchgeführt. Die Variante, eine Suchanfrage im Hintergrund durchzuführen, wurde gewählt, da je nach Verbindungsgeschwindigkeit die Dauer der Suche durchaus mehrere Sekunden, bis zu einer halben Minute dauern kann und man möchte vermeiden, dem Benutzer über die gesamte Dauer der Suchzeit einen Wartedialog zu präsentieren. Nachdem der Service erstellt und gestartet wurde, übernimmt die folgenden Aufgaben die Klasse ConnectionService, welche den Service implementiert. In dieser Klasse existieren zwei Methoden, Abbildung 25: Suchdialog welche die eingehenden Daten entgegennehmen. Es handelt sich um die Methoden onstart und onstartcommand. Die Funktionsweise des Service wurde von den Android Entwicklern mit der Betriebssystem Version 2.0 überarbeitet und in einigen Punkten geändert. Ab Version 2.0 wird beim Start des Service die zu überschreibende Methode onstartcommand aufgerufen, bei Android Versionen davor wurde jedoch noch die Methode onstart aufgerufen. Um die Anwendung nun für beide Betriebssystem Versionen kompatibel zu machen, muss in der onstart-methode unmittelbar die onstartcommand-methode aufgerufen und die geforderten Parameter übergeben werden, wobei für den neu hinzugekommenen Parameter int flags beispielsweise der Wert 0 übergeben werden kann. Zudem muss darauf geachtet werden, dass die nicht benutzt wird, da je nach Compiler eine von beiden Varianten einen Fehler erzeugen würde und somit nicht als überschriebene Methode gekennzeichnet werden darf. Wurden die erwähnten Punkte bei der Implementierung beachtet, kann die Applikation auch unter älteren Android-Betriebsystemen ohne Einschränkungen bezüglich eines Service genutzt werden. Nachdem die onstartcommand aufgerufen wurde, wird zunächst festgestellt, wer den Service angefragt

64 Bachelor-Thesis 59 hat. Ist dies ermittelt worden, wird an die entsprechende Funktion weiterdelegiert. In diesem Fall wird also die Funktion dosearch aufgerufen. An dieser Stelle wird unter Verwendung des Command Pattern die Suche eingeleitet, indem zunächst ein TimeoutObserverThread gestartet wird, der die weiteren Schritte behandelt. Da die Schritte bis zum Empfang der HTTP-Antwort mit denen der zuvor beschriebenen Anwendungsfälle identisch sind, wird hier auf Abschnitt 5.2 verwiesen. Wurde also das JSON-Objekt mit den Suchergebnissen in der Klasse Search, die sich um die Verarbeitung der Antwort kümmert, erhalten, wird der Service aufgefordert sich per stopservice zu beenden. Wenn diese Funktion aufgerufen wurde, tritt automatisch die ondestroy- Methode innerhalb des Service in Kraft, da diese laut Service Lifecycle diejenige ist, die vor dem Beenden des kompletten Zyklus vom Android Betriebsystem aufgerufen wird, was die Abbildung 26 verdeutlicht. Da bei der Suche kein Wartedialog genutzt worden ist, muss der Benutzer auf eine andere Weise darauf aufmerksam gemacht werden, dass die Suche beendet worden ist. Dies geschieht per Notification. Eine Notification ist eine programmübergreifende Mitteilung an den Benutzer, die sich per Vibrieren, Signalton und Blinken der Statusleuchte bemerkbar macht (siehe 2.2). Diese Notification wird beim Aufruf der ondestroy-methode erstellt. Das bedeutet, die Funktion, welche sich um die Erstellung einer Notification kümmert, wird aufgerufen. Dabei handelt es sich um die shownotification-funktion. Hier werden die Parameter für die Notification-Erstellung gesetzt und per notify Aufruf das Betriebsystem aufgefordert die Notification anzuzeigen. Abbildung 26: Service Lebenszyklus - Quelle: Android Devel- Hat der Benutzer die Mitteilung in der Statusleiste erblickt, kann er sie öffnen und gelangt per Druck auf die Schaltfläche zur Seite mit opers den Suchergebnissen. Das passiert, da einer der Parameter, die in der shownotification-funktion gesetzt wurden dafür sorgt, dass bei entsprechendem Druck auf die Taste, die ExpandableListActivity CubeSearchResult aufgerufen wird. In der oncreate-methode der CubeSearchResult-Activity wird zunächst dafür gesorgt, dass die Mitteilung in der Statusleiste des Betriebssystems gelöscht wird. Danach wird die CubeSearchResultLogic per showsearchresult aufgefordert die Daten aus dem JSON-Objekt zu extrahieren und aufzubereiten, damit sie entsprechend darge-

1. Software-Plattform Android Android. Was ist Android? Bibliotheken, Laufzeitumgebung, Application Framework

1. Software-Plattform Android Android. Was ist Android? Bibliotheken, Laufzeitumgebung, Application Framework 1. Software-Plattform Android Android Was ist Android? Plattform und Betriebssystem für mobile Geräte (Smartphones, Mobiltelefone, Netbooks), Open-Source Linux-Kernel 2.6 Managed Code, Angepasste Java

Mehr

1. Software-Plattform Android Android. Was ist Android? Managed Code, Angepasste Java Virtual Machine

1. Software-Plattform Android Android. Was ist Android? Managed Code, Angepasste Java Virtual Machine 1. Software-Plattform Android Android Was ist Android? Plattform und Betriebssystem für mobile Geräte (Smartphones, Mobiltelefone, Netbooks), Open-Source Linux-Kernel ab 2.6, aktuell 3.8 Managed Code,

Mehr

Leistungsbeschreibung. PHOENIX Archiv. Oktober 2014 Version 1.0

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

Mehr

Mobile Application Development

Mobile Application Development Mobile Application Development Android: Einführung Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Lernziele Der/die Kursbesucher/in kann

Mehr

Arbeiten mit UAG. Inhaltsverzeichnis. 1. Einleitung. 2. Voraussetzungen

Arbeiten mit UAG. Inhaltsverzeichnis. 1. Einleitung. 2. Voraussetzungen Arbeiten mit UAG Inhaltsverzeichnis 1. Einleitung...1 2. Voraussetzungen...1 2.1. Windows...1 2.2. Mac OS X...1 3. Dienste und Programme...2 4. Vorgehen mit Windows 7...2 4.1. Eintragen der SRZA-Adresse

Mehr

App-Entwicklung für Android

App-Entwicklung für Android App-Entwicklung für Android Einleitung - Systemarchitektur Hochschule Darmstadt WS15/16 1 Inhalt Historie Systemarchitektur Sandbox 2 Motivation Kontra Pro Limitierte Größe Begrenzte Ressourcen Kein Standardgerät

Mehr

ARBEITEN MIT DATEIEN UND ORDNERN IN WINDOW7

ARBEITEN MIT DATEIEN UND ORDNERN IN WINDOW7 ARBEITEN MIT DATEIEN UND ORDNERN IN WINDOW7 Bei einer Datei handelt es sich um ein Element mit enthaltenen Informationen wie Text, Bildern oder Musik. Eine geöffnet Datei kann große Ähnlichkeit mit einem

Mehr

BSH-FX (File Exchange) Datenaustausch mit registrierten Mailbox-Usern

BSH-FX (File Exchange) Datenaustausch mit registrierten Mailbox-Usern BSH-FX (File Exchange) Dokumentation für BSH-Mitarbeiter und externe Partner für den Datenaustausch mit registrierten Mailbox-Usern Stand: 24.06.2015, Version 1.01 Inhalt Inhalt... 2 Allgemeines zum BSH-FX

Mehr

Handbuch zu AS Connect für Outlook

Handbuch zu AS Connect für Outlook Handbuch zu AS Connect für Outlook AS Connect für Outlook ist die schnelle, einfache Kommunikation zwischen Microsoft Outlook und der AS Datenbank LEISTUNG am BAU. AS Connect für Outlook Stand: 02.04.2013

Mehr

DEJORIS iphone-app Anleitung

DEJORIS iphone-app Anleitung DEJORIS iphone-app Anleitung Stand: März 2014 Inhaltsverzeichnis 1 Einleitung... 3 1.1 Voraussetzungen... 3 1.2. Funktionen von allgemeinen Schaltflächen und Symbolen... 4 2. Arbeiten mit der DEJORIS-App...

Mehr

A CompuGROUP Company ONLINE TERMINKALENDER. Quick-Start Guide. Verwalten Sie Ihre Termine über unsere sichere Web-Plattform mittels Web Browser.

A CompuGROUP Company ONLINE TERMINKALENDER. Quick-Start Guide. Verwalten Sie Ihre Termine über unsere sichere Web-Plattform mittels Web Browser. ONLINE TERMINKALENDER Quick-Start Guide Verwalten Sie Ihre Termine über unsere sichere Web-Plattform mittels Web Browser. Inhaltsverzeichnis Über dieses Handbuch...3 Sicherheit ist unser oberstes Prinzip!...4

Mehr

Inhaltsverzeichnis. 1. Remote Access mit SSL VPN 1 1 1 1 2-3 3 4 4 4 5 5 6

Inhaltsverzeichnis. 1. Remote Access mit SSL VPN 1 1 1 1 2-3 3 4 4 4 5 5 6 Inhaltsverzeichnis. Remote Access mit SSL VPN a. An wen richtet sich das Angebot b. Wie funktioniert es c. Unterstützte Plattform d. Wie kann man darauf zugreifen (Windows, Mac OS X, Linux) 2. Aktive WSAM

Mehr

Einrichtungsanleitung Exchange Server Synchronisation

Einrichtungsanleitung Exchange Server Synchronisation Einrichtungsanleitung Exchange Server Synchronisation www.simplimed.de Dieses Dokument erhebt keinen Anspruch auf Vollständigkeit oder Korrektheit. Seite: 2 1. Die Exchange Server Synchronisation (EXS)

Mehr

Userhandbuch. Version B-1-0-2 M

Userhandbuch. Version B-1-0-2 M Userhandbuch Version B-1-0-2 M Inhaltsverzeichnis 1.0 Was bietet mir SERVRACK?... 3 1.1 Anmeldung... 3 1.2 Passwort vergessen?... 3 1.3 Einstellungen werden in Realtime übernommen... 4 2.0 Die SERVRACK

Mehr

Collax E-Mail Archive Howto

Collax E-Mail Archive Howto Collax E-Mail Archive Howto Howto Dieses Howto beschreibt wie ein Collax Server innerhalb weniger Schritte als E-Mail Archive eingerichtet werden kann, um Mitarbeitern Zugriff auf das eigene E-Mail Archiv

Mehr

Webmail. Anleitung für Ihr online E-Mail-Postfach. http://webmail.willytel.de

Webmail. Anleitung für Ihr online E-Mail-Postfach. http://webmail.willytel.de Webmail Anleitung für Ihr online E-Mail-Postfach http://webmail.willytel.de Inhalt: Inhalt:... 2 Übersicht:... 3 Menü:... 4 E-Mail:... 4 Funktionen:... 5 Auf neue Nachrichten überprüfen... 5 Neue Nachricht

Mehr

Google's Betriebssystem für mobile Plattformen. Vortrag von Michaela Rindt Universität Siegen

Google's Betriebssystem für mobile Plattformen. Vortrag von Michaela Rindt Universität Siegen Google's Betriebssystem für mobile Plattformen Vortrag von Michaela Rindt Universität Siegen Übersicht Einleitung Softwarearchitektur Softwareentwicklung für Android Unterschied zu anderen mobilen Plattformen

Mehr

Anleitung Erstanwendung für Fachlehrkräfte. Schritt 1: Installation und Registrierung von EasyGrade

Anleitung Erstanwendung für Fachlehrkräfte. Schritt 1: Installation und Registrierung von EasyGrade Anleitung Erstanwendung für Fachlehrkräfte 1. Installation von EasyGrade 2. Daten der Schule vom Stick ins EasyGrade bringen 3. Dateneingabe als Fachlehrkraft 4. Speichern einer Datensicherung als Fachlehrkraft

Mehr

SCHRITT FÜR SCHRITT ZU IHRER VERSCHLÜSSELTEN E-MAIL

SCHRITT FÜR SCHRITT ZU IHRER VERSCHLÜSSELTEN E-MAIL SCHRITT FÜR SCHRITT ZU IHRER VERSCHLÜSSELTEN E-MAIL www.klinik-schindlbeck.de info@klinik-schindlbeck.de Bitte beachten Sie, dass wir nicht für die Sicherheit auf Ihrem Endgerät verantwortlich sein können.

Mehr

VMware Workspace Portal- Benutzerhandbuch

VMware Workspace Portal- Benutzerhandbuch VMware Workspace Portal- Benutzerhandbuch Workspace Portal 2.1 Dieses Dokument unterstützt die aufgeführten Produktversionen sowie alle folgenden Versionen, bis das Dokument durch eine neue Auflage ersetzt

Mehr

Geschäftsbereich Mobile Services Was ist Android?

Geschäftsbereich Mobile Services Was ist Android? Geschäftsbereich Mobile Services Was ist Android? Hinter Hoben 149 53129 Bonn www.visionera.de Ansprechpartner: Arno Becker arno.becker@visionera.de +49 228 555 1111 +49 160 98965856 Einleitung Android

Mehr

Scalera Mailplattform Dokumentation für den Anwender Installation und Konfiguration des Outlook Connectors

Scalera Mailplattform Dokumentation für den Anwender Installation und Konfiguration des Outlook Connectors Installation und Konfiguration des Outlook Connectors Vertraulichkeit Die vorliegende Dokumentation beinhaltet vertrauliche Informationen und darf nicht an etwelche Konkurrenten der EveryWare AG weitergereicht

Mehr

Handbuch für ios 1.4 1

Handbuch für ios 1.4 1 Handbuch für ios 1.4 1 Inhaltsverzeichnis 1. Leistungsumfang... 3 1.1 Über Boxcryptor Classic... 3 1.2 Über dieses Handbuch... 4 2. Installation... 5 3. Grundfunktionen... 6 3.1. Einrichtung von Boxcryptor

Mehr

COI-BUSINESSFLOW SOAP-SERVER MODUL INFORMATION

COI-BUSINESSFLOW SOAP-SERVER MODUL INFORMATION COI-BUSINESSFLOW SOAP-SERVER MODUL INFORMATION Präambel Die COI GmbH entwickelt seit 1988 moderne, prozessorientierte Lösungen rund um die Themen Archivierung, Dokumentenmanagement und Workflow. Als kompetenter

Mehr

20 Vorgehensweise bei einem geplanten Rechnerwechsel... 2 20.1 Allgemein... 2 20.2 Rechnerwechsel bei einer Einzelplatzlizenz... 2 20.2.

20 Vorgehensweise bei einem geplanten Rechnerwechsel... 2 20.1 Allgemein... 2 20.2 Rechnerwechsel bei einer Einzelplatzlizenz... 2 20.2. 20 Vorgehensweise bei einem geplanten Rechnerwechsel... 2 20.1 Allgemein... 2 20.2 Rechnerwechsel bei einer Einzelplatzlizenz... 2 20.2.1 Schritt 1: Datensicherung... 2 20.2.2 Schritt 2: Registrierung

Mehr

TEAMWORK App. Erste Schritte

TEAMWORK App. Erste Schritte TEAMWORK App Erste Schritte 1. Die TEAMWORK App Mit der einfachen und intuitiven Oberfläche haben Sie nicht nur Zugriff auf alle Dateien, die Sie über Ihren PC zu TEAMWORK hochgeladen haben, Sie können

Mehr

CIB ZUGFERD SDK TECHNISCHE DOKUMENTATION

CIB ZUGFERD SDK TECHNISCHE DOKUMENTATION > Technical Support & Services CIB ZUGFERD SDK TECHNISCHE DOKUMENTATION Technical Support & Services > Stand: 28. Januar 2014 Version 1.03 CIB software GmbH > Technical Support & Services > CIB ZUGFeRD

Mehr

Software Engineering II (IB) Serviceorientierte Architektur

Software Engineering II (IB) Serviceorientierte Architektur Serviceorientierte Architektur Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Webservices Ziel: flexible programmatische Zusammenarbeit zwischen Servern Bereitstellung

Mehr

Auf einen Blick. Elementare Anwendungsbausteine. Telefonfunktionen nutzen. Dateien und Datenbanken. Organizer und Multimedia

Auf einen Blick. Elementare Anwendungsbausteine. Telefonfunktionen nutzen. Dateien und Datenbanken. Organizer und Multimedia Auf einen Blick Auf einen Blick TEIL I Grundlagen 1 Android eine offene, mobile Plattform... 21 2 Hallo Android!... 43 3 Von der Idee zur Veröffentlichung... 73 TEIL II Elementare Anwendungsbausteine 4

Mehr

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

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

Mehr

Anleitungen und Informationen zu KK-CloudServer

Anleitungen und Informationen zu KK-CloudServer Anleitungen und Informationen zu KK-CloudServer 1. Vorwort Ihr neuer KK-CloudServer ist eines der modernsten und sichersten Daten-Server- Systeme zur sicheren und plattformunabhängigen Aufbewahrung Ihrer

Mehr

So nutzen Sie die HiDrive App mit Ihrem Android Smartphone

So nutzen Sie die HiDrive App mit Ihrem Android Smartphone So nutzen Sie die HiDrive App mit Ihrem Android Smartphone Die STRATO HiDrive App ermöglicht Ihnen die bequeme Nutzung Ihres Kontos mit Ihrem Android Smartphone. Betrachten Sie direkt Ihre Inhalte und

Mehr

Benutzerdokumentation Web-Portal

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

Mehr

COI-BusinessFlow Integration in Microsoft Federated Search

COI-BusinessFlow Integration in Microsoft Federated Search COI-BusinessFlow Integration in Microsoft Federated Search Business W hite Paper COI GmbH COI-BusinessFlow Integration in Microsoft Federated Search Seite 1 von 7 1 Zusammenfassung 3 2 ECM & Microsoft

Mehr

Sophos Mobile Control Benutzerhandbuch für Android

Sophos Mobile Control Benutzerhandbuch für Android Sophos Mobile Control Benutzerhandbuch für Android Produktversion: 2 Stand: Dezember 2011 Inhalt 1 Über Sophos Mobile Control... 3 2 Einrichten von Sophos Mobile Control auf einem Android-Mobiltelefon...

Mehr

Synchronisations -Assistent 2.6

Synchronisations -Assistent 2.6 TimePunch Synchronisations -Assistent 2.6 Benutzerhandbuch 22.10.2014 TimePunch KG, Wormser Str. 37, 68642 Bürstadt Dokumenten Information: Dokumenten-Name Benutzerhandbuch, Synchronisations-Assistent

Mehr

Die Cargo Plattform bietet einen sicheren und einfachen Datentransfer mit einem modernen Web- Interface.

Die Cargo Plattform bietet einen sicheren und einfachen Datentransfer mit einem modernen Web- Interface. Die Cargo Plattform bietet einen sicheren und einfachen Datentransfer mit einem modernen Web- Interface. Inhaltsverzeichnis Erste Schritte Anmelden 2 Startseite 3 Dateimanager 4 CargoLink 5 Freigaben 6

Mehr

Walkabout: Location Based Services mit Android und dem Google Phone

Walkabout: Location Based Services mit Android und dem Google Phone Walkabout: Location Based Services mit Android und dem Google Phone Teilbereich 1: Die Android Plattform für mobile Geräte (Software) Von: Sebastian Schul Inhalt Einleitung Was ist Android Exkurs: Wie

Mehr

Workbooster File Exchanger Command Line Tool

Workbooster File Exchanger Command Line Tool Thema Technische Benutzerdokumentation - WBFileExchanger Workbooster File Exchanger Command Line Tool Letzte Anpassung 18. Januar 2014 Status / Version Finale Version - V 1.1 Summary Erstellung Diese technische

Mehr

Business Process Execution Language. Christian Vollmer Oliver Garbe

Business Process Execution Language. Christian Vollmer <christian.vollmer@udo.edu> Oliver Garbe <oliver.garbe@udo.edu> Business Process Execution Language Christian Vollmer Oliver Garbe Aufbau Was ist BPEL? Wofür ist BPEL gut? Wie funktioniert BPEL? Wie sieht BPEL aus?

Mehr

2. Word-Dokumente verwalten

2. Word-Dokumente verwalten 2. Word-Dokumente verwalten In dieser Lektion lernen Sie... Word-Dokumente speichern und öffnen Neue Dokumente erstellen Dateiformate Was Sie für diese Lektion wissen sollten: Die Arbeitsumgebung von Word

Mehr

Eine Wiederherstellung setzt immer ein vorhandenes Backup voraus. Wenn man nichts sichert, kann man auch nichts zurücksichern.

Eine Wiederherstellung setzt immer ein vorhandenes Backup voraus. Wenn man nichts sichert, kann man auch nichts zurücksichern. Exchange Daten wieder ins System einfügen (Dieses Dokument basiert auf einem Artikel des msxforum) Eine Wiederherstellung setzt immer ein vorhandenes Backup voraus. Wenn man nichts sichert, kann man auch

Mehr

Einführung in den myapp2go Admin Bereich

Einführung in den myapp2go Admin Bereich Einführung in den myapp2go Admin Bereich Der Adminbereich kann bei unterschiedlichen Modulen andere Menüpunkte bei Ihnen haben, die Funktionalität ist aber gleich wie hier beschrieben. Selbstverständlich

Mehr

Remote Communications

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

Mehr

Automatisiertes Informationsmanagement für Microsoft Exchange Server

Automatisiertes Informationsmanagement für Microsoft Exchange Server Windream Exchange Automatisiertes Informationsmanagement für Microsoft Exchange Server Facts: Zugriff auf E-Mails sowohl aus Microsoft Outlook als auch aus Windream Komfortable Recherche und Verwaltung

Mehr

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober 2010. FH-Gieÿen-Friedberg Android Praktikum

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober 2010. FH-Gieÿen-Friedberg Android Praktikum Analyse der Android Plattform Andre Rein, Johannes Florian Tietje FH-Gieÿen-Friedberg Android Praktikum 28. Oktober 2010 Topics 1 Übersicht Android Plattform Application Framework Activities und Services

Mehr

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen 9 3 Web Services 3.1 Überblick Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen mit Hilfe von XML über das Internet ermöglicht (siehe Abb.

Mehr

E-Mail-Archivierung für Microsoft Outlook und Exchange Server

E-Mail-Archivierung für Microsoft Outlook und Exchange Server windream Exchange E-Mail-Archivierung für Microsoft Outlook und Exchange Server 2 E-Mail-Archivierung für Microsoft Outlook und Exchange Server Das ständig wachsende Volumen elektronischer Mitteilungen

Mehr

Vodafone Cloud. Einfach A1. A1.net/cloud

Vodafone Cloud. Einfach A1. A1.net/cloud Einfach A1. A1.net/cloud Ihr sicherer Online-Speicher für Ihre wichtigsten Daten auf Handy und PC Die Vodafone Cloud ist Ihr sicherer Online-Speicher für Ihre Bilder, Videos, Musik und andere Daten. Der

Mehr

SWN-NetT Webmail. Benutzerhandbuch für SWN-NetT Webmail. SWN-NetT Webmail finden Sie unter: http://webmail.swn-nett.de

SWN-NetT Webmail. Benutzerhandbuch für SWN-NetT Webmail. SWN-NetT Webmail finden Sie unter: http://webmail.swn-nett.de SWN-NetT Webmail Benutzerhandbuch für SWN-NetT Webmail SWN-NetT Webmail finden Sie unter: http://webmail.swn-nett.de Übersicht Einstieg... 2 Menü... 2 E-Mail... 3 Funktionen... 4 Auf eine neue Nachricht

Mehr

Anleitung: Notebook für den Betrieb in der DHBW einrichten und nutzen

Anleitung: Notebook für den Betrieb in der DHBW einrichten und nutzen Anleitung: Notebook für den Betrieb in der DHBW einrichten und nutzen 1 Inhaltsverzeichnis 1 Zugangsdaten an der DHBW... 3 2 OpenVPN Client installieren... 4 3 OpenVPN starten und mit dem Lehrenetz der

Mehr

Ein Word-Dokument anlegen

Ein Word-Dokument anlegen 34 Word 2013 Schritt für Schritt erklärt Ein Word-Dokument anlegen evor Sie einen Text in Word erzeugen können, müssen Sie zunächst einmal ein neues Dokument anlegen. Die nwendung stellt zu diesem Zweck

Mehr

Handbuch VERBINDUNG ZUM TERMINAL SERVER

Handbuch VERBINDUNG ZUM TERMINAL SERVER Handbuch VERBINDUNG ZUM TERMINAL SERVER Einleitung Dieses Dokument beschreibt Ihnen, wie Sie sich auf einen Terminalserver (TS) mithilfe von einem Gerät, auf den die Betriebssysteme, Windows, Mac, IOS

Mehr

NEWpixi* API und die Umstellung auf REST. Freitag, 3. Mai 13

NEWpixi* API und die Umstellung auf REST. Freitag, 3. Mai 13 NEWpixi* API und die Umstellung auf REST Fakten NEWpixi* API Technik REST-basierend.NET Webservice IIS Webserver Release 31. August 2013, zusammen mit dem NEWpixi* ELI Release Legacy API und erste NEWpixi*

Mehr

VPN-System Benutzerhandbuch

VPN-System Benutzerhandbuch VPN-System Benutzerhandbuch Inhalt Einleitung Antiviren-Software 5 Einsatzgebiete 6 Web Connect Navigationsleiste 8 Sitzungsdauer 9 Weblesezeichen 9 Junos Pulse VPN-Client Download Bereich 9 Navigationshilfe

Mehr

ELO ECM Suite 9. The Next Generation

ELO ECM Suite 9. The Next Generation The Next Generation Die nachfolgenden Seiten sollen Ihnen einen ersten Überblick über die neue ELO ECM Suite 9 und ihre zahlreichen Möglichkeiten geben, wie Sie damit Ihre Geschäftsprozesse optimieren.

Mehr

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

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

Mehr

E-Mail-Archivierung für Microsoft Outlook und Exchange Server

E-Mail-Archivierung für Microsoft Outlook und Exchange Server windream Exchange E-Mail-Archivierung für Microsoft Outlook und Exchange Server 2 E-Mail-Archivierung für Microsoft Outlook und Exchange Server Das ständig wachsende Volumen elektronischer Mitteilungen

Mehr

Windows / Mac User können sich unter folgenden Links die neueste Version des Citrix Receiver downloaden.

Windows / Mac User können sich unter folgenden Links die neueste Version des Citrix Receiver downloaden. Zugriff auf Citrix 1 EINRICHTUNG WICHTIG: 1. Sollten Sie als Betriebssystem bereits Windows 8 nutzen, müssen Sie.Net Framework 3.5 installiert haben. 2. Ihre Einstellungen in den Programmen werden jedes

Mehr

Häufig gestellte fragen zu Professional officedrive

Häufig gestellte fragen zu Professional officedrive Häufig gestellte fragen zu Professional officedrive Allgemeine Fragen Was ist Professional OfficeDrive? Professional OfficeDrive ist ein Filesharing System. Mit Professional OfficeDrive kann ein Unternehmen

Mehr

0. Inhaltsverzeichnis

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

Mehr

Installationsvorbereitung

Installationsvorbereitung Installationsvorbereitung Für die Installation und das spätere einwandfreie Arbeiten mit dem Layoutprogramm»VivaDesigner«gelten nachfolgende Voraussetzungen, die unbedingt beachtet werden sollten. Sie

Mehr

Anleitungen und Informationen zu KK-NetServer

Anleitungen und Informationen zu KK-NetServer Anleitungen und Informationen zu KK-NetServer 1. Vorwort Unser KK-NetServer ist einer der modernsten und sichersten Daten-Server mit verschiedenen Nutzungsrechten. Er dient in erster Linie zur Bereitstellung

Mehr

Web 2.0 Architekturen und Frameworks

Web 2.0 Architekturen und Frameworks Web 2.0 Architekturen und Frameworks codecentric GmbH Mirko Novakovic codecentric GmbH Quality Technische Qualitätssicherung in Software-Projekten mit Fokus auf Performance, Verfügbarkeit und Wartbarkeit

Mehr

Whitepaper Walkyre Enterprise Resource Manangement

Whitepaper Walkyre Enterprise Resource Manangement Whitepaper Walkyre Enterprise Resource Management Seite 1 Whitepaper Walkyre Enterprise Resource Manangement Stand 15.11.2004 Inhalt 1. Hinweis... 2 2. Grundsätzliches zur Funktionalität... 3 3. Der Walkyre-Client...

Mehr

Neue Funktionen CAS genesisworld x6

Neue Funktionen CAS genesisworld x6 Neue Funktionen CAS genesisworld x6 xrm und CRM für den Mittelstand 1 CAS genesisworld x6: Unverzichtbarer Helfer auf dem Weg zu Customer Centricity CAS genesisworld x6 unterstützt Unternehmen beim nachhaltigen

Mehr

Handbuch für Android 1.5

Handbuch für Android 1.5 Handbuch für Android 1.5 1 Inhaltsverzeichnis 1 Leistungsumfang... 3 1.1 Über Boxcryptor Classic... 3 1.2 Über dieses Handbuch... 3 2. Installation... 5 3. Grundfunktionen... 5 3.1 Einrichtung von Boxcryptor

Mehr

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen Um die maximale Sicherheit für das Betriebssystem und Ihre persönlichen Daten zu gewährleisten, können Sie Programme von Drittherstellern

Mehr

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht

Mehr

Konfigurationsassistent. Neue FTP-Site anlegen. WISE-FTP aktivieren. Kurzanleitung WISE-FTP

Konfigurationsassistent. Neue FTP-Site anlegen. WISE-FTP aktivieren. Kurzanleitung WISE-FTP 4 164 ist ein so genannter FTP-Client eine Software, die es Ihnen ermöglicht, eine Verbindung zu jedem beliebigen FTP-Server herzustellen und Dateien und Verzeichnisse sowohl herauf- als auch herunterzuladen.

Mehr

Projekt Automatische Erfassung Verarbeitung von Lieferantenrechnungen Geschäftsprozess Purchase-To-Pay

Projekt Automatische Erfassung Verarbeitung von Lieferantenrechnungen Geschäftsprozess Purchase-To-Pay Projekt Automatische Erfassung Verarbeitung von Lieferantenrechnungen Geschäftsprozess Purchase-To-Pay Geschäftsziele Z1: Steigerung der Effektivität bei der Überprüfung eingegangener Lieferscheinen und

Mehr

Access und OpenOffice.org

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

Mehr

Ute Kalff Windows7 www.utekalff.de. Zusammenfassung aus Windows-Hilfe

Ute Kalff Windows7 www.utekalff.de. Zusammenfassung aus Windows-Hilfe Zusammenfassung aus Windows-Hilfe Anmerkung: Peek, Shake und Desktophintergrund-Diashow sind nicht in Windows 7 Home Basic oder Windows 7 Starter enthalten. Öffnen Sie in der Systemsteuerung den Eintrag

Mehr

MobiDM - App - Handbuch für Android. Diese Kurzanleitung beschreibt die Installation und Nutzung der MobiDM-App für Android. Version: x.

MobiDM - App - Handbuch für Android. Diese Kurzanleitung beschreibt die Installation und Nutzung der MobiDM-App für Android. Version: x. MobiDM - App - Handbuch für Android Diese Kurzanleitung beschreibt die Installation und Nutzung der MobiDM-App für Android Version: x.x MobiDM-App - Handbuch für Android Seite 1 Inhalt 1. WILLKOMMEN BEI

Mehr

Kurzanleitung. EGVP 2.8 Installerpaket. Dokumentversion 1.3 2013 bremen online services Entwicklungs- und Betriebsgesellschaft mbh & Co.

Kurzanleitung. EGVP 2.8 Installerpaket. Dokumentversion 1.3 2013 bremen online services Entwicklungs- und Betriebsgesellschaft mbh & Co. Kurzanleitung EGVP 2.8 Installerpaket Dokumentversion 1.3 2013 bremen online services Entwicklungs- und Betriebsgesellschaft mbh & Co. KG Inhaltsverzeichnis 1 Kurzanleitung Installation EGVP 2.8 als Installerpaket...

Mehr

SIHLNET E-Mail-Konfiguration

SIHLNET E-Mail-Konfiguration SIHLNET E-Mail-Konfiguration Inhaltsverzeichnis 1. Allgemeines...2 2. OWA...2 2.1. Anmeldung... 2 2.2. Arbeiten mit OWA... 3 2.2.1. Neue E-Mail versenden... 3 2.2.2. E-Mail beantworten / weiterleiten...

Mehr

2. DFG- Workshop 3.1. Erfassung/Bewertung/Transfer. Beitrag von Peter Küsters. Spiegelung. Archiv. Bild 1: Unterschied zwischen FTP und Spiegelung

2. DFG- Workshop 3.1. Erfassung/Bewertung/Transfer. Beitrag von Peter Küsters. Spiegelung. Archiv. Bild 1: Unterschied zwischen FTP und Spiegelung 2. DFG- Workshop 3.1. Erfassung/Bewertung/Transfer Beitrag von Peter Küsters Formen des Datentransfers bei der Erfassung von Websites Im folgenden werden Methoden und Software zur Erfassung vorgestellt.

Mehr

WICHTIG!: Speichern Sie die Backup Datei außerhalb Safe and itunes. Für weitere Infos schauen Sie bitte unter Safe Backup erstellen.

WICHTIG!: Speichern Sie die Backup Datei außerhalb Safe and itunes. Für weitere Infos schauen Sie bitte unter Safe Backup erstellen. Safe Anleitung Safe erlaubt Ihnen Ihre sensiblen Daten zu organisieren und zu speichern. Sie können beliebige Kategorien zur Organisation Ihrer Daten erstellen. Wir bieten Ihnen vordefinierte Vorlagen

Mehr

Sophos Mobile Control Benutzerhandbuch für Apple ios

Sophos Mobile Control Benutzerhandbuch für Apple ios Sophos Mobile Control Benutzerhandbuch für Apple ios Produktversion: 2 Stand: Dezember 2011 Inhalt 1 Über Sophos Mobile Control... 3 2 Einrichten von Sophos Mobile Control auf einem Apple iphone... 4 3

Mehr

Dokumentation PuSCH App. windows-phone

Dokumentation PuSCH App. windows-phone Dokumentation PuSCH App windows-phone Inhaltsverzeichnis Mit dem PuSCH App am Smartphone wird das Bestellen deutlich vereinfacht und beschleunigt! Die PuSCH App ist eine mobile Erweiterung zum Partnerportal

Mehr

TD-Mobile-Beispiel mit Barcodescanner

TD-Mobile-Beispiel mit Barcodescanner TD-Mobile-Beispiel mit Barcodescanner 1 Einleitung Viele Interessenten für die Entwicklungsumgebung TD-Mobile wollen mit einem mobilen Endgerät (sprich: Handy) Daten über entsprechende Barcodes erfassen

Mehr

INSTALLATION OFFICE 2013

INSTALLATION OFFICE 2013 INSTALLATION OFFICE 2013 DURCH OFFICE 365 Zur Verfügung gestellt von PCProfi Informatique SA Einleitung Das folgende Dokument beschreibt Ihnen Schritt für Schritt, wie man Office Umgebung 2013 auf Ihren

Mehr

Hinweis: Der Zugriff ist von intern per Browser über die gleiche URL möglich.

Hinweis: Der Zugriff ist von intern per Browser über die gleiche URL möglich. Was ist das DDX Portal Das DDX Portal stellt zwei Funktionen zur Verfügung: Zum Ersten stellt es für den externen Partner Daten bereit, die über einen Internetzugang ähnlich wie von einem FTP-Server abgerufen

Mehr

Einführung in Android. 9. Dezember 2014

Einführung in Android. 9. Dezember 2014 Einführung in Android 9. Dezember 2014 Was ist Android? Software für mobile Geräte: Betriebssystem Middleware Kernanwendungen Android SDK: Tools und APIs zur Entwicklung von Anwendungen auf der Android-Plattform

Mehr

ÖKB Steiermark Schulungsunterlagen

ÖKB Steiermark Schulungsunterlagen ÖKB Steiermark Schulungsunterlagen Fotos von Online-Speicher bereitstellen Da das hinzufügen von Fotos auf unsere Homepage recht umständlich und auf 80 Fotos begrenzt ist, ist es erforderlich die Dienste

Mehr

OpenCms jbpm Workflow Engine. OpenCms und jbpm Workflow Engine

OpenCms jbpm Workflow Engine. OpenCms und jbpm Workflow Engine OpenCms und jbpm Workflow Engine Geschäftliche Abläufe in einem Unternehmen folgen zu einem großen Prozentsatz beschreibbaren Prozessen, den so genannten Geschäftsprozessen. Diese Erkenntnis führte zum

Mehr

Kurzanleitung für die mobile Novell Messenger 3.0.1-App

Kurzanleitung für die mobile Novell Messenger 3.0.1-App Kurzanleitung für die mobile Novell Messenger 3.0.1-App Mai 2015 Novell Messenger 3.0.1 und höher ist für unterstützte ios-, Android- und BlackBerry-Mobilgeräte verfügbar. Da Sie an mehreren Standorten

Mehr

Installationsanleitung TOPIX WebSolution Server

Installationsanleitung TOPIX WebSolution Server Installationsanleitung TOPIX WebSolution Server WebSolution Version 1.309 TOPIX:8 Ab Version 8.9.3v2 Stand 08/2014 Inhalt 1 Systemvoraussetzungen...3 2 Vorbereitungen für die Installation...4 Die aktuelle

Mehr

Syncios Hilfedatei. Information Management. Erste Schritte. Werkzeuge. Mehr Funktionen. ios Management. Einstellungen

Syncios Hilfedatei. Information Management. Erste Schritte. Werkzeuge. Mehr Funktionen. ios Management. Einstellungen Syncios Hilfedatei Erste Schritte Installation Erste Schritte Technische Daten Information Management Kontakte Notizen Lesezeichen Nachrichten Werkzeuge Audio Konverter Video Konverter Klingelton Maker

Mehr

Sharpdesk Solution. Sharpdesk Document Management Solution. Geschäftsinformationen umsetzen

Sharpdesk Solution. Sharpdesk Document Management Solution. Geschäftsinformationen umsetzen Sharpdesk Solution Sharpdesk Document Management Solution Geschäftsinformationen umsetzen Workflows verwalten Geschäftsinformationen erfassen, organisieren und austauschen Sharpdesk ist eine beliebte Desktop-Dokumentenverwaltungs-Software.

Mehr

Dokumentation Softwareprojekt AlumniDatenbank

Dokumentation Softwareprojekt AlumniDatenbank Dokumentation Softwareprojekt AlumniDatenbank an der Hochschule Anhalt (FH) Hochschule für angewandte Wissenschaften Fachbereich Informatik 13. Februar 2007 Betreuer (HS Anhalt): Prof. Dr. Detlef Klöditz

Mehr

Windows SharePoint Services als gemeinsamen Dateispeicher einrichten

Windows SharePoint Services als gemeinsamen Dateispeicher einrichten Windows SharePoint Services als gemeinsamen Dateispeicher einrichten (Engl. Originaltitel: Setting up Windows SharePoint Services as a Collaborative File Store) Dustin Friesenhahn Veröffentlicht: August

Mehr

Analyse der Verschlüsselung von App- Daten unter ios 7

Analyse der Verschlüsselung von App- Daten unter ios 7 Analyse der Verschlüsselung von App- Daten unter ios 7 Version 1.0 Dokumentenhistorie: Version Datum Autor Co-Autor 1.0 16.12.2013 ASC - 1.0 16.12.2013 - CD Version 1.0 cirosec GmbH 2013 Seite 2 von 11

Mehr

Installation und Benutzer- Handbuch MyAmigo

Installation und Benutzer- Handbuch MyAmigo Seite 1 Installation und Benutzer- Handbuch MyAmigo Mit MyAmigo immer ein Schritt voraus! Version: 2.2.1 Seite 2 Das Vorwort Aus Gründen der leichteren Lesbarkeit wird auf eine geschlechtsspezifische Differenzierung,

Mehr

Sharpdesk Solution. Sharpdesk Document Management Solution. Geschäftsinformationen umsetzen

Sharpdesk Solution. Sharpdesk Document Management Solution. Geschäftsinformationen umsetzen Sharpdesk Solution Sharpdesk Document Management Solution Geschäftsinformationen umsetzen Workflows verwalten Geschäftsinformationen erfassen, organisieren und austauschen Sharpdesk ist eine beliebte Desktop-Dokumentenverwaltungs-Software.

Mehr

HILFE Datei. UPC Online Backup

HILFE Datei. UPC Online Backup HILFE Datei UPC Online Backup Inhalt Login Screen......? Welcome Screen:......? Manage Files Screen:...? Fotoalbum Screen:.........? Online backup Client Screen...? Frequently Asked Questions (FAQ s)...?

Mehr

Mehr wissen. Mehr entdecken. Mehr leisten. Erschließen Sie Informationen mit Enterprise Search.

Mehr wissen. Mehr entdecken. Mehr leisten. Erschließen Sie Informationen mit Enterprise Search. Mehr wissen. Mehr entdecken. Mehr leisten. Erschließen Sie Informationen mit Enterprise Search. Die Lösung für Enterprise Search xdot search xdot search ist eine professionelle Semantische Suche Suchlösung

Mehr

Neue Funktionen CAS genesisworld x6

Neue Funktionen CAS genesisworld x6 Neue Funktionen CAS genesisworld x6 xrm und CRM für den Mittelstand 3 CAS genesisworld x6: Unverzichtbarer Helfer auf dem Weg zu Customer Centricity CAS genesisworld x6 unterstützt Unternehmen beim nachhaltigen

Mehr

digital business solutions smart IP office

digital business solutions smart IP office digital business solutions smart IP office Stetig vergrößert sich das Volumen an Dokumenten und Daten zu Vorgängen im Gewerblichen Rechtsschutz, die schnell und einfach auffindbar sein müssen. Optimieren

Mehr

SBB Schulung für digitale Fahrplanabfrage und Ticketkäufe.

SBB Schulung für digitale Fahrplanabfrage und Ticketkäufe. SBB Schulung für digitale Fahrplanabfrage und Ticketkäufe. Vielen Dank, dass Sie sich für die SBB Schulung für die digitale Fahrplanabfrage und Ticketkäufe angemeldet haben. Das vorliegende Dokument erklärt

Mehr