Home
Diplombericht HOVISSE Workflow-Editor
Contents
1. i add xxxAction H Menu item enablen disablen setlnitialState initPanel ja i WelcomePanel i initComponents H H H H H i H H H 1 E E EE EEE EE TEEN EEE SEE NE i i 1 1 i i i setWelcomePanel i i i from Swing from Swing Abbildung 35 Sequenz Diagramm Init MainView 37 67 HOVISSE Workflow Editor Diplombericht 4 7 2 ffnen des Workflow Open Workflow Nach dem Starten des Programms ist das ffnen eines bestehenden Workflows eine der m glichen n chsten Operationen Als Erstes wird ein OpenWorkflowDialog angezeigt mit welchem das einzulesende Workflow File ausgew hlt werden kann Der gew hlte Dateipfad wird in der Environment Klasse abgelegt Mit Hilfe von JAXB wird das spezifizierte XML File eingelesen deserialisert und das entsprechende Objektmodel aufgebaut Mit der Methode CreateProposition werden die Proposition Objekte des Workflows in eine HashMap abgef llt da die anderen Elemente Phase Action usw darauf referenzieren Somit muss bei einem Zugriff was im Normalfall bei jedem Anzeigen einer Phase oder einer Action mehrmals der Fall ist nicht immer die ganze Liste von Propositions durchsucht werden Als N chstes wird mit Hilfe der createTree Methode der eigentliche Baum aufgebaut Diese Methode ist nachfolgend noch detaillierter beschrieben Anschliessend wird nun der View mitgeteilt dass ein neuer Baum vo
2. u 51 bersicht HOVISSE Workflow Editor rorerrnrrrrnrorrnrernnvrnrnvernnvenrnvennnn 61 Details zu selektiertem Element 62 Bearbeiten des Workflow Trees sense Bere 62 Menu SimulationsModus nennen 63 Menu SI UA ON ee lee ae ee anderen een 63 Workflow Editor w hrend einer Simulatton gt 63 F Codeverzeichnis Code 1 Schliessen mit dem X Button Code 2 Ausf llen eine Panels au a ar Mate Ee Code 3 Beispiel hwfe properties Code 4 Beispiel log4 properties 67 67
3. 4 InventoryModel dto InventoryModel CatalogModel setlnventory Inventory void catalog inventoryModel getObjeot String ObjectTypeType inventory getActor String ActorTypeType util getActorlDs 5 Enumeration lt String gt workflow getObjectslDs Enumeration lt String gt fromhwfe Abbildung 20 Data Model Klassen 25 67 HOVISSE Workflow Editor Diplombericht Beim Inventory ist es hnlich dort sollen jedoch zus tzlich gewisse Referenzen zum Catalog bereits aufgel st werden Somit muss bei einer Referenzanfrage nicht auch noch zus tzlich der Catalog abgefragt werden Das WorkflowTreeModel schliesslich ist bereits eine spezielle Aufbereitung f r die Anzeige im JTree Mit Hilfe von DefaultMutableTreeNode Objekten wird eine Baumstruktur aufgebaut Der Inhalt der Objekte ist dabei eine eigene Element Klasse Der Vorteil dabei ist dass so jedes Element gleich behandelt werden kann 4 4 3 Presentation Model Die Presentation Model Klassen sind sozusagen die Wrapper Klassen zwischen dem GUI und dem Data Model Sie stellen einerseits die Schnittselle zum GUI dar und bereiten die Daten so auf dass sie m glichst einfach dargestellt werden k nnen Andererseits h lt die jeweilige Presentation Model Klasse die Referenzen auf die Datenmodelklassen und ist in der Lage diese entsprechend der R ckmeldung des GUI zu aktualisieren Die entsprechenden Klassen werden f
4. getPreFalseList ArrayList lt PropositionNode gt saveModel void getPreAllList ArrayList lt PropositionNode gt getld String getPostTrueList ArrayList lt PropositionNode gt getActionList ArrayList lt ActionTypeNode gt getPostFalseList ArrayList lt PropositionNode gt getActiveAction Action TypeNode getPostAllList ArrayList lt PropositionNode gt getDescription String isChangedData boolean getPreTrueList ArrayList lt PropositionNode gt setChangedData boolean void getPreFalseList ArrayList lt PropositionNode gt getPreAllList ArrayList lt PropositionNode gt S getPostTrueList ArrayList lt PropositionNode gt getPostFalseList ArrayList lt PropositionNode gt getPostAllList ArrayList lt PropositionNode gt ActionSeguencePresentationModel getAvailableActorList ArrayList lt ActionT ypeNode gt S S getSelcetedActorList ArrayList lt ActionTypeNode gt ki EE getAvailableObjectList ArrayList lt ActionTypeNode gt sent ve i getSelcetedObjectList ArrayList lt ActionTypeNode gt 3 saveModel oa N isChangedData boolean getDescription String setChangedData boolean void getPreTrueList ArrayList lt PropositionNode gt gt getPreFalseList ArrayList lt PropositionNode gt getPreAllList ArrayList lt PropositionNode gt getPostTrueList ArrayList lt PropositionNode gt getPostFalseList Array
5. List lt Condition gt getProposition List lt Proposition gt getFinalState State getPhase List lt Phase gt setFinalState State void getld String getld String EE setld String void List List List inventory action m description String Condition Inventory Proposition preCondition List lt Condition gt gt FR a H postCondition List lt Condition gt propRef String ref String description Strin H N a id Se g id String precondition List value boolean getRef String n Stri H en SS SE getDescription String getPropRef String EE VEER setDescription String void TN SetPropRef String void setDescription String void getPreCondition List lt Condition gt postcondition List isValue boolean E N n Sting id getPostCondition List lt Condition gt setValue boolean void Ee Eu sval getld String setld String void ActionGroup ActionSeguence ObjectFactory 5 R 3 S action List lt SimpleAction gt action List lt SimpleAction gt ObjectFactory S Sr 5 createActionSequence ActionSeguence 3 BENSON Sinple action getAction List lt SimpleAction gt createProposition Proposition createActionGroup ActionGroup createCondition Condition List List createSimpleAction SimpleAction createActorRef ActorRef createWorkflow Workflow F 3 Actornet crea
6. void setld String void Abbildung 25 dto util Klassen 30 67 HOVISSE Workflow Editor Diplombericht 4 5 Business Layer 4 5 1 Pakete Der Business Layer enth lt nur die zwei Pakete welche die eigentliche Applikations logik enthalten Der Anteil an Business Logik ist in diesem Projekt relativ gering pd business layer Abbildung 26 Business Layer Pakete Tabelle 7 Ubersicht Presentation Layer Pakete Paket Beschreibung handler Beinhaltet die Command Handler Klasse sim Beinhaltet die Klassen welche auf die Antworten der Workflowengine reagieren 4 5 2 Command Handler Klasse Der Command Handler wird aufgrund einer User Interaktion z B open workflow aufgerufen Er f hrt die notwendigen Schritte durch um die gew nschte Aktivit t auszuf hren cd handler M CommandHandler instance CommandHandler mainView MainView mainModel MainModel z z CommandHandler getlnstance CommandHandler initCommandHandler MainView MainModel void newCommand void openCommand void saveCommand void saveAsCommand void closeCommand void editModusCommand void simulationModusCommand void EN E Abbildung 27 Command Handler Klasse 31 67 HOVISSE Workflow Editor Diplombericht 4 5 3 Simulations Klassen Die SimHandler Klasse ist f r die Initialisierung der Simulation zust
7. Ki getDescription String setDescription String void getld String setld String void Abbildung 24 dto catalog Klassen 29 67 HOVISSE Workflow Editor Diplombericht 4 4 7 dto util Die drei dto util Klassen sind die serializer bzw deserializer Klassen dass heisst sie lesen die Daten mit Hilfe der JAXB Technologie in das generierte Objekt Model bzw schreiben das Objektmodell wieder in die XML Struktur zur ck Des Weiteren bieten Sie die M glichkeit das XML File bzw die Objektstruktur gegen das entsprechende Schema zu validieren Catalog und Inventory m ssen im Prinzip nur gelesen werden Der Vollst ndigkeit halber stehen die Methoden zum Serializieren der jeweiligen Objektmodelle ebenfalls zur Verf gung cddto util Workflow DtoSerializer util CatalogDtoSerializer context JAXBContext context JAXBContext context JAXBContext dtoFactory ObjectFactory dtoFactory ObjectFactory dtoFactory ObjectFactory schemaFactory SchemaFactory schemaFactory SchemaFactory schemaFactory SchemaFactory schema Schema schema Schema schema Schema validate boolean false validate boolean false validate boolean false WorkflowDtoSerializer InventoryDtoSerializer CatalogDtoSerializer setSchema String void setSchema String void setSchema String void serialize Workflow String void serialize Inventory Stri
8. das Ausw hlen von Cancel oder Anw hlen eines anderen Elements im Baum werden die gemachten Anderungen f r das aktuelle Element verworfen bzw auf den letzten Stand zur ckgesetzt CA hwelworkspace workflowsample42 xm p DI si Workflow Modus Simulation 3 Worktlow w 2 R D Phase p1 TN simpleaction T1 IN simpleaction T2 Description D SimpleAction T3 D SimpleAction TA D SimpleAction T5 gt F Phase p2 initialState Phase p3 o ActionGroup Gi N N j n B SimpleAction T37 P1 C arm is near perlen D SimpleAction T38 p2 Anesthesia has drip i ja P3 Drip is attached to stand TN simpleaction T39 P4 Stand is near patient i N 1 amp CJ Actionseguence 866 SE ke A P5 Infusion is made e een Patient is operated true available States Il Phase p SE 2 N i G SimpleAction T41 P6 Surgeon1 is near patient a E ed ER FE D SimpleAction T42 P7 Assistant has scalpel piia Geleet IN SimpleAction T43 P8 Surgeon has scalpel ix 2 Sc u Lei 3 simpleaction T44 TN Simpleaction T45 finalState Phase p true available States D SimpleAction T51 IP9 Incision is made amp P1 C arm is near patient SimpleAction T52 P2 Anesthesist has drip D SimpleAction T53 2 Pi Drip is attached to stand Di Stand is near patient false 2 wech P5 Infusion is made 1 P6 Surgeon1 is near patient P10 Surgeon 1 is near pat
9. ndig sowie f r das Starten und Stoppen Des Weiteren kann die gew nschte Simulations geschwindigkeit festgelegt werden Die SimListenerlmpl Klasse ist die Listener Klasse welche auf de Meldungen der Workflow Engine h rt Entsprechend der gemeldeten Zust nde werden die Informationen in den Panels aktualisiert cd sim 7 SimulationListener SimListenerlmpl SimHandler simulation Simulation lastPhase String null initSim void workflowld String startSim String void simulation Simulation startSim void statusMap Map lt String Boolean gt stopSim void setSpeed Simulation Speed void SimListenerlmpl Simulation String onActionEnded String void onActionStarted String void onError String void onPhaseStarted String void onWorkflowEnded void Abbildung 28 Simulation Klassen 32 67 HOVISSE Workflow Editor Diplombericht 4 6 Presentation Layer 4 6 1 Pakete Der Presentation Layer beinhaltet alle Pakete die mit der grafischen Ausgabe zu tun haben Dies sind die Panels und Dialoge sowie die Menus pd presentation layer ET eiio E o Abbildung 29 Paket Diagramm Presentation Layer Tabelle 8 bersicht Presentation Layer Pakete Paket Beschreibung menu Beinhaltet die Klassen f r das Erstellen der Menus menu action Beinhaltet die Menu Action Klassen ui dialo
10. r die Workflow Engine Die Implementierung des SimListener bestand wiederum darin f r die jeweils er haltenen Events entsprechende Meldungen auf den Command Prompt zu schreiben PhaseStarted phaseld pl ActionStarted actionId T1 ActionStarted actionId T2 ActionEnded actionId T1 Property STATUS Pl true P2 true P7 false Abbildung 14 Test Output Dieser Test konnte ebenfalls erfolgreich durchgef hrt werden 20 67 HOVISSE Workflow Editor Diplombericht 4 1 Einf hrung Die ben tigten Klassen bzw Pakete werden in die nachfolgenden vier Layer eingeteilt Dabei sollen die Layer von unten nach oben aufbauend sein e Der Support Layer enth lt unterst tzende Klassen e Der Data Layer enth lt die Klassen f r die eigentlichen Daten Objekte sowie f r den Zugriff lesen und schreiben der Daten XML Files e Der Business Layer enth lt die Logik Klassen Da es sich um ein GUI Projekt handelt ist dieser Anteil hier recht gering e Der Presentation Layer enth lt s mtliche Klassen im Zusammenhang mit dem GUI Dies sind die Panels welche f r die Darstellung und Bearbeitung der unterschiedlichen Daten verwendet werden sowie zus tzlich ben tigte Dialoge Presentation Layer Abbildung 15 Software Layer 21 67 HOVISSE Workflow Editor Diplombericht 4 2 Klassendiagramm bersicht Als Erstes soll mit dem nachfolgenden groben Klassendiagramm eine erste bersicht ber die vorhandenen Pak
11. r jedes Objekt bei Bedarf neu erzeugt cd Presentation Model J MainModel getlnstance MainModel Observable getWorkflowModel WorkflowTreeModel WorkflowPresentationModel getlnventoryModel InventoryModel getCatalogModel CatalogModel WorkflowPresentationModel Workflow PhasePresentationModel N ns void PhasePresentationModel Phase gt saveModel String String String ArrayList lt PropositionNode gt void BANE i Ce saveModel void getld String SE EE getld String getDescription String SE h i getDescription String getSelectedlnvtory InventoryNode f E a n R getPreTrueList ArrayList lt PropositionNode gt getlnventory ArrayList lt InventoryNode gt E 5 er getPropositions ArrayList lt PropositionNode gt getPreFalseList ArrayList lt PropositionNode gt N getPreAllList ArrayList lt PropositionNode gt getPostTrueList ArrayList lt PropositionNode gt gt getPostFalseList ArrayList lt PropositionNode gt getPostAllList ArrayList lt PropositionNode gt ActionGroupPresentationModel ActionGroupPresentationModel ActionGroup relnit void 2 saveModel Svele SimpleActionPresentationModel getld String tDescription String SimpleActionPresentationModel SimpleAction 1 o N getPreTrueList ArrayList lt PropositionNode gt relnit void
12. 62 67 HOVISSE Workflow Editor Diplombericht 9 5 Simulation Modus Edit Modus Wenn ein Workflow gespeichert ist kann im Menu Modus der Simulationsmodus angew hlt werden Nach einer abgelaufenen oder gestoppten Simulation kann wieder in den Edit Modus zur ck gewechselt werden 9 6 Simulation Menu Nach einer Umschaltung in den Simulation Modus werden die entsprechenden Menu Punkte freigeschaltet Die Simulation kann gestartet und es die gew nschte Simulationsgeschwindigkeit gesetzt werden Simulation C hwe workspace workflow Prototyp StartWorkflow Workflow Modus Simulation topWorkflov ai O Slow simulation speed amp Medium simulation speed e 4 Phase pz O Fast simulation speed wet er Abbildung 50 Menu SimulationsModus Abbildung 51 Menu Simulation 9 7 Simulation Nach dem Start einer Simulation werden links im Baum die Elemente entsprechend ihrem Zustand eingef rbt Gelb bedeutet dass eine Phase oder Action gestartet wurde Gr n bedeutet dass die entsprechende Phase oder Action erfolgreich beendet wurde Wenn der ganze Workflow erfolgreich durchlaufen wurde wird das Workflow Element ebenfalls gr n eingef rbt C hwe workspace workflow PrototypeWorkflow zmi DI x Workflow Modus Simulation Proposition proposition description F status P1 C arm is near patient undefined P2 Anesthesist has drip undefined P3 Drip is attac
13. H setPostCondAvailableList ArrayList lt PropositionNode gt void hen Gasen Ge setPostCondFalseList ArrayList lt PropositionNode gt void S sotDotallstnn LG setPostCondTrueList ArrayList lt PropositionNode gt void 9 3 Meet E EA ETS yi setActionType AmrayList lt ActionTypeNode gt ActionTypeNode void seere setPostCondAvailableList ArrayList lt PropositionNode gt void EE setPostCondFalseLisi ArayList lt PropositionNode gt void dai s a 7 a a setPostCondTrueList ArrayList lt PropositionNode gt void jr CE MALLIA SEME lh setPreCondAvailableList ArayList lt PropositionNode gt void setPreCondFalseList ArrayList lt PropositionNode gt void setPreCondTrueLisi ArayList lt PropositionNode gt void setAllActorlis ArrayList lt ActionTypeNode gt void setSelctedActorLis ArayList lt ActionTypeNode gt void gt setAllObjectList AmayList lt ActionTypeNode gt void setSelctedObjectList ArrayList lt ActionTypeNode gt void setModel SimpleActionPresentationModel void javax swing JPanel view SimulationPanel SimulationPanel JavaxswingJPanel setProposition ArrayList lt PropositionNode gt void TreeSelectionListener getPropTableModel WorkilowTableModel MouseListener TreePanel TreePanel MainView sotWorkilow DefaultMutableTreeNode void valueChanged TreeSelectionEvent void mouseClicked TreeSelectionEvent void repaint void mouseClicked MouseEvent void m
14. HOVISSE Workflow Editor Diplombericht 2 Analyse Ein erheblicher Teil der System Analyse der GUI Prototypen sowie die Beschreibung der XML Schnittstelle wurde bereits im Rahmen des Pflichtenhefts 02 erstellt und ist in demselben zu finden Nachfolgend wird auf der Basis des Pflichtenhefts aufgebaut 2 1 Der Workflow und seine Abh ngigkeiten Nachfolgend soll der Workflow bereits einmal als Baumsicht dargestellt werden Ein Workflow ist aus verschiedenen Elementen zusammengesetzt In blau sind die verschiedenen Levels von Handlungen in gr n die entsprechenden Werte f r die jeweiligen Level dargestellt Das Ganze stellt sich aber doch etwas komplexer dar als in der nachfolgenden Grafik dargestellt wird Diverse Elemente sind nur Referenzen auf ein Inventory File oder das Catalog File NZ N Abbildung 1 Datenstruktur des Workflows 7167 HOVISSE Workflow Editor Diplombericht Das Element Inventory ist wie der Name schon vermuten l sst eine Referenz auf das entsprechende Inventory File Actor und object sind Referenzen auf das Inventory File 1 welches seinerseits weiter auf das Catalog File referenziert 2 Des Weiteren bestehen aber bereits Abh ngigkeiten innerhalb des Workflows So referenzieren InitialState FinalState preCondition und postCondition auf die Proposition des Workflow Ein ganz spezieller Fall sind die ActionTypes Sie sind einerseits abh ngig von der catRef welche auf das entsprechende Eleme
15. Test ID ZB 1 8 1 Rechtes Panel Die neuen Propositions sind in den Phasen unter den available States bzw in den Conditions unter available Conditions vorhanden Es wird eine neue Phase hinzugef gt Es werden entsprechende Werte spezifiziert SSES Linkes Panel Die neu erstellte Phase wurde zum Baum hinzugef gt Es wird eine neue ActionGroup zu einer Phase hinzugef gt Es werden mehrere SimpleActions zur ActionGroup hinzugef gt 8 3 Linkes Panel Die neu erstellten Actions wurden zum Baum hinzugef gt Das File wird geschrieben Im gew hlten XML File sind die Werte wie vorg ngig angepasst vorhanden 56 67 HOVISSE Workflow Editor Diplombericht Tabelle 18 Elemente entfernen 4TC1 9 Ausgangslage Es ist ein Workflow ge ffnet der mehrere Elemente von jedem Type aufweist Der Tree ist vollst ndig ge ffnet Es wird eine Phase entfernt an welcher mehrere Action angeh ngt sind Test ID 1 9 1 Linkes Panel Die Phase inklusive aller zugeh rigen Subelemente wurde aus dem Baum entfernt 1 9 2 Rechtes Panel Es werden die Details zum Parent Element des gel schten Elements angezeigt Es wird eine ActionGroup entfernt an welcher mehrere SimpleAction angeh ngt sind n mp 5 1 9 3 Linkes Panel Die ActionGroup inklusive aller zugeh rigen Subelemente wurde aus dem Baum entfernt Es werden die Details zum Parent Element des gel schten Elements angezeigt 9 4 Recht
16. re bis zur Definition leer geblieben Dies h tte in einem Fall dazu gef hrt das man sich die neu hinzugef gten Elemente h tte merken m ssen da sie nicht als neue Werte erkennbar gewesen w ren Andererseits h tte bei leeren Werten die Gefahr bestanden dass diese nie auf einen entsprechend g ltigen Wert gesetzt worden w re Dies hat dann dazu gef hrt dass ich auf die Idee mit dem 3 Fachen Auswahlpanel gekommen bin preCondition true available Conditions P4 Stand is near patient ES P1 C arm is near patient I P5 Infusion is made P3 Drip is attached to stand P2 Anesthesist has drip EN P8 Surgeon has scalpel unu S P9 Incision is made false x P6 Surgeon is near patient j P7 Assistant has scalpel Abbildung 46 Ausschnitt 3 Fach Auswahlbox Definitive L sung Dort kann der Anwender die entsprechenden Werte sehr einfach zur gewinschten Gruppe hinzuf gen bzw von dieser entfernen F r alle Operationen Hinzuf gen L schen Andern wird immer die gleiche Operation durchgef hrt In einer ersten Idee sollte das 3 Fache Auswahlpanel noch in einem separaten Fenster ge ffnet werden Dies hatte jedoch wiederum den Nachteil eines zus tzlichen Fensters das jedesmal ge ffnet und wieder geschlossen werden muss und somit den Arbeitsfluss bremst Dies auch weil die Arbeitsweise eher so ist dass wenn ich f r eine Vorbedingung einen bestimmten Wert setze ich gleichzeitig die Nachbedingung f r den ents
17. wichtigsten im Pflichtenheft als Use Cases definierten Aktivit ten dargestellt werden um so einen besseren berblick ber die m glichen Abl ufe zu bekommen 2 4 1 Programm starten ad Programm starten 7 User startet das Programm Environment File einlesen Konfiguration pr fen Fehlermeldung fehlerhafte Konfiguration Fehlerhafte oder unvollst ndige Konfiguration korrekte Konfiguration Modelle initialisieren GUI Menu initialisieren O Programm gestartet Programm beendet Abbildung 4 Aktivit tsdiagramm Workflow Editor starten Die allererste Handlung ist dabei das Starten des Editors Als N chstes wird das Environment File eingelesen und falls vorhanden auf die vollst ndige und korrekte Konfiguration gepruft Bei einer unvollst ndigen oder fehlerhaften Konfiguration wird der Editor sogleich wieder beendet Anschliessend erfolgt der Aufbau der Basis Modelle und des Initialen GUI sowie das Erstellen der Menubar Somit ist der Editor gestartet und zum Arbeiten bereit 11 67 HOVISSE Workflow Editor Diplombericht 2 4 2 Neuer Workflow erstellen Eine der beiden m glichen Aktivit ten nach dem Starten des Editors ist das Erstellen eines neuen Workflows Dabei muss der User ein entsprechendes Inventory definieren Anhand dessen k nnen dann das Inventory und Catalog File eingelesen werden Sofern dabei keine Fehler aufgetreten sind werden die ben tigten Workfl
18. 1 1 Zweck des Dokuments Dieses Dokument ist der Abschlussbericht zur Diplomarbeit Master Thesis des HOVISSE Workflow Editors Es soll darin aufgezeigt werden welche Arbeiten im Rahmen dieser Diplomarbeit durchgef hrt wurden Es werden die berlegungen zu den einzelnen Phasen also Analyse Design und Test beschrieben sowie die aufgetretenen Probleme thematisiert und auf die daraus resultierenden Erkenntnisse eingegangen Zudem ist dies die eigentliche Dokumentation zum Projekt und zur weiteren Verwendung der Software Detaillierte Informationen zu den Klassen und Methoden sind in der zugeh rigen javadoc zu finden berdies wurden die im Code potenziell unklaren Stellen soweit dokumentiert dass die entsprechenden Schritte nach vollzogen werden k nnen 1 2 Ausgangslage Aufgabenstellung HOVISSE ist ein Forschungsprojekt der Berner Fachhochschule auf dem Gebiet der medizinischen Virtual Reality Forschung Dabei geht es um die Planung Simulation und Optimierung von Workflows f r medizinische Operationen Der Rahmen dieser Arbeit bestand aus der Aufgabe einen Editor zu erstellen welcher die Erfassung und Bearbeitung eines solchen Workflows auf einfache Art erm glicht Der Workflow wird dabei in einem XML Dokument beschrieben welches entsprechend gelesen oder geschrieben werden soll Mit Hilfe der vorhandenen Workflow Engine soll der erstellte Workflow simuliert werden um so auf seine Richtigkeit berpr ft werden zu k nnen Ei
19. 10 2 3 2 Vorhandene Menu Punkte pro Tree Element Kontext Menu 10 E e 1216 e nu 11 2 41 Programm Ee E 11 2 4 2 Neuer Workflow erstellen 12 2 43 et lee TEE 13 2 4 4 Workflow schliessen WEE 14 2 4 5 Worktlow spelchem EE 15 2 4 6 Simulation Modus anw hlen und Simulation starten 16 S Proy pE un geesde 17 KN JAKO E A AAA AA AAT 17 3 2 Menu Handling EE 18 JE RE 19 3 4 Panel e e EEN 19 3 5 Test der e en E 20 2 DENE 21 4 1 Einf hrung SE 21 4 2 Klassendiagramm bersicht AA aa n n aan aan naan aan aaeean 22 45 SUDPOIT Jee EE eege 23 4 3 1 E 23 4 3 2 Environment Klasse 23 4 3 3 Exception Klassen EE 23 44 Data E 24 a Ra WEE 24 442 DAM 25 4 4 3 Presentation Model 26 44 40 El NOrI N kue 27 4 4 5 dto inventory EE 28 4 4 6 dto catalog EE 29 247 dO E 30 Ee EN For GE EN 4 5 2 Command Handler Klasse 31 453 Simulations Klassen Cie 32 ee NET E 33 2 67 HOVISSE Workflow Editor Diplombericht e WE 33 4 62 DEG Lasser 33 463 Menu und menu action ee eh Eege 34 E EE 34 e GE IER LE ln 36 4 7 1 Starten des HOVISSE Workflow Editor AAA 36 4 7 1 1 Initialisieren der Main View Init Main View 37 4 7 2 Offnen des Workflow Open Workilow nananana 38 4 7 2 1 Erzeugen des Baums Create Tree 40 4 7 3 Selektieren eines Elements Select Element 41 4 7 4 Hinzuf gen eines Elements Add ActionGroup ccccosuusssnnn nnen 41 5 LC sungsbeschreibung s usasass sssvaisi svasainsn vanno
20. 5 Abbildung 36 Abbildung 37 Abbildung 38 Abbildung 39 Abbildung 40 Abbildung 41 Abbildung 42 Abbildung 43 Abbildung 44 Abbildung 45 Abbildung 46 Abbildung 47 Abbildung 48 Abbildung 49 Abbildung 50 Abbildung 51 Abbildung 52 Diplombericht Presentation Model Klassen 26 dto workflow Klassen EE 27 dto inventory Klassen sieh 28 dto catalog Klassen nee En 29 OO I es ne er OE er al 30 Business Layer Pakete era 31 Command Handler Klasse EN Simulation KIA S SO ge eee 32 Paket Diagramm Presentation Layer 33 Dialop Rlassen ee ee e Ree 33 Menu und menu action klassen 34 New Klassen E 35 GEET DEER ee een ee ii are 36 Sequenz Diagramm Init MainModel rnnnnnnnnnnnnnnnnnnnnnnnnnnnvrvnnnnnnnnnnennnnnn 36 Sequenz Diagramm Init MainView rrnnnnnnnrrnnnvnnnrvnnnvnnnrrnnnvnnvrrnnrvnnvrnnsen 37 Sequenz Diagramm Open Workflow a nnn annan naan aaaaaen 39 Sequenz Diagramm Create Tree 40 Sequenz Diagramm Select Element 41 Add Element ActionGroup rooonnnovonnnnnnnnnnvonnnnnnnnnnnnnnnnnennnnnnnnnnnnnnnneee 42 Erste Idee Datenflyss aussen era 43 bersicht Datenfluss nnen nnen nana esnesn 44 Schliessen mit dem X Button 45 Ausf llen eine P nels s se 2er 46 Erster Panel Entwurf f r eine Action Aus Pflichtenheft 49 2 Fach Auswahlbox Prototype ernnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 50 Ausschnitt 3 Fach Auswahlbox Definitive L sung
21. 5 Basiswissen Softwaretest Heidelberg dpunkt verlag 04 Computer Perception and Virtual Reality Group 4 Januar 2007 Abgerufen am 13 April 2008 von http www cpvr ch Virtual Reality Projects ORISOS 05 Fl ckiger M 2006 Usability Engineering Schlieren Z rich Z hlke Engineering 06 Grau R 2006 Module Testing und Test Management Schlieren Z rich Z hlke Engineering 07 Happel J 2006 Requirements Management Schlieren Z rich Z hlke Engineering 08 Kruchten P 1999 Der Rational Unified Process M nchen Addison Wesley Longman 09 Metz Igor Scheidegger Andreas 2003 OO Softwareentwicklung mit der UML Bern Glue Software Engineering 10 Oestereich B 2006 Analyse und Design mit UML 2 1 M nchen Oldenbourg Verlag 11 Oestereich B 2005 Die UML Kurzreferenz Munchen Oldenbourg Verlag 12 Osley M 2003 Business Modeling based on RUP Schlieren Z rich Z hlke Engineering 13 Scheuring Heinz Scholian Thomas 2001 Fachbuch Projektmanagement Kaiseraugst Scheuring AG 14 Kim Topley 2000 Core Swing advanced programming New Jersey Prentice Hall 15 Sun Swing Tutorial https java sun com docs books tutorial uiswing index html 16 JAXB Reference Implementation https jaxb dev java net 65 67 HOVISSE Workflow Editor Diplombericht D Tabellenverzeichnis Tabelle 1 bersicht der m glichen Menupunkte pro Zustand 10 Tabelle 2 bersi
22. 7 1 1 Initialisieren der Main View Init Main View Die Mainview selber ist das eigentliche Frame da sie von JFrame erbt Bei der Initialisierung der MainView wird als Erstes ein Menu mit Hilfe des MenuBuilders aufgebaut F r jeden Menupunkt ist eine entsprechende Action Klasse vorhanden welche nun instanziiert wird Zur besseren bersicht ist nur ein solcher Ablauf im nachfolgenden Diagramm eingezeichnet Anschliessend werden die eigentliche MenuBar und die Menus erstellt Als N chstes werden nun die Action Klassen welche die Menupunkte repr sentieren zu den entsprechenden Menus hinzugef gt Als Letztes werden in den Menus die f r den Initialzustand erlaubten Menupunkte aktiviert bzw die anderen deaktiviert Da die Oberfl che in zwei Bereiche unterteilt werden soll erstellt die initPanel Methode schliesslich ein SplitPanel und f gt es zur MainView hinzu Als letztes wird in den rechten Bereich des SplitPanels das Welcome Panel gesetzt Der linke Bereich bleibt bis zum Vorhandensein eines Workflows leer p sd Init Mainview sd Init Mainview view MainView menu MenuBuilder actions New MenuAction actions OpenMenuAction Swing JMenuBar Swing JMenu view WelcomePanell MenuBuilderfmainview Analog Tan initAction weiteren Action i i H NewMenuAction name i i OpenMenuAction name i initMenu new JMenuBar zu i JMenu JMenu H H H Hinzuf gen aller actions 7 i H H
23. Anschliessend wird die MainView bei der TreeModel Klasse mit Hilfe des Observer Patterns registriert damit diese bei einer Anderung des Models entsprechend informiert werden kann Als letzter Schritt wird der CommandHandler instanziiert und anschliessend initialisiert Bei der Initialisierung werden ihm die Referenzen zum MainModel und der MainView mitgegeben sd Startup HWFE F hwfe HovisseWFE odel MainMode view MainView handler CommandHandler util Environment User T T T H H H i i i i 1 1 Start HWFE I initEnvironment i i H MainModel getInstance H i new MainView mainModel i i i getWorkflowModel addObserver mainView i i i CommandHandler getlnstance i i i i initCommandHandler maniview mainmodel Abbildung 33 Sequenz Diagramm Startup Beim Initialisieren des MainModels werden nacheinander die verschiedenen Models erzeugt damit das MainModel die entsprechenden Referenzen besitzt sd Init MainModel 155 T i i i i WorkflowTreeModel model Workflow TreeModel model CatalogModel model lnventoryModel rg i i InventoryModel catalogModel i i i i i CatalogModel i Abbildung 34 Sequenz Diagramm Init MainModel 36 67 HOVISSE Workflow Editor Diplombericht 4
24. Diplombericht U v U Berner Fachhochschule Hochschule f r Technik und Informatik Software Schule Schweiz HOVISSE Workflow Editor Klasse MAS 06 01 September 2008 Version 1 0 Abstract Diese Arbeit befasst sich mit einem Workflow Editor welcher es erm glicht die im Rahmen des HOVISSE Projekts verwendeten Workflows von medizinischen Operationen grafisch zu erfassen und zu bearbeiten Des Weiteren kann der erfasste Workflow mit der bereits vorhandenen Workflow Engine simuliert und so auf dessen Korrektheit berpr ft werden Keywords Workflow Java Swing GUI JAXB XML HOVISSE Editor Diplomarbeit Nr MAS 06 01 05 Student Edgar Baumeler Seidenweg 73 3012 Bern Tel G 031 330 13 38 Betreuer Beatrice Amrhein Wankdorffeldstrasse 102 3014 Bern Tel G 031 848 32 76 Experte Urs K nzler Wankdorffeldstrasse 102 3014 Bern Tel G 032 321 63 43 Stephan Fischli Wankdorffeldstrasse 102 3014 Bern Tel G 031 848 32 74 HOVISSE Workflow Editor Diplombericht Inhaltsverzeichnis 1 JEINIEIEUNG E 5 154 Eege des Eeer eet 5 1 2 Ausgangslage Aufgabenstellung nn nn nananana anne n nene 5 EE REE 5 KE TT E 6 15 Nomenklatur enen tana THEN airline 6 2 Analyse iiaea aneia anai reaa aeaa eA Re 7 2 1 Der Workflow und seine Abh ngigkeiten osssssss nnen nn nananana 7 22 serilniell te en en 9 2 3 ZUStandsdiagramm se euer a a aa a ia 9 2 3 1 Vorhandene Main Menu Punkte pro Zustand
25. Editor starten TC 1 1 Ausgangslage Der Workflow Editor ist korrekt konfiguriert Der Worklow Editor wird gestartet Test ID TT 1 1 1 Linkes Panel Das Panel ist minimiert stellt nichts dar 1 1 2 Rechtes Panel Das Panel zeigt das Begr ssungs Panel an 1 1 3 Menu Nur de Menu Items New Open und Exit sind aktiv Test ID 1 1 4 Rechtes Panel Das Panel zeigt wieder die urspr nglichen Werte an Ausgangslage Das hwfe properties ist nicht vorhanden Aktion Der Workflow Editor wird gestartet Test ID VESIEN SKSL 1 1 5 Dialog Es wird eine Fehlermeldung angezeigt Das Programm wird beendet 52 67 HOVISSE Workflow Editor Diplombericht Tabelle 11 Workflow Editor beenden HTC 1 2 Ausgangslage Der Workflow Editor ist gestartet und ein Workflow ist ver ndert Es wird im Menu Workflow Exit angew hlt Test ID he Se era 1 2 1 Linkes Panel Es wird eine Warnung angezeigt dass der Workflow ver ndert aber nicht gespeichert wurde N Aktion Es wird Nein angew ht ss I Test D 1 1 O 1 2 2 Rechtes Panel Das Beenden wird abgebrochen Der Editor ist wieder im Zustand wie vor dem Anw hlen von Exit Es wird im Menu Workflow Exit angew hlt Bei der Warnung wird Ja angew hlt DE gt gt gt Das Programm wird ohne zu speichern beendet Tabelle 12 Neuer Workflow erstellen TC 1 3 Ausgangslage Der Editor ist korrekt konfiguriert und gestartet Aktion Es wi
26. Es ist Workflow ge ffnet Es wurde ein Action Element im Baum angew hlt Es werden id und oder description ver ndert sowie die Zust nde pre und postCondition angepasst True False ndern hinzuf gen und entfernen Es wird cancel gedr ckt Test ID Te 1 7 1 Rechtes Panel Die Werte werden wieder auf ihre urspr nglichen Werte zur ckgesetzt Es werden id und oder description ver ndert sowie die Zust nde pre und postCondition angepasst True False ndern hinzuf gen und entfernen Es wird OK gedr ckt Test ID 1 7 2 Rechtes Panel Die neuen Werte sind im Model gespeichert Die ver nderten Werte erscheinen auch wieder nach einem zwischenzeitlichen Anw hlen eines anderen Elements Es werden im Workflow zwei neue Propositionen hinzugef gt Es wird die description einer Proposition ge ndert Es wird eine Phase angew hlt Test ID ooo O E OO 1 7 3 Rechtes Panel Die neuen Werte sind in der Phase verf gbar 55 67 HOVISSE Workflow Editor Diplombericht Die zwei neuen Propositionen werden als True oder False Condition hinzugef gt Eine bestehende Condition wird entfernt Es wird im Menu Save oder SaveAs gew hlt Das File wird geschrieben Im gew hlten XML File sind die Werte wie vorg ngig definiert vorhanden bzw angepasst Tabelle 17 Elemente hinzuf gen TC1 8 Ausgangslage Es ist ein Workflow ge ffnet Aktion Es werden neue Propositionen zum Workflow hinzugef gt
27. List lt PropositionNode gt getPostAllList ArrayList lt PropositionNode gt isChangedData boolean setChangedData boolean void Abbildung 21 Presentation Model Klassen 26 67 HOVISSE Workflow Editor Diplombericht 4 4 4 dto workflow Die dto workflow Klassen wurden aus dem xsd File mit Hilfe von JAXB generiert Sie sind die sogenannten Daten Transfer Objekte dto da die entsprechenden Instanzen ein Objekt Abbild des XML Files darstellen Mit Hilfe dieser Klassen werden die entsprechenden Modelle aufgebaut Dies stellt im Prinzip ein Teil des Datenmodels dar cd workflow d Phase Workflow N description String GEN String initialState State Inventory Inventory 7 action List lt Action gt proposition List lt Proposition gt finalState State phase List lt Phase gt id String id String initialState s Description Sti getDescription String gt ag getDescription String List setDescription String void ition ti iti setDescription String void gt S a un finalState condition List lt Condition gt getinventory Inventory setlnitialState State void iti i iti setinventory inventory void EAr EE getCondition
28. Node TreeElementNode gt Phase getCurrentNode getUserObject getNode i La i i workflow Phase Phase gt i List lt Action gt getAction i i X getCurrentNode add actionGroupNode i x ja i i addSelectionPath new TreePath actionGroupNode getPath i i updateUl r i Abbildung 39 Add Element ActionGroup 42 67 HOVISSE Workflow Editor Diplombericht 5 L sungsbeschreibung Ein grosser Teil der L sungsbeschreibung bzw der Erkenntnisse sind bereits in den Kapiteln 4 Design und 3 Prototypen zu finden Zudem ist im Kapitel 7 1 Usability Test die GUI L sungsfindung beschrieben In diesem Kapitel soll noch einmal auf gewisse Zusammenh nge und spezielle Gegebenheiten eingegangen werden 5 1 Datenfluss 5 1 1 Erste Idee Anf nglich bestand die Idee wie im nachfolgenden Diagramm beschrieben die aus den XML generierten Klassen Workflow Objekte direkt an das GUI zu bergeben und direkt mit den jeweiligen Elementen zu verbinden Die im GUI gemachten nderungen h tten dann jeweils in eine Kopie des XML Files geschrieben serialisiert werden k nnen Beim Verwerfen der nderungen h tte dann nur das bestehende XML File neu geladen werden m ssen Ein endg ltiges Speichern h tte nur noch eine Umbenennung des Files nach sich gezogen Workflow Kopie Work File fl
29. a saadaan Naama maana aan SANA a aka 43 S t e Wl 43 Salk Ne 43 5 1 2 Umgesetzter Datenfluss ana an 44 5 2 Abweichungen zum Pilchtenbeft n naan aa anne n nn naaeen 45 5 3 N tzliche Hinweise eeh eh Ehe AE 45 5 3 1 Schliessen mit dem X Button 45 5 3 2 Ausf llen eines Panels mit dem Tree Panel 46 6 Tools amp Technologiemni usuisassssssase susan ausaaa navan mata asa aa Maa Maun anna mann 47 6 1 Entwicklungsumgebung ser 47 6 2 Weilere 1008 svare 47 6 2 1 Subversion SYN sr 47 EN ER OE ONE ER 47 E WIN 0 EE NE NE RE RE ni a a ie 48 6 4 JB ea 48 AE 0 dE EE 48 L TOST EE EO 49 TK VEDATTE bre 49 TT PFOS EN EE 50 7 128 Greet EE 50 7 2 System lest Gases Ee ie EE Ee 52 de TEN LS EE 52 8 E 59 8 1 Vorgehen Pers nlicher Eindruck e 59 8 2 PAN 59 8 39 PUS DICK ea 59 9 Benutzerhandbuch E 60 CS WR ite e ein De 60 GT ME POPES a re een Sao 60 9 1 2 1094 properties wasser 60 9 2 Laden Offnen Speichern eines Workilows n ennnen 61 9 3 Selektieren Bearbeiten von Elementen 11 61 9 4 Hinzuf gen Entfernen von Tree Elementen 62 9 5 Simulation Modus Edit Modus nee ns 63 9 6 Smdatonr MENU een er 63 9 7 Sm Ls 63 A XML Sch mas amp Files uuuuaruneanesmmnmnsmnmnnmnenimnnnnvvmsisennsj 64 Bi CSA 64 WEI HOVISSE Workflow Editor Diplombericht EES HSN SEENEN diaa aaa ENNEN 65 Tabellenverzeichnis eege een geess 66 el UH ET a 66 Re e Ee ET E 67 4 67 HOVISSE Workflow Editor Diplombericht 1 Einleitung
30. alisieren erfolgreich war werden die Menupunkte entsprechend angepasst ansonsten wird der Vorgang ohne das File zu Speichern mit einer Fehlermeldung abgebrochen ad Workflow speichern J Lef User w hlt speichern Ziel File wird aus dem Environment gelesen Das original File wird in old umbenannt aktueller Workflow wird serialisiert Fehlerbeim serialisieren schreiben des XML Fehlermeldung Menus speichern deaktivieren Simulations Modus aktivieren Workflow nicht gespeichert Workflow gespeichert Abbildung 8 Aktivit tsdiagramm Workflow speichern 15 67 HOVISSE Workflow Editor Diplombericht 2 4 6 Simulation Modus anw hlen und Simulation starten Wenn ein Workflow gespeichert ist kann der Simulation Modus angew hlt werden Dabei wird als Erstes der Simulator initialisiert Durch das Starten wird die Simulation mit dem aktuellen Workflow oder der gew hlten Phase gestartet Nun werden laufend die aktuellen Proposition sowie die Zust nde der vorhandenen Elemente angezeigt bis die Simulation fertig durchgelaufen ist Falls dies nicht m glich ist wird eine entsprechende Fehlermeldung ausgegeben ad Simulation Modus anw hlen und Simulation starten User w hlt Simulation Modus Simulator wird initalisiert User startet die Simulation aktueller Properties Status wird angezeigt Aktueller Workflow Status wird angezeigt Simulation l uft k
31. alog Klassen stellen die Menge der verf gbaren Typen von Objekten zur Verf gung cd catalog J Catalog description String roomTypes RoomTypesType actorTypes ActorTypesType objectTypes ObjectTypesType actionTypes ActionTypesType eek getDescription String setDescription String void getRoomTypes RoomTypesType setRoomT ypes RoomT ypesType void getActorTypes ActorTypesType setActorTypes ActorTypesType void getObjectTypes ObjectTypesType setObjectTypes ObjectTypesType void getActionTypes ActionTypesType setActionTypes ActionTypesType void actionTypes objectTypes actorTypes roomTypes ActionTypesType ObjectTypesType actionType List lt ActionTypeType gt objectType List lt ObjectTypeType gt ActorTypesType actorType List lt ActorTypeType gt RoomTypesType roomType List lt RoomTypeType gt getActionType List lt ActionTypeType getObjectType List lt ObjectTypeType gt getActorType List lt ActorTypeType gt createActionTypeType ActionTypeType createObjectTypeType ObjectTypeType createCatalog Catalog createPropertyType PropertyType name ing value String List List List ActionTypeType ObjectTypeType ActorTypeType name String name String name String description String description String descr
32. changedState setState state l i 4 H I I i i i i i i i i i setCatalog catalog E i x i i i i i i i i i i i util InventoryDtoSerializer H i InventoryDtoSerializer H ag i i i i i i i i i i H Inventory deserialize inventoryXMLpath intventoryRef i i i i i i i i i i i i T i i i i i Hi setlnventory inventory 1 1 1 x H i i i H i setTitle XMLPath i H i i i i i i i i i i i i i i i i model Workflow PresentationModel i i WorkflowPresentationModel workflow i i i i i i i i T i i i i H i E EE EE Abbildung 36 Seguenz Diagramm Open Workflow 39 67 HOVISSE Workflow Editor Diplombericht 4 7 2 1 Erzeugen des Baums Create Tree Das Workflow Objekt weist im Prinzip bereits eine Art Baumstruktur auf Somit muss das Workflow Objekt nur in einer pre order Traversierung durchlaufen werden und dabei die entsprechenden Objekte erzeugt werden Der Baum wird dabei mit DefaultMutableTreeNode Objekten aufgebaut welche ein Objekt enthalten k nnen Damit jedes dieser Objekte gleich behandelt werden kann wurde ein einfaches Datenobjekt der TreeElementNode erstellt Dieses enth lt nebst dem eigenen Objekt noch einmal separat den Typ und den Namen id Zudem ist noch ein Status vorhanden welcher bei der Simulation zu tragen kommt Nebstdem ist die toString Methode wichtig da sie zur Beschriftung des Elements im Baum verwendet wird S
33. chreibt k nnen entsprechende Klassen erzeugt werden Die Unmarshal und Marshal Methoden werden von JAXB zur Verf gung gestellt und erm glichen das Lesen bzw Schreiben des entsprechenden XML Files Der Prototyp zum Thema JAXB sollte folgenden Fragen beantworten bzw Schritte testen Tabelle 3 bersicht der Prototype Tests mit JAXB Testfall Beschreibung Klassen generieren Erzeugen der entsprechenden Java Klassen aus dem vorhandenen Schema mit Hilfe des xjc Kommandos XML File einlesen Mit Hilfe des vorhandenen Unmarshaller ein bestehendes XML einlesen 17 67 HOVISSE Workflow Editor Diplombericht Testfall Beschreibung Zugriff auf die Objekte Ver ndern der Objekte Ausgabe der Objektwerte in das Command Fenster Ver ndern von einfachen und komplexen Werten sowie Elementen innerhalb von Listen bzw Elemente aus der Liste entfernen und neue hinzuf gen Schreiben des XML Mit Hilfe des vorhandenen Marshaller ein XML File zur ckschreiben und Files berpr fen ob die ver nderten Werte richtig zur ckgeschrieben wurden Diese Tests konnten alle ohne Probleme durchgef hrt werden In der verwendeten Java Version 6 0 ist JAXB 2 0 bereits enthalten so dass keine zus tzliche Library ben tigt wurde Dabei sind folgende Beobachtungen gemacht worden e Wichtig ist es den korrekten Package Path f r die zu erzeugenden Klassen einzusetzen e Ein Problem wurde im Zusammenhang mit dem dtd File festges
34. cht der angezeigten Kontext Menu Punkte pro Zustand 10 Tabelle 3 bersicht der Prototype Tests mit LANB menneen 17 Tabelle 4 bersicht der Prototype Tests f r Tree 19 Tabelle 5 bersicht Support Layer Pakete ona n na na naan 23 Tabelle 6 bersicht Data Layer Pakete non a aa aa naa nananana 25 Tabelle 7 bersicht Presentation Layer Pakete srrnnrrrnrennvennvennvennvennvennvrnnvnnnvnnsvnnnn 31 Tabelle 8 bersicht Presentation Layer Pakete rsrrrnrrrnvrrnvernvennvrnnvernvrrnvrnnvnnnvrnnvnnnn 33 Tabelle 9 bersicht der Test Cases uuoouum onnen an an ana a aan e nananana 52 Tabelle 10 Workflow Editor starten ATCO Lina ea aan Ee r 52 Tabelle 11 Workflow Editor beenden HTC 1 53 Tabelle 12 Neuer Workflow erstellen HTC 13 00 53 Tabelle 13 Bestehender Workflow ffnen HTC 14 54 Tabelle 14 Bestehender Workflow speichern HTC TL 54 Tabelle 15 Workflow schliessen HTCTIe annan an aan ana naan an ana ana naaaanan 55 Tabelle 16 Workflow bearbeiten HTC1 7 suvaunnnnnnnnnnennennnnnvennennnennennnnnnennennennennnnnnvennenn 55 Tabelle 17 Elemente hinzuf gen TC1 8 444444444HHRRHRnnnnnn nn nn ana aan nannaa ana aaa annan 56 Tabelle 18 Elemente entfernen STCTO nenne nennen 57 Tabelle 19 Modus amp Simulation STCTLI0 nun nenn nennen 58 E Abbildungsverzeichnis Abbildung 1 Datenstruktur des Workflows mannaa naan naan anne 7 Abbildung 2 Abh ngigkeiten des Worktlo
35. dem X Button Standardm ssig ist der X Button oben rechts roter Kreis bereits so vorbelegt dass beim Anw hlen die Applikation automatisch geschlossen wird Falls nun aber eigener Code ausgef hrt werden soll zum Beispiel um vorg ngig zu berpr fen ob alles gespeichert wurde und allenfalls eine Warnung auszugeben muss die Funktion berschrieben werden Dazu muss einerseits ein neuer addWindowsListener zum eigenen JFrame hinzugef gt werden und die windowsClosing Methode berschrieben werden In meinem Fall habe ich einfach mein bestehendes exitCommand aufgerufen Zum Anderen musste definiert werden dass die DefaultCloseOperation nichts tut 45 67 HOVISSE Workflow Editor Diplombericht myJFrame addWindowListener new java awt event WindowAdapter public void windowClosing java awt event WindowEvent evt pers nlicher Exit Handler aufrufen commandHandler exitCommand IG Disable automatic close operation myJFrame setDefaultCloseOperation JFrame DO NOTHING ON CLOSE Code 1 Schliessen mit dem X Button 5 3 2 Ausf llen eines Panels mit dem Tree Panel F r den Editor wurde ein Split Panel benutzt in welches auf der linken Seite jeweils mit Hilfe eines JTree der Workflow dargestellt wird Dabei ist anf nglich das Problem aufgetreten dass das JTreePanel nicht den ganzen vorhandenen Platz ausgef llt hat linke Abbildung Durch den untenstehenden Code in welchem vorg ngig ein GridLayout der Gr s
36. ei einem ersten GUI Review als zu unpraktisch befunden Bei einer zu grossen Menge von Proposition ist eine ComboBox nicht mehr praktisch F r die Bearbeitung w re zudem ein zus tzlicher Dialog n tig geworden Das L schen schliesslich w re ber das Selektieren eines Elements durchgef hrt worden Das heisst f r jede der drei Operationen w re eine Handlung n tig gewesen Aufgrund dessen habe ich mich ein wenig umgeschaut wie dies in hnlichen F llen gemacht wird H ufig wird dabei ein Dialog mit 2 Listboxen verwendet wobei eine Seite die verf gbaren und die andere Seite die ausgew hlten Elemente enth lt Ein solcher Dialog steht in Java nicht zur Verf gung weshalb habe ich einen entsprechenden Dialog wie nachfolgend abgebildet erstellt habe x Available Proposition Inital State Propostion Item 1 a Item 51 Item 2 Add gt gt Item 52 Rem 3 Item 53 Item 4 Rem 54 Item 5 Item 55 Item 6 Item 56 Rem 7 Rem 8 Item 9 lt lt Remove Item 10 L Item 11 Rem 12 Item 13 z Cancel OK Abbildung 45 2 Fach Auswahlbox Prototype Dabei war die Idee mit Hilfe der 2 Fach Auswahlbox jeweils die gew nschten Propositions auszuw hlen Dies hat jedoch zu verschiedenen neuen Problemen gef hrt Die Zuweisung des Wertes true oder false der Proposition findet nicht bei der Auswahl statt Somit h tte ein default Wert gesetzt werden m ssen oder der 50 67 HOVISSE Workflow Editor Diplombericht Werte w
37. eine weiteren Schritte m glich weitere Schritte m glich Fehlermeldung Alle m glichen Schritte ausgef hrt Simulation vollst ndig durchgelaufen Simulation beendet Letzter Zustand wird angezeigt Abbildung 9 Aktivit tsdiagramm Simulation Modus Workflow simulieren 16 67 HOVISSE Workflow Editor Diplombericht 3 Prototypen Da im Projekt verschiedene Bibliotheken mit welchen ich bis jetzt nur wenig oder gar keine Erfahrungen gesammelt hatte eingesetzt werden sollten habe ich mich dazu entschlossen die gemachten Uberlegungen mit verschiedenen Prototypen zu verifizieren um einerseits die Erfahrungen in das Design einfliessen zu lassen und andererseits allf llige Probleme bereits fr hzeitig erkennen zu k nnen Bei der Erstellung dieser Prototypen wurde weitgehend auf Architektur und Design verzichtet und alles direkt in eine oder wenige Klassen codiert um m glichst schnell ein Resultat zu erreichen Nachfolgend werden die wichtigsten Prototypen beschrieben die f r dieses Projekt erstellt wurden 3 1 JAXB F r das Lesen und Schreiben der XML Files sollte JAXB verwendet werden In der nachfolgenden Abbildung sind die Zusammenh nge zwischen Schema XML File und Klassen Objekten in JAXB dargestellt Mapping ET ER Instanzen Unmarshal Ee KA mm lt nn Abbildung 10 Zusammenh nge in JAXB Schema Aus dem Schema welches das XML bes
38. eines bestimmten Elements zust ndig Alle diese Panels wurden mit Hilfe eines GUI Editors erstellt und um die ben tigte Funktionalit t erweitert Jedes Detailpanel hat eine setModel Methode mit welcher ihr das jeweilige Presentation Model bergeben wird In diesem Model sind alle ben tigen Daten f r die Anzeige vorhanden Zum Andern der Daten muss auf dem erhaltenen Model die saveModel Methode mit den entsprechend ver nderten Werten als Parameter aufgerufen werden Im nachfolgenden Diagramm sind die Klassen des View Pakets zu sehen 34 67 HOVISSE Workflow Editor Diplombericht TI cd view JFrame Observer javax swing JPanell MainView ActionPanel MainView MainModel ActionPanel update Observable Object void setEmptyTreePanel void setTreePanel DefaultMutableTreeNode void setSimpleActionPanel SimpleActionPresentationModel void setActionSeguencePanel ActionSeguencePresentationModel void setActionGroupPanel ActionGroupPresentationModel void setPhasePanel PhasePresentationModel void A A setWorkilowPanel WorkilowPresentationModel void setWelcomePanel void setSimPanel ArrayList lt PropositionNode gt void getMenubuilder MenuBuilder ActionSeguencePanel getTreePanel TreePanel getSimPanel SimulationPanel TUHKAA AA AAA A A setModel ActionSequencePresentationModel void setld String void setDeseription String void setPostCondAvailableL
39. ektieren eines Elements ist ein wichtiger Schritt welcher sich im Prinzip jedoch recht geschaltet Durch das Registrieren eines TreeSelectionListener wird beim Selektieren eines neuen Elements die Methode valueChanged aufgerufen welche dann entsprechend implementiert werden muss Als Erstes muss die Referenz auf das angew hlte Element geholt werden Da im DefaultMutableTreeNode Objekt jeweils unser Daten Objekt enthalten ist kann dies einfach herausgeholt und der setPanel Methode bergeben werden Innerhalb dieser Methode wird nun entsprechend des enthaltenen Types das passende PresentationModel Objekt erzeugt dem richtigen Panel bergeben und das Panel in die View gesetzt Als Letztes wird das selektierte Objekt als das aktuelle Objekt gemerkt Dies wird dann sp ter wieder ben tigt wenn mit Hilfe des Kontext Menus eine Aktion darauf ausgef hrt wird sd Select Element F Bir view TreePanel Swing JTree Swing TreePath Swing DefaultMutableTreeNode User H H O 1 H H H i H H H i H H e m H i H i i H i i H selectElement e i TreePath getSelectionPath i N DefaultMutableTreeNode getLastPathComponent i H zo i i TreeElementNode getUserObjecti H H setPanel element setCurrentNode currentNode Abbildung 38 Sequenz Diagramm Select Element 4 7 4 Hinzuf gen eines Elements Add ActionGroup Das Hinzuf gen eines Elements wird mit Hilfe des Be
40. erf gung zu stellen Das Presentation Model wird dann an das entsprechende Panel bergeben welches die Werte zur Anzeige bringt Data Data Presentation View Files Models Models Panel Workflow Panel 1 Catalog Phase Panel In I I I I Inventory ActionGroup Panel N i Io o Action gl Sequence N I i Workflow Panel I i I I I pr TI SimpleAction __________ l Panel 1 I jo l l N l O OP el Ett reePanellsm gt Workflow Editor Abbildung 41 bersicht Datenfluss 44 67 HOVISSE Workflow Editor Diplombericht 5 2 Abweichungen zum Pflichtenheft Urspringlich war in der Konfiguration ein definition path vorgesehen in welchem sich die Schemas und dtd Files befinden In JAXB wird das dtd File standardm ssig im gleichen Verzeichnis wie das XML File erwartet Ich habe keine M glichkeit ge funden dies einfach anzupassen Deshalb wurde der definition path weggelassen Die dtd und Schema Files m ssen sich nun in den jeweils entsprechenden Foldern der XML Files befinden 5 3 N tzliche Hinweise In diesem Kapitel habe ich einige n tzliche Codeteile aufgelistet f r Probleme die im ersten Moment einige Schwierigkeiten bereitet haben aber mit ganz wenig Code gel st werden konnten 5 3 1 Schliessen mit dem X Button Abbildung 42 Schliessen mit
41. ermeldung kein Workflow geladen Abbildung 6 Aktivit tsdiagramm Workflow laden 13 67 HOVISSE Workflow Editor 2 4 4 Workflow schliessen Diplombericht Designbedingt ist es nur m glich einen Workflow gleichzeitig zu bearbeiten Somit muss der aktuelle Workflow geschlossen werden bevor ein Neuer erstellt oder ge ffnet werden kann Beim Schliessen wird Uberpr ft ob der momentan ge ffnete Workflow gespeichert wurde ansonsten wird eine entsprechende Warnung ausgegeben Andernfalls wird das Model geleert und das GUI bzw die Menu Punkte wieder entsprechend dem Initialzustand dargestellt ad Workflow schliessen 7 User w hlt schliessen berpr fen ob der Workflow ver ndert wurde Warnung das der Workflow ver ndert wurde Trotzden schliessen Workflow wurde ver ndert keine nderung Model leeren GUI Menu anpassen Workflow geschlossen Wie nach Programmstart schliessen ohne zu speichern abbrechen gt Workflow nicht geschlossen Abbildung 7 Aktivit tsdiagramm Workflow schliessen 14 67 HOVISSE Workflow Editor Diplombericht 2 4 5 Workflow speichern Einer der wichtigsten Vorg nge ist das Speichern eines erstellten oder ver nderten Workflows Als Erstes wird die Zieldatei in welche der Workflow gespeichert werden soll ausgew hlt Als vorbeugende Aktivit t wird das bestehende File als old gesichert Falls das Schreiben seri
42. erstellt Als Letztes wird im Environment noch der neue Zustand mitgeteilt sowie die korrekten Menu Items aktiviert Der Ablauf f r das Erstellen eines neuen Workflows ist sehr hnlich Anstelle des Einlesens eines Workflows wird mit Hilfe der generierten ObjectFactory eine neue Workflow Klasse erzeugt 38 67 HOVISSE Workflow Editor Diplombericht User sd Open Workflow handler CommandHandler T T i i openCommand i i i i i OpenWorkflowDialog parent path dialog OpenWorkflow Dialog i gt i i T i setWorkflowFilePath workflowFilePath 1 i i i i 1 7 i util Workflow DtoSerializer Workflow deserialize workflowXMLpath i gt i i i i i i WorkflowTreeModel getWorkflowModel i setWorkfl ow workflow Environment odel MainModel model Workflow TreeModell view MainView i H kf i i i i i i i i i i i i i i i i i i i i i H i Catal ogDtoSerializer createProposition workflow ja DefaultMutableTreeNode createTree La createTree hotifyObservers Siehe Detail Diagramm a util CatalogDtoSerializer Catalog deserial ize catalogXMLpath setWorkflowPanel model setWorkilowUn
43. ert del ID t2 Inventory Referenz il Action Simple Action Action Type Item 1 r Precondition Proposition Value lt Add Item 1 zl Item1 w Proposition value Ei Edit Remove Ei Item 3 lt Add Item 1 v Item 1 w Item 4 es Remove Cancel OK Abbildung 44 Erster Panel Entwurf f r eine Action Aus Pflichtenheft 49 67 HOVISSE Workflow Editor Diplombericht 7 1 1 actor und object F r die actor und object wurde festgestellt dass diese zum Teil eine grosse Menge von zus tzlichen Informationen enthalten k nnen welche nicht auf dem bestehenden Panel Platz finden Die Informationen werden aber teilweise ben tigt um entscheiden zu k nnen ob und welche actor und object zu einer Action hinzugef gt werden sollen Eine erste Idee war ein Detail Button der f r ein bestimmtes Element ein Detail Dialog mit den zus tzlichen Informationen ffnet Bei einem weiteren Review wurde aber festgestellt dass ein zus tzlicher Dialog eher unpraktisch ist und den Arbeitsablauf st rt Bei der Suche nach einer L sung bin ich auf die Idee gekommen die Detailanzeige direkt in das Panel zu integrieren und dort jeweils die Details zum letzten selektierten actor oder object Element anzuzeigen Siehe dazu im Kapitel 9 3 Selektieren Bearbeiten von Elementen die Abbildung 48 Details zu selektiertem Element 7 1 2 Proposition Die urspr nglichen Dialoge haben sich als zu komplex erwiesen bzw wurden b
44. es Panel EE Es wird eine ActionSeguence entfernt an welcher mehrere SimpleAction angeh ngt sind Test ID 1 9 5 Linkes Panel Die ActionSeguence inklusive aller zugeh rigen Subelemente wurden aus dem Baum entfernt Es werden die Details zum Parent Objekts des gel schten Objekts angezeigt 1 9 6 Rechtes Panel Es werden nacheinander mehrere Action entfernt Test ID ON Linkes Panel Die Actions wurden aus dem Baum entfernt 1 9 8 Rechtes Panel Es werden die Details zum Parent Elementen des gel schten Objekts angezeigt ES Das File wird geschrieben Im gew hlten XML File sind die gel schten Elemente nicht mehr vorhanden 57 67 HOVISSE Workflow Editor Diplombericht Tabelle 19 Modus amp Simulation TC 1 10 Ausgangslage Ein Workflow ist geladen und ist unver ndert gespeichert Aktion Es wird im Menu Modus SimulationModus angew hlt mest D 1 Test ID 1 10 1 Linkes Panel Der Tree wird expandiert Ein Anw hlen eines Elements hat keine Wirkungen mehr Es ist nur noch das Kontext Menu Start Phase verf gbar 1 10 2 Rechtes Panel Es werden die Propositions angezeigt 1 10 3 Men Das StartWorkflow Menu ist aktiv Das StopWorkflow Menu ist inaktiv Die Geschwindigkeit Menus k nnen angew hlt werden Die Geschwindigkeit wird auf FAST gesetzt Es wird eine Phase gestartet Test ID WEEN 1 10 4 Linkes Panel Die Tree Elemente werden laufend entsprechend ih
45. ete und Klassen vermittelt werden cdhwfe HovisseWFE mainModel MainModel mainView MainView commandHandler CommandHandler logger Logger Logger getLogge 4 HovisseWFE initEnvironmenet void main String void from ui Abbildung 16 Software Layer Die beiden Pakete auf welchen der HOVISSE Workflow Editor aufbaut beinhalten die Model und die View Klassen Die View benutzt die zum Presentation Layer geh renden Pakete Menu und Dialog Das Model benutzt die dto Klassen welche im Prinzip das Datenmodell darstellen Der Handler setzt die durch die View ausgel ste Handlung im Modell um Die Simulation reagiert auf die Informationen welche sie von der Workflow Engine erh lt entsprechend Nachfolgend sind nun die einzelnen Pakete und Klassen genauer beschrieben 22 67 HOVISSE Workflow Editor Diplombericht 4 3 Support Layer 4 3 1 Pakete Der Support Layer enth lt unterst tzende Pakete welche von allen Klassen verwendet werden k nnen pd support layer oe Abbildung 17 Software Layer Pakete Tabelle 5 Ubersicht Support Layer Pakete Paket Beschreibung Beinhaltet die Environment Klasse welche die Umgebung verwaltet sowie eine State Enumeration welche die Zust nde verwaltet exception Beinhaltet die eigenen Exception Klassen util 4 3 2 Environment Klasse Die Environment Klasse verwalte
46. flogen kann Panels Workflow CA Workflow Test Panel Editor 0 ow les amp c Phase Panel 1 Abbildung 12 Austauschen eines Panels 19 67 HOVISSE Workflow Editor Diplombericht Die Ubernahme der Panels ist grunds tzlich problemlos m glich Der Mantisse Builder in NetBeans scheint aber noch einige M ngel aufzuweisen e F r die Beschriftung von Buttons habe ich die Sonderzeichen f r Pfeile verwendet In der Preview Darstellung waren diese entsprechend korrekt Nach der Ubernahme nach Eclipse musste jedoch die entsprechende Schriftart und die entsprechenden Sonderzeichen von Hand korrigiert werden e Je nach Hinzuf gen oder Verschieben von Elementen im Editor ndert sich die Gr sse des Fensters oder das Panel hat nicht mehr eine fixe Gr sse sondern ist fliessend Dies l sst sich nicht mehr r ckg ngig machen Somit sollte vor heiklen Ver nderungen zwischengespeichert werden 3 5 Test der Workflow Engine Beim Test der Workflow Engine wollte ich die Anbindung an die erhaltene Workflow Engine testen cd sim X SimulationListener SimListenerlmpl simulation Simulation statusMap Map lt String Boolean gt SimTs SimListenerlmpl Simulation initSim void i onActionEnded String void main String void onActionStarted String void onError String void onPhaseStarted String void onWorkflowEnded void Abbildung 13 Testprogramm f
47. g Beinhaltet Dialog Fenster Klassen view Beinhaltet die Panel Klassen 4 6 2 Dialog F r das ffnen und Speichern eines Workflows werden zus tzliche Dialoge ben tigt Diese basieren auf den Standarddialogen Es werden zus tzlich Filter f r Filetypen und Selektionskriterien gesetzt Die ShowDialogBox dient zum Anzeigen von Warnungen und Fehlermeldungen cd dialog 7 OpenWorkflowDialog SaveAsWorkflowDialog ShowDialogBox fileChooser JFileChooser new JFileChooser retumVal int selectedFile File null fileChooser JFileChooser new JFileChooser retumVal int selectedFile File null ShowDialogBox warningDialog JFrame String String void guestionMsg JFrame String String int errorDialog JFrame String String void OpenWorkflowDialog JFrame String getSelectedFile File getReturnVal int SaveAsWorkflowDialog JFrame String getSelectedFile File getReturnVal int 25 as Abbildung 30 Dialog Klassen 33 67 HOVISSE Workflow Editor Diplombericht 4 6 3 Menu und menu action Die MenuBuilder Klasse baut das Menu auf Dies geschieht mit Hilfe der jeweiligen MenuAction Klasse z B OpenMenuAction welche von der abstrakten MenuAction Klasse erben F r jedes Menultem gibt es eine entsprechende Klasse cd menu 7 MenuBuilder AbstractAction MenuAction newAction Action openAction Actio
48. gehen Pers nlicher Eindruck Ein wichtiger Grundstein f r die vorliegende Arbeit war sicherlich das Pflichtenheft Ich habe es f r die Erweiterung der Analyse und des Design bzw f r die Implementierung doch des fteren wieder zur Hand genommen um zu pr fen wie etwas spezifiziert war Als speziell aufwendig habe ich die GUI Element erachtet Diese werden wohl des fteren untersch tzt und da es dort nicht ein richtig oder falsch gibt k nnen dort fast beliebig lange Optimierungen vorgenommen werden Ein Problem waren z B die optionalen Werte wie die Beschreibung bei den Properties Somit m sste bei der Anzeige derselben eigentlich immer die nichtssagende ID dargestellt werden Da ich dies ein wenig unsch n fand habe ich mich zu einer Kombination von ID und Description entschlossen 8 2 Resultat Ich denke es konnte ein brauchbares Tool erstellt werden dass die gestellten Anforderungen erf llen kann S mtliche vorgesehenen Use Cases konnten umgesetzt werden und wurden erfolgreich getestet Ein negativer Punkt ist die aufgewendet Zeit So hat die ganze Arbeit doch einiges mehr an Zeit in Anspruch genommen als die urspr nglich vorgesehenen 360 Stunden 8 3 Ausblick Da die Zeit sehr knapp war habe ich bewusst auf die Optimierung der optischen Details verzichtet und mich stattdessen prim r auf die Funktionalit t konzentriert So k nnten im Tree eigene Icons verwendet werden Das GUI k nnte mittels Short Keys benutzbar ge
49. gen Auf den unterschiedlichen Elementen wird bei einem Rechtsklick das entsprechende Kontext Menu anzeigt Diese Tests konnten gr sstenteils problemlos durchgef hrt werden Die nach folgenden Beobachtungen sind dabei gemacht worden e Standardm ssig k nnen mehrere Elemente selektiert werden Dies war in meinem Fall jedoch unerw nscht und musste speziell eingeschr nkt werden e Auf der rechten Maustaste ist das Kontextmenu hinterlegt Wenn jedoch mit der rechten Taste ein Element angew hlt wird erh lt das selektierte Element keinen Fokus dieser muss vorg ngig selber gesetzt werden e Beim L schen eines Elements geht der Fokus verloren Da aber ein aktuelles Element angew hlt sein muss setzte ich den Fokus in diesem Fall auf das Parent Element e Beim Einf gen eines neuen Elements bleibt der Fokus verst ndlicherweise auf dem Element auf welchem die Operation ausgef hrt wurde Der Fokus muss entsprechend auf das neu hinzugef gte Element gesetzt werden 3 4 Panel Prototype Um nicht alle Dialoge Panels von Hand erstellen zu m ssen wollte ich nach M glichkeit den Mantisse GUI Builder aus Netbeans verwenden Somit ging es bei diesem Prototype einerseits darum die generierten Panels nach Eclipse zu bernehmen und anzuzeigen Andererseits soll je nach angew hltem Element im Tree das entsprechende Panel im Scroll Panel angezeigt werden Dabei ging es auch darum zu berpr fen ob der Austausch der Panels schnell genug er
50. hed to stand undefined P4 Stand is near patient undefined P5 Infusion is made undefined P6 Surgeon is near patient true P7 Assistant has scalpel true P Surgeon has scalpel false P Incision is made false TN simpleaction T9 TN simpleaction T10 Abbildung 52 Workflow Editor w hrend einer Simulation 63 67 HOVISSE Workflow Editor Diplombericht A XML Schemas amp Files F r die Datenhaltung und den Austausch mit der Workflow Engine werden XML Files benutzt welche einem XML Schema gen gen sollen Diese sind ausf hrlich im Pflichtenheft 2 beschrieben HOVISSE Haptic Osteosynthesis Virtual Intraoperative Surgery Support Environment Look and Feel Bezeichnet das Aussehen und die Handhabung von Dialogen RUP Rational Unified Prozess Swing Ist eine Java Bibliothek zum Erstellen von grafischen Benutzer oberfl chen UML Unified Modeling Language Virtual Reality Bezeichnet computergenerierte k nstliche Umgebungen XML eXtensible Markup Language JAXB steht f r Java Architecture for XML Binding Es erm glicht aus einem XML Schema Java Klassen zu generieren und diese an ein entsprechendes File zu binden 64 67 HOVISSE Workflow Editor Diplombericht 01 Amrhein B amp Fischli S 2007 Diplomthema HOVISSE Workflow Editor Bern 02 Baumeler E 2008 Pflichtenheft HOVISSE Workflow Editor Bern 03 Andreas Spillner Tilo Linz 200
51. ient P11 Surgeon 3 is near patient l Ina2 P7 Assistant has scalpel ms P8 Surgeon has scalpel Cancel OK Abbildung 47 Ubersicht HOVISSE Workflow Editor 61 67 HOVISSE Workflow Editor Diplombericht Da die Elemente object und actor Zusatzinformationen enthalten k nnen welche aus Platzgr nden nicht beim eigentlichen Element dargestellt werden k nnen gibt es ganz unten ein Detail Panel Dort werden diese Details f r das jeweils zuletzt selektierte actor oder object Element angezeigt objects selected available details Property Name size Value 12 Abbildung 48 Details zu selektiertem Element 9 4 Hinzuf gen Entfernen von Tree Elementen Durch einen Rechtsklick auf ein Element in Baum k nnen je nach Elementtyp Phase Action usw weitere Subelemente hinzugef gt oder das angew hlte Element gel scht werden Beim L schen eines Elements werden falls vorhanden alle zugeh rigen Subelemente ebenfalls gel scht Workflow w42 amp 4 Phase p1 amp 3 Phase p2 EI Phase p3 o 3 ActionGroup Gi D SimpleAction T37 TN Simpleaction T38 D SimpleAction T39 o 3 ActionSequence 566 cI Phas si Add SimpleAction si Add ActionGroup G Si Add ActionSequence D Si Delete Phase TN Simpleaction T45 3 Phase p TN SimpleAction T51 D SimpleAction T52 IN simpleaction T53 Abbildung 49 Bearbeiten des Workflow Trees
52. iption String id String property PropertyType property PropertyType id String actionType List lt ActionTypeType gt getName String id String setName String void getName String getDescription String setName String void getName String setDescription String void getDescription String setName String void Geld String setDescription String void getDescription String setld String void getProperty PropertyType setDescription String void setProperty PropertyType void getProperty PropertyType getld String setProperty PropertyType void setld String void getActionType List lt ActionTypeType gt getld String setld String void ObjectFactory Description ONAME OName new QName Name ONAME OName new OName Hproperty property ObjectFactory createRoomTypeType RoomTypeType createActionTypesType ActionTypesType createActorTypeType ActorTypeType createObjectTypesType ObjectTypesType PropertyType createRoomTypesType RoomTypesType createActorTypesType ActorTypesType createDescription String JAXBElement lt String gt createName String JAXBElement lt String gt getName String setName String void getValue String setValue String void getRoomType List lt RoomTypeType gt List RoomTypeType description String id String
53. ispiels einer ActionGroup erl utert Grunds tzlich ist der Ablauf aber f r alle Elemente sehr hnlich Ausgel st wird das Hinzuf gen durch das Anw hlen der entsprechenden User Interaktion via Rechtsklick auf eine Phase in Kontext Menu Als Erstes wird ein neues ActionGroup Objekt erzeugt und eine Default ID gesetzt Es wird ein neues DefaultMutableTreeNode Element erzeugt und unser Datenobjekt hinzugef gt Nun werden die Parent Objekte ben tigt um die beiden Objekte Daten und TreeNode entsprechend hinzuzuf gen Da die entsprechende Operation bereits auf dem Parent Objekt ausgef hrt wurde in unserem Fall Phase ist dies entsprechend das aktuelle TreeNode Objekt bzw das darin enthaltene Daten Objekt an welches unsere neu erzeugten Elemente nun hinzugef gt werden k nnen 41 67 HOVISSE Workflow Editor Diplombericht Da nun das soeben hinzugef gte Element bearbeitet werden soll muss als letzter Schritt noch der Fokus auf das entsprechende Element gesetzt werden und die Tree Ul Komponente aktualisiert werden damit das neue Element auch angezeigt wird sd AddElement x view TreePanel Swing JTree User H U H 1 H i addActionGroup H H workflow ActionGroup ActionGroup setld value H EN element TreeElementNode i TresElementNadstelemantNamesnode pek Swing DefaultMutableTreeNode Tree NodeElement DefaultMutableTree
54. ist ArrayList lt PropositionNode void ActionGroupPanel setPostCondFalseList ArrayList lt PropositionNode gt void setPostCondT rueList ArrayList lt PropositionNode gt void setPreCondAvailableList ArrayList lt PropositionNode gt void setPreCondFalseList ArrayList lt PropositionNode gt void sotPreCondTrueList ArrayList lt PropositionNode gt void sotModel ActionGroupPresentationModel void setld String void setDescription String void setPostCondAvailableList ArrayList lt PropositionNode gt void setPostCondFalseList ArrayList lt PropositionNode gt void sotPostCondTrueList ArrayList lt PropositionNode gt void setPreCondAvailableList ArrayList lt PropositionNode gt void setPreCondFalseList ArrayList lt PropositionNode gt void setPreCondTrueList ArrayList lt PropositionNode void tt javax swing JPanell WelcomePanel WelcomePanel javax swing JPanel Workflow Panel WorklowPanel setld Sting void setDescription String void setinventoryType ArrayLisi lt InventoryNode gt InventoryNode void setProposition ArrayLisi lt PropositionNode gt void setModel WorklowPresentationModel void javax swing JPanel PhasePanel javax swing JPanell an SimpleActionPanel setld String void SimpleactionPanel setDescription String void S sotid Sting void
55. lowFilePath File setWorkflowFilePath File void getState State setState State void Exception exception MissingParmeterException serialVersionUID long OL MissingParmeterException String Exception exception ToManyFileException serialVersionUID long OL ToManyFileException String Abbildung 18 Environment und Exception Klassen 4 4 Data Layer 4 4 1 Pakete Die Pakete des Data Layer k nnen im Prinzip wiederum in drei Ebenen aufgeteilt werden Das dto util Paket ist f r den Zugriff und den Austausch der Daten mit dem XML File verantwortlich Die dto workflow dto inventory und dto catalog Pakete stellen die eigentlichen Daten dar In den Model Klassen werden die bestehenden Daten zur vereinfachten Verarbeitung oder Darstellung optimiert pd data layer model element dto w orkflow dto inventory dto catalog Abbildung 19 Data Layer Pakete 24 67 HOVISSE Workflow Editor Diplombericht Tabelle 6 Ubersicht Data Layer Pakete Paket Beschreibung Beinhaltet die mit JAXB generierten Workflow Klassen Beinhaltet die mit JAXB generierten Inventory Klassen dto workflow dto inventory dto catalog Beinhaltet die mit JAXB generierten Catalog Klassen dto util Beinhaltet die Klassen zum Einlesen und Speichern der dto Klassen Model Beinhaltet die verschiedenen Daten Modelle und die entsprechenden Methoden um die M
56. macht werden oder um eine Toolbar erweitert werden Des Weiteren k nnte mit relativ geringem Aufwand das Inventory File und allenfalls das Catalog File editierbar gemacht werden Eine Erweiterung mit der Workflow Engine w re eine Einzelschritt Simulation 59 67 HOVISSE Workflow Editor Diplombericht 9 Benutzerhandbuch Dieses Kapitel soll in einer ganz kurzen Form die wichtigsten Aspekte aus Benutzersicht beschreiben Dies sind einerseits die Konfiguration und andererseits die Bedienung des Workflow Editors selber Dieser sollte jedoch m glichst selbsterkl rend aufgebaut sein 9 1 Konfiguration Files 9 1 1 hwfe properties Im hwfe properties m ssen die Pfade zu den ben tigten Files definiert werden Es muss im root Verzeichnis des Workfloweditors vorhanden sein Im catalog path und inventory path m ssen sich das catalog xml bzw die ben tigten inventory xml befinden sowie die jeweils zugeh rigen dtd Files In diesen beiden Verzeichnissen d rfen sich keine andern xml Files befinden Im definition path sind die Schema Files abzulegen Der workflow path definiert das Verzeichnis in welchem sich die Workflow Files befinden catalog path c hwe workspace catalog definition path c hwe workspace definition inventory path c hwe workspace inventory workflow path c hwe workspace workflow Code 3 Beispiel hwfe properties 9 1 2 log4j properties Im log4j properties kann der Pfad zum Logfile und das Loglevel definiert we
57. n serialVersionUID long 1L saveAction Action saveAsAction Action MenuAction String closeAction Action actionPerformed ActionEvent void exitAction Action N editModusAction Action simModusAction Action startWorkflowAction Action stopWorkflowAction Action setSlowSimSpeedAction Action setMediumSimSpeedAction Action setFastSimSpeedAction Action menuBar JMenuBar menuWorkflow JMenu Pro Menu existiert menuModus JMenu eine entsprechend Klasse menuSim JMenu xxx Menunamen menuSimSpeedSlow JRadioButtonMenultem menuSimSpeedMedium JRadioButtonMenultem menuSimSpeedFast JRadioButtonMenultem N radioButtonGroup ButtonGroup xxxMenuAction HEES serialVersionUID long 5234124072234203154L MenuBuilder MainView xxxMenuAction String EI E actionPerformed ActionEvent void initMenu void setlnitialState void setWorkflowChangedState void setWorkflowUnchangedState void setSimModusState void setSimulationState void Abbildung 31 Menu und menu action Klassen 4 6 4 View Das View Paket beinhaltet die Mainview welche alle anderen Klassen kennt Das TreePanel ist verantwortlich f r die Darstellung des Baumes mit den darin enthaltenen Elementen Die auf dem Baum ausgef hrten Aktionen werden ebenfalls direkt in dieser Klasse behandelt S mtliche anderen Panels sind f r die Anzeige und Bearbeitung der Detailinformationen
58. n Jahren sozusagen als de facto Standard etabliert Weitere Informationen zu Log4j sind unter http logging apache org log4j zu finden 48 67 HOVISSE Workflow Editor Diplombericht 7 1 Usability Test Es war das Ziel mit Hilfe der Usabilty Test ein GUI zu entwerfen welches einerseits logisch aufgebaut ist die Daten bersichtlich darstellt und eine hohe Qualit t bez glich der Anwendbarkeit und Benutzerfreundlichkeit aufweist Ein weiterer Anspruch war es das GUI so zu gestalten dass der User m glichst wenig fehlerhafte Eingaben t tigen kann Die durchgef hrten Usability Tests sind in diesem Fall mehr als eine Art laufender Prozess anzusehen Es wurden mehrmals neue Dialoge diskutiert Zum Teil nur mit Hilfe von Skizzen auf Papier zum Teil mit Hilfe von GUI Prototypen ohne vollst ndige Funktionalit t welche mit einem GUI Editor erstellt worden waren Dabei wurden die Panels zum Teil mehrmals berarbeitet bis schliesslich der heutige Stand erreicht wurde Nachfolgend ist der Ablauf dieser Tests beschrieben Ausgangspunkt waren de GUI Entw rfe aus dem Pflichtenheft Dabei wurden folgende Dinge festgestellt e Die id muss ebenfalls bearbeitet werden k nnen e Der ActionType muss ver ndert und dabei aus einer vorgegebenen Menge ausgew hlt werden k nnen e Die Inventory Referenz geh rt nur zum Workflow e Es m ssen actor und object dargestellt werden k nnen e Die Auswahl Bearbeitung der Proposition ist zu komplizi
59. n keine grafischen Komponenten des Betriebssystems verwendet Bereits seit der Java Version 1 2 ist es ein fester Bestandteil der Java Runtime Environment JRE 6 4 JAXB Die Idee von JAXB Java Architecture for XML ist die Anbindungen von XML Files an Java Klassen und somit eine einfache Manipulation von XML Files zu erm glichen JAXB erzeugt aus dem XML Schema ein Abbild in Java Klassen auf welche entsprechend zugegriffen werden kann Das Lesen Unmarshalling des XML Files in die Klassen bzw das Zur ckschreiben Marshalling wird von JAXB durchgef hrt Somit sind keine Kenntnisse ber die Bearbeitung von XLM Dateien mehr notwendig JAXB kann als Ersatz von SAX und DOM angesehen werden JAXB Version 2 0 ist Bestandteil der Java SE 6 Weitere Informationen zu JAXB sind unter https jaxb dev java net und http java sun com developer technicalArticles WebServices jaxb zu finden 6 5 Log4j Ausser der Dokumentation ist auch das Fehlerhandling eine wichtige Komponente des Entwicklungszyklus Nebst einer vereinfachten Fehlerausgabe soll f r die genauere Untersuchung der Fehler die entsprechenden Exceptions geloggt werden k nnen Zudem kann so bei Bedarf zus tzliche Debug Information geloggt werden um den Verlauf und Zustand einer Applikation w hrend der Laufzeit auszugeben bzw gespeichert werden um sie einer sp teren Analyse zu unterziehen F r das Logging wird das Standard Logframework Log4J eingesetzt Es hat sich in den letzte
60. nden Panels verwendet und diese dann in die Eclipse Entwicklungsumgebung bernommen und entsprechend erweitert Wenn die Erweiterung sauber vom generierten Code getrennt wird k nnen im Bedarfsfall einfach wieder neue Panel Klassen generiert und die eigenen Teile entsprechend hinzugef gt werden 6 2 Weitere Tools 6 2 1 Subversion SVN F r die Verwaltung und das Versionshandling wurde ein Subversion Repository eingesetzt So war jederzeit gew hrleistet dass gemachte Anderungen nach vollzogen und diese im Bedarfsfall wieder r ckg ngig gemacht werden konnten Weitere Informationen zu SVN sind unter http subversion tigris org zu finden 6 2 2 UML F r die UML Diagramme wurden das Tool Enterprise Architect EA eingesetzt da ich bereits in mehreren Projekten gute Erfahrungen damit gesammelt hatte und sich die Diagramme relativ gut exportieren lassen Enterprise Architect ist ein leistungsf higes UML Tool welches im Normalfall allen Anspr chen f r ein durchschnittlich komplexes Entwicklungsprojekt gen gt Es ist relativ einfach zu bedienen und wird im Gegensatz zu manch anderem Tool zu einem vern nftigen Preis angeboten Weitere Informationen zu EA gibt es unter http www sparxsystems de 471 67 HOVISSE Workflow Editor Diplombericht 6 3 Swing Swing ist ein Framework zur Erstellung von grafischen Benutzeroberfl chen und ist im Gegensatz zu SWT Standard Widget Toolkit Plattform unabh ngig das heisst es werde
61. ne detaillierte bersicht ber das Projekt und seinen Kontext ist im Kapitel 2 des Pflichtenhefts 2 bersicht Projekt zu finden 1 3 Leserkreis Dieses Dokument richtet sich in erster Linie an den Experten die Betreuer sowie an alle interessierten Personen die sich mit diesem Thema auseinandersetzen bzw die Software verwenden oder weiterentwickeln m chten 5 67 HOVISSE Workflow Editor Diplombericht 1 4 Ubersicht Dieses Dokument ist wie folgt organisiert Kapitel 1 Vermittelt einen berblick ber das Dokument dessen Zweck Umfang und Leserkreis sowie die Ausgangslage Kapitel 2 Dokumentiert die auf dem Pflichtenheft aufbauende Analyse Kapitel 3 Dieses Kapitel beschreibt die erstellten Prototypen Kapitel 4 Beschreibt das Design aufbauend auf die vorangehenden Kapitel Kapitel 5 Hier werden die eigentlichen berlegungen zur L sung beschrieben Kapitel 6 Erl utert die eingesetzten Tools und Technologien Kapitel 7 Geht auf die durchgef hrten Tests ein Kapitel 8 Enth lt das Fazit und die Schlussfolgerungen Kapitel 9 Enth lt ein kurzes Benutzerhandbuch Anhang Enth lt das Glossar die Referenzen sowie Code Tabellen und Abbildungsverzeichnisse 1 5 Nomenklatur Das Dokument ist in Deutsch gehalten dort wo es jedoch sinnvoll erschien wurden die englischen Originalbegriffe verwendet Zu Gunsten einer besseren Lesbarkeit wurde f r s mtliche Bezeichnungen nur die m nnliche Form verwendet 6 67
62. ng void serialize Catalog String void deserialize String Workflow deserialize String String Inventory deserializeFolder String Catalog isValidate boolean deserialize String Inventory deserialize String Catalog setValidate boolean void isValidate boolean isValidate boolean main String void setValidate boolean void setValidate boolean void main String void main String void catalog Catalog inv entory Inv entory workflow Workflow E Ss En description String escription Strin E e Sun GH EE RE actors Actors objectTypes ObjectTypesType proposition List lt Proposition gt objects Objects ee IReilon nyoesivpe phase List lt Phase gt id String Pk Sune SESCH getDescription String getDescription String Tait mel vai getDescription String setDescription String void p EE EE setDescription String void getRoom Room 4 EE Tod SEU nede setRoom Room void getActorTypes FT ST Re mo onton void getActors Actors E setActorTypes ActorTypesType void getProposition List lt Proposition gt setActors Actors void as Ober Kod OG Jes R SE getObjects Objects setObjectTypes ObjectTypesType void g ke A setObjects Objects void getActionTypes ActionTypesType gt Edel Blog getld String setActionTypes ActionTypesType
63. nt im Catalog referenziert 3 Zudem sind sie aber auch noch indirekt von den vorhandenen actor abh ngig bzw dessen Referenz 1 2 welche zus tzliche actionType 4 enthalten Somit k nnen durch die Auswahl der actor die vorhandenen actionType einer Action beeinflusst werden Weiter ist zu erkennen dass ein actor auf eine grosse Menge von Daten 2 referenzieren kann die dann entsprechend dargestellt werden sollten Mit den nachfolgenden Ausschnitten aus den entsprechenden Files werden diese Abh ngigkeiten grafisch dargestellt Workflow lt action id T1 catRef x5 xsi type SimpleAction gt lt description gt TOA moves C arm to patient lt description gt lt preCondition propRef P1 value false gt lt postCondition propRef P1 value true gt lt actor invRef A3 gt lt object invRef 040 gt lt action gt Inventory lt actor id A3 catRef a3 gt Catalog lt actorType id a3 gt lt name gt TOA lt name gt o lt description gt A male assistant for lt description gt lt property name sterile value true gt lt actionType id s1 gt lt name gt cut lt name gt lt description gt Surgeon makes an incision lt description gt lt actionType gt lt actionType id s2 gt CN lt name gt make an infusion lt name gt lt description gt TOA makes an infusion at lt description gt lt actionType gt lt actorType gt lt actionTypes gt lt ac
64. odelle anzupassen 4 4 2 Data Model Das Mainmodel kennt und erzeugt alle anderen Models Nachfolgend ist der erste Teil dargestellt welcher auf den dto Klassen basiert Das Catalog Model stellt bessere Zugriffmethoden auf de Daten zur Verf gung Somit k nnen mit Hilfe des Keys id die verschiedenen Elemente abgerufen werden Damit bei den Listelementen nicht bei jeder Abfrage die ganze Liste durchsucht werden muss sollen die Element Referenzen in Hashtables abgef llt werden cd model Observable MainModel Workflow TreeModel etInstance MainModel getWorkflowModel WorkflowTreeModel getlnventoryModel InventoryModel getCatalogModel CatalogModel WorkflowTreeModel setWorkflow Workflow void getlnventory void createTree DefaultMutableTreeNode printWorkflow void getWorkflow Workflow getProposition String String getRootNode DefaultMutableTreeNode workflowModel catalogModel catalogModel CatalogModel setCatalog Catalog void CatalogModel initActors void initObjects void initActions void getRoomDescription String String getDescription String getActor String ActorTypeType getActorName String String getActorDescription String String getObject String ObjectTypeType getAction String ActionTypeType getAllAction Hashtable lt String ActionTypeType gt
65. omit wird nun als Erstes ein neuer Node mit dem entsprechenden Element f r den Workflow erstellt Dann wird die erste Phase gesucht und entsprechend hinzugef gt Anschliessend wird f r alle Actions dieser Phase ein entsprechendes Objekt erstellt und an die aktuelle Phase angeh ngt Dies wird dann f r die n chsten Phasen wiederholt bis der ganze Workflow durchlaufen wurde sd Create Tree J model Workflow TreeModeli element TreeNodeElement Swing DefaultMutableTreeNode workflow Workflow workflow Phase i TreeElementNode elementName node type i i i DefaultMutableTreeNode TreeNodeElement i List lt Phase gt getPhase s i TreeElementNode elementName node type i DefaultMutableTreeNode TreeNodeElement i Er eda ve anden han PT wird ein TreeNodeElement und i F eine DefaultMutableTreeNode i i rootNode add currentPhase erstellt i i 1 0 ListeAction gt getAction i s PO i i i i i i i TreeElementNode elementName node type i i i H i H i F r jede vorhandene Action i DefaultMutableTreeNode TreeNodeElement H wird ein TreeNodeElement und PT eine DefaultMutableTreeNode i i wl erstellt i i parentPhase add currentNode i Abbildung 37 Seguenz Diagramm Create Tree 40 67 HOVISSE Workflow Editor Diplombericht 4 7 3 Selektieren eines Elements Select Element Das Sel
66. oom setRoom Room void getActors Actors setActors Actors void getObjects Objects setObjects Objects void getld String setld String void objects actors Objects Actors object List lt Object gt actor List lt Actor gt room getObject List lt Object gt getActor List lt Actor gt List List Room Object Actor catRef String id String catRef String catRef String id String id String KE A H getCatRef String setCatRef String void getld String setld String void getCatRef String setCatRef String void getld String setld String void getCatRef String setCatRef String void getld String setld String void ObjectFactory Description ONAME QName new OName ObjectFactory createActors Actors createRoom Room createActor Actor createObjects Objects createObject Object createlnventory Inventory createDescription String JAXBElement lt String gt Abbildung 23 dto inventory Klassen 28 67 HOVISSE Workflow Editor 4 4 6 dto catalog Diplombericht Die dto catalog Klassen stellen den dritten Teil des Datenmodels dar und wurden wie die Klassen der beiden vorangehenden Pakete ebenfalls generiert Die dto cat
67. orkflow ge ffnet der ver ndert wurde Test ID 1 5 1 Der ver nderte Workflow wir in das bestehende File geschrieben 1 5 2 Das bisher bestehende alte File wird unter lt Filename gt lt DatumZeit gt bak gesichert Es wird im Menu Workflow Save As angew hlt und ein Filename ausgew hlt der bereits vorhanden ist Das bisher bestehende alte File wird unter lt Filename gt lt DatumZeit gt bak gesichert Es wird das neue File mit Pfad angezeigt EEE 3 3 Aueh ll Filename definiert mest D 1 54 67 HOVISSE Workflow Editor Diplombericht Tabelle 15 Workflow schliessen HTC 1 6 Ausgangslage Es ist ein Workflow ge ffnet der ver ndert wurde Aktion Es wird im Menu Workflow Close angew hlt Test ID 1 6 1 Dialog Es wird eine Warnung angezeigt dass der Workflow ver ndert aber noch nicht gespeichert wurde Es wird Nein angew hlt Test ID 1 6 2 Editor Das Schliessen wird abgebrochen Der Editor ist wieder im Zustand wie vor dem Anw hlen von Close Es wird im Menu Workflow Close angew hlt Bei der Warnung wird Ja gew hlt Test ID 1 6 3 Linkes Panel Das Panel ist minimiert stellt nichts dar Rechtes Panel Das Panel zeigt wieder das Begr ssungs Panel Die Menu Items New Open und Exit sind aktiv Es wurde nichts gespeichert Die gemachten nderungen sind verloren Tabelle 16 Workflow bearbeiten TC1 7 Ausgangslage
68. ouseEntered MouseEvent void mouseExited MouseEvent void mousePressed MouseEvent void mouseReleased MouseEvent void selectElement MouseEvent void showContextMenu MouseEvent void createWorktlowEditPopup void createPhaseEditPopup void create ActionEditPopup void createSimpleActionEditPopup void createPhaseSimPopup void expandAll void getWorktlowEditPopup JPopupMenu getPhaseEditPopup JPopupMenu getPhaseSimPopup JPopupMenu getActionEditPopup JPopupMenu getSimpleActionEditPopup JPopupMenu getCurrentNode DefaultMutableTreeNode setCurrentNode DefaultMutableTreeNode void updateld String void setState String String void resetState void selectWorkllowElement void treePanel Far HF HF FH HH HH HH HH HH Abbildung 32 View Klassen Panels 35 67 HOVISSE Workflow Editor Diplombericht 4 7 Seguenz Diagramme In diesem Kapitel soll mit Hilfe einiger ausgew hlter Seguenz Diagramme auf bestimmte Abl ufe genauer eingegangen werden 4 7 1 Starten des HOVISSE Workflow Editor Beim Starten des HOVISSE Workflow Editors wird als Erstes die Environment Klasse initialisiert Dass heisst es wird das hwfe properties ausgelesen und gepr ft ob es vorhanden ist und korrekt aussieht Danach werden das MainModel und die MainView erstellt Diese beiden Abl ufe sind nachfolgend noch etwas detaillierter beschrieben
69. ow und Tree Modelle aufgebaut und schliesslich der Tree sowie das Workflow Panel zur Bearbeitung des Workflows angezeigt ad Neuer Workflow erstellen 7 User w hlt new Workflow User muss Inventory definieren Inventory File in das Model laden Fehler beim Laden des Inventory Files Catalog File in das Model laden Fehler beim Laden des Catalog Files Neues Workflow Model erstellen Tree Model aufbauen Workflow Dialog anzeigen Neuer Workflow erstellt e Workflow nicht erstellt Abbildung 5 Aktivit tsdiagramm neuer Workflow erstellen 12 67 HOVISSE Workflow Editor Diplombericht 2 4 3 Workflow laden Die zweite m gliche Aktivit t nach dem Programmstart ist das Laden ffnen eines bestehenden Workflows Nach dem erfolgreichen Laden des ausgew hlten Workflow Files wird versucht die referenzierten Inventory und Catalog File zu laden Bei einem Fehler wird der entsprechende Vorgang mit einer Fehlermeldung abgebrochen Ansonsten wird das Tree Model aufgebaut und der Tree sowie der Workflow Dialog dargestellt ad Workflow laden E y User w hlt Workflow laden Workflow Auswahl File Dialog OK Worklow File wird geladen Fehler beim Laden Inventory Catalog werden geladen Fehler beim Laden Model Treemodel erstellen Workflow als Tree darstellen Workflow Dialog anzeigen e Workflow geladen Cancel Fehlermeldung Fehl
70. ow File deseralize Element X Cancel Abbildung 40 Erste Idee Datenfluss Es hatte sich dann aber gezeigt dass dies leider kein praktikabler Weg war Dies vorwiegend weil sich die Elemente des XML nicht so gut auf die GUI Elemente abbilden lassen Es gibt viele Referenzen einerseits bereits innerhalb des Workflow XML Files und andererseits auf die Inventory und Catalog Files 43 67 HOVISSE Workflow Editor Diplombericht 5 1 2 Umgesetzter Datenfluss Die Data Files Workflow Catalog und Inventory werden mit Hilfe von JAXB auf Java Objekte gemappt Diese werden innerhalb der entsprechenden Data Model Klassen abgelegt Zus tzlich werden bereits erste Abh ngigkeiten aufgel st und die Daten f r den Zugriff optimiert das heisst die Daten welche mit der zur Verf gung gestellten Getter Methoden abgefragt werden sollen einfach zugreifbar sein So werden zum Beispiel Listen f r einen schnelleren Zugriff in Hashtables abgef llt Pro anzuzeigendes Element Phase p2 Action a4 Action a5 usw wird jedes Mal ein Presentation Model f r das gew hlte Element zu der Zeit an welcher es ben tigt wird wieder neu erstellt Das Presentation Model h lt dabei nur Referenzen auf die vorhandenen Objekte in den Data Models Die Presentation Models haben dabei die Aufgabe die Daten in einer f r die View Panel optimierten Form mit Hilfe von Getter Methoden pro zu anzeigendes Element zur V
71. prechenden Wert hinzuf ge Deshalb wurde dies wieder verworfen und s mtliche Funktionen in das jeweilige Panel eingebaut So sind immer alle definierten und m glichen Werte auf einen Blick erkennbar Des Weiteren sind die True und False Bedingungen getrennt was meiner Ansicht nach zu einer besseren bersicht beitr gt 51 67 HOVISSE Workflow Editor Diplombericht 7 2 System Test Cases Im Pflichtenheft wurde spezifiziert dass f r alle definierten Use Cases Testf lle durchzuf hren sind Da gewisse Use Cases an mehreren Stellen verwendet werden und noch zus tzliche Tests erfolgt sind war eine eins zu eins Relation zu den Use Cases nicht sinnvoll In der nachfolgenden Tabelle ist jeweils spezifiziert mit welchem Test Case TC jeweils welche Use Cases UC getestet wurden Tabelle 9 Ubersicht der Test Cases Test Case Test Case Bezeichnung Getestete Use Cases Nummer 1 1 12 1 3 Neuer Workflow erstellen UC 1 1 2 5 1 1 2 5 1 2 2 5 1 3 2 7 1 4 Bestehender Workflow ffnen UC 1 2 1 5 Bestehender Workflow speichern UC 1 3 1 4 1 6 Workflow schliessen UC 1 5 1 7 Workflow bearbeiten UC 1 2 1 3 2 2 2 2 1 H2 2 2 2 2 3 2 5 2 5 1 2 5 1 1 2 5 1 2 2 5 1 3 2 8 1 8 Elemente hinzuf gen UC 12 1 H 2 1 1 2 1 2 2 1 3 2 4 2 7 1 9 Elemente entfernen UC 2 3 2 6 1 10 Modus amp Simulation UC 1 6 1 7 3 1 3 1 1 3 2 3 3 7 3 Test Cases Tabelle 10 Workflow
72. rd im Menu Workflow New angew hlt Test ID EIER ZZ EEE Linkes Panel Das Panel zeigt den Baum mit einem Workflow Tree Element an Rechtes Panel Das Panel zeigt die leere Workflow Dialog Maske an Es k nnen Werte f r id und description gesetzt werden Es k nnen Proposition hinzugef gt ge ndert und entfernt werden Es kann ein Inventory ausgew hlt werden 3 2 Die Menu Items Save SaveAs Close und Exit sind aktiv Es werden mehrere Phasen hinzugef gt und Werte f r die entsprechenden Elemente gesetzt definierten Werten an Aktion DerWorkflow wird gespeichert Dest 0000 1 3 6 XML File Der erstellte Workflow und die entsprechend definierten Werte sind im gespeicherten File vorhanden 1 53 67 HOVISSE Workflow Editor Diplombericht Tabelle 13 Bestehender Workflow ffnen HTC 1 4 Ausgangslage Der Editor ist korrekt konfiguriert und gestartet Es wird im Menu Workflow Open angew hlt Es wird kein File ausgew hlt und cancel gew hlt Es wird im Menu Workflow Open angew hlt Es wird ein ung ltiges oder unkorrektes File ausgew hlt Es wird eine Fehlermeldung angezeigt Der Editor bleibt im initialen Zustand 1 4 5 Rechtes Panel Es werden die Details zu den Workflow Elementen angezeigt Es sind die Menu Items SaveAs Close und Exit aktiv Es wird das aktuell geladene File mit Pfad angezeigt Tabelle 14 Bestehender Workflow speichern TC 1 5 Ausgangslage Es ist ein W
73. rden Es muss sich ebenfalls im root Verzeichnis des Workfloweditors befinden Die m glichen Einstellungen sind unter http logging apache org log4j 1 2 manual html erkl rt log4j rootLogger DEBUG root log4j appender root org apache log4j RollingFileAppender log4j appender root File hwfe log log4j appender root MaxFileSize 10MB log4j appender root MaxBackupIndex 10 log4j appender root layout org apache log4j PatternLayout log4j appender root layout ConversionPattern d IS08601 5p ie c men Code 4 Beispiel log4 properties 60 67 HOVISSE Workflow Editor Diplombericht 9 2 Laden ffnen Speichern eines Workflows Uber das Menu kann ein neuer Workflow erstellt oder ein bestehender Workflow der Definition entsprechendes XML ge ffnet bzw nach der Bearbeitung wieder gespeichert werden 9 3 Selektieren Bearbeiten von Elementen Der Workflow wird auf der linken Seite als Baumstruktur aufgebaut Elemente welche weitere Subelemente enthalten k nnen ge ffnet werden um diese Subelemente darzustellen Auf der rechten Seite werden die Details zu dem angew hlten Element dargestellt Diese k nnen dort entsprechend ge ndert werden F r die Auswahl der States und Conditions gibt es einen sogenannten 3 Fach Chooser Die Werte k nnen also zwischen true false und available nicht ausgew hlt hin und her geschoben werden Durch Ausw hlen von OK werden die ge nderten Werte zwischengespeichert Durch
74. rer aktuellen Zust nde eingef rbt Rechtes Panel Es werden laufend die Zust nde der Proposition entsprechend ihrem aktuellen Zustand angezeigt ver ndert Die Geschwindigkeit wird auf SLOW gesetzt Die gleiche Phase wird erneut gestartet Test ID O O 1 10 6 Linkes Panel Die Abarbeitung dauert l nger als bei der letzten Simulation Es wird im Menu Modus EditModus angew hlt Test ID FFR TESE 1 10 7 Menu Die Simulation Menu Items sind wieder deaktiviert 1 10 8 Linkes Panel Der Tree wird wieder normal ohne Einf rbung dargestellt Die Kontext Menus sind wieder verf gbar 1 10 9 Rechtes Panel Es wird das Workflow Detail Panel dargestellt Es wird im Menu Modus SimulationModus angew hlt Es wird Workflow starten angew hlt Test ID NEES Die Tree Elemente werden laufend entsprechend ihrer aktuellen Zust nde eingef rbt Das Kontext Menu Start Phase ist nicht mehr verf gbar ihrem aktuellen Zustand angezeigt ver ndert 1 10 12 Das StartWorkflow Menu ist inaktiv Das StopWorkflow Menu ist aktiv Aktion Es wird Workflow stoppen angew hlt ii Test ID Test D 1 10 13 Linkes Panel Der letzte Zustand bleibt bestehen 1 10 14 Rechtes Panel Der letzte Zustand der Proposition wird angezeigt Da s mtliche Tests erfolgreich durchgef hrt wurden wird auf eine Test Resultat Liste verzichtet 58 67 HOVISSE Workflow Editor Diplombericht 8 1 Vor
75. rhanden ist Diese kann den neuen Baum somit entsprechende anzeigen Nun werden wiederum mit Hilfe von JAXB das Catalog File sowie das im Workflow referenzierte Inventory File eingelesen deserialisiert und die entsprechenden Objektmodele aufgebaut Durch das Setzen des Catalog Objekts in das Model werden die einzelnen Elemente f r einen schnelleren Zugriff wiederum in HashTables abgelegt Das Gleiche gilt f r die Inventory Objekte Zus tzlich werden die vorhandenen Referenzen auf die Catalog Objekte innerhalb des Inventory Data Models aufgel st Wenn beim Lesen der Files ein Fehler auftritt oder die referenzierten Files nicht vollst ndig vorhanden sind wird eine entsprechende Fehlermeldung ausgegeben und das Offnen des Workflows abgebrochen Wenn der Workflow erfolgreich geladen werden konnte wird im Titel der Pfad und Dateiname des geladenen Workflows angezeigt Nun wird ein neues WorkflowPresentationModel mit Hilfe des bergebenen Workflow Objekts erstellt Das Model bereitet die Daten so auf dass sie vom GUI m glichst einfach f r die Darstellung bernommen werden k nnen Nun wird im rechten Teil des SplitPanels das Workflow Panel gesetzt F r jeden Elementtyp gibt es nur eine Instanz welche jeweils mit den aktuellen Werten gef llt wird Dies geschieht mit Hilfe des eben erstellten PresentationModel welches als Parameter mitgeben wurde Das PresentationModel wird im Gegensatz zum Panel f r jedes gew hlte Objekt immer wieder neu
76. se 1 definiert wird kann das Problem behoben werden und das JTreePanel f llt danach jeweils den ganzen vorhandenen Platz rechte Abbildung aus 3 workflow wi k Workflow wi Phase p1 1 Pa Phase p1 ra G HI Id DI emm PE Id p1 Simple D SimpleAction T1 3 simple Description TN simpleaction T2 Description RK Simple Patient is prepare 3 Simpleaction T3 Patient is pre D Simple D SimpleAction T4 Simple E TN Simpleaction T5 gt Cl Phase p2 initialState amp 3 Phase p2 initialState true true false ent false P1C arm is n PA C arm P2 Anesthesis P2 Anesti P3 Drip is atta P3 Drip is LGT Pl finalState finalStata Abbildung 43 Ausf llen eine Panels public TreePanel MainView mainview super new GridLayout 1 1 Code 2 Ausf llen eine Panels 46 67 HOVISSE Workflow Editor Diplombericht 6 Tools amp Technologien Nachfolgend soll ein berblick ber die eingesetzten Tools und Technologien gegeben werden 6 1 Entwicklungsumgebung Als Entwicklungsumgebung wurde Eclipse Version 3 3 eingesetzt Diese Entscheidung beruht auf die in den letzten Jahren damit gesammelten guten Erfahrungen Der Mangel in Eclipse ist ein fehlender GUI Editor Ein solcher ist mit Matisse in Netbeans der zweiten weit verbreiteten freien Entwicklungsumgebung vorhanden Entgegen der vorgesehenen Idee das GUI dort zu pflegen wurde der Editor nur zur einmaligen Erzeugung der entspreche
77. t wie der Name schon zu erkennen gibt die Umgebung Sie liest das Properties File und pr ft es auf dessen Vollst ndigkeit Die Environment Klasse kennt dadurch die Pfade und Filenamen zu den aktuell ge ffneten und benutzten Workflow Inventory und Catalog Files bzw zum default Workflow Verzeichnis Des Weiteren enth lt die Environment Klasse eine Enumeration f r die Zust nde der Applikation also ob ein Workflow geladen oder gespeichert ist oder momentan eine Simulation am Laufen ist Diese wird zum Steuern der Menuitem und Kontextmenus verwendet Die Environment Klasse ist statisch so dass jederzeit auf sie zugegriffen werden kann 4 3 3 Exception Klassen Im Package Exception befinden sich zudem noch zwei spezifische Exception Klassen f r Fehler bei welchen nicht auf eine vorhandene Exception zur ckgegriffen werden konnte 23 67 Diplombericht cd util enumeration properties Properties Environment State catalogPath String definitionPath String inventoryPath String workflowPath String worktlowFilePath File state State State CHANGED enumeration STARTED enumeration UNCHANGED enumeration CHANGED enumeration SIMMODE enumeration SIMSTARTED enumeration SIMENDED Environment initEnvironment void getCatalogPath String getDefinitionPath String getlnventoryPath String getWorkflowPath String getWorkf
78. teState State SimpleAction invRef Sting createObjectRef ObjectRef actor List lt ActorRef gt List sr Steg Action object List lt ObjectRef gt Fohl getinvReff String createPhase Phase catRef String setInvRef String void createlnventory Inventory getActor List lt ActorRef gt getObject List lt ObjectRef gt List ObjectRef getCatRef String gt setCatRef String void invRef String getlnvRef String setlnvRef String void Abbildung 22 dto workflow Klassen Die Abh ngigkeiten zur ObjectFactory wurden zur besseren Ubersicht nicht ein gezeichnet da diese die entsprechenden Objekte erzeugt und somit zu allen anderen Klassen Abh ngigkeiten aufweist Diverse hier zu sehende Objekte weisen Abh ngigkeiten zum Inventory und Catalog auf 27167 HOVISSE Workflow Editor Diplombericht 4 4 5 dto inventory Die dto inventory Klassen wurden ebenfalls generiert Sie stellen die Menge der verf gbaren Elemente pro Type zur Verf gung So kann einerseits das vorhandene Subset definiert werden und andererseits die Anzahl der Elemente welche von einem gewissen Objekt z B mehrere Handschuhe vorhanden sind Dies ist ebenfalls ein Teil des Datenmodels cd inventory J Inventory description String room Room actors Actors objects Objects id String H OH getDescription String setDescription String void getRoom R
79. tellt Es muss sich im gleichen Pfad wie das XML File befinden Ich habe keinen Weg gefunden einen alternativen Pfad f r das dtd File zu definieren 3 2 Menu Handling Mit dem Menu Prototype wurde die Verwendung der AbstractAction Klasse f r die Erstellung eines Menus getestet Dabei wird das Menu mit Hilfe von Action Instanzen aufgebaut Als Reaktion auf einen ausgew hlten Menupunkt muss einzig die actionPerformed Methode der jeweiligen Action implementiert werden Dies wurde entsprechend umgesetzt und in die actionPerfomed Methode jeweils eine Ausgabe auf den Cmd Prompt geschrieben Zus tzlich wurde das enablen und disablen von Menupunkten getestet Dies ist nachfolgend dargestellt und hat wie vorgesehen funktioniert Workflow Modus Simulation New Open public void actionPerformed ActionEvent e System out println NewMenuAction NewMenuAction Abbildung 11 Aufbau eines Menus mit Actions amp Beispiel Menu mit Sample Output 18 67 HOVISSE Workflow Editor Diplombericht 3 3 JTree Tabelle 4 Ubersicht der Prototype Tests f r JTree Testfall Beschreibung Anzeigen eines Trees Aufbauen und Darstellen eines JTrees mit Swing Selektieren eines Elements Anw hlen eines Elements im Tree Es wird ein Event ausgel st und das Element erh lt den Fokus L schen und Hinzuf gen von Im Tree wird das neue Element angezeigt bzw das Elementen gel schte Element nicht mehr Kontext Menu hinzuf
80. tion starten Simulation stoppen Simulation gestoppt Simulation gestartet Simulation starten Abbildung 3 Zustandsdiagramm Workflow Editor 9 67 HOVISSE Workflow Editor Diplombericht 2 3 1 Vorhandene Main Menu Punkte pro Zustand Nachfolgend ist dargestellt welche Menupunkte zu welchem Zeitpunkt angew hlt werden d rfen Es f llt speziell auf dass die Simulation initialisiert und Simulation gestoppt die gleichen Aktionen erm glichen aber trotzdem unterschieden werden m ssen Dies ist darauf zur ckzuf hren dass nach einer abgelaufenen Simulation zus tzliche Schritte ausgef hrt werden m ssen bevor eine erneute Simulation gestartet oder in den Edit Modus zur ck gewechselt werden kann Tabelle 1 bersicht der m glichen Menupunkte pro Zustand 2 3 2 Vorhandene Menu Punkte pro Tree Element Kontext Menu Nebst dem Main Menu werden je nach Zustand und selektiertem Element im TreePanel entsprechende Kontext Menus angezeigt um Operationen auf dem Baum auszuf hren Nachfolgend ist dargestellt welche Kontext Menu Items auf dem jeweiligen Tree Item und Zustand angew hlt werden k nnen Tabelle 2 bersicht der an ten Kontext Menu Punkte pro Zustand 10 67 HOVISSE Workflow Editor Diplombericht 2 4 Aktivit tsdiagramme Mit Hilfe der nachfolgenden UML Aktivit tsdiagrammen sollen die Abl ufe der
81. tionType id x5 gt lt name gt move lt name gt lt description gt An actor moves an lt description gt lt actionType gt lt actionTypes gt Abbildung 2 Abh ngigkeiten des Workflows 8 67 HOVISSE Workflow Editor Diplombericht 2 2 User Interface Bei der Analyse des User Interfaces wurde festgestellt dass nebst den im Pflichtenheft beschriebenen Panels noch zus tzliche Hilfsdialoge zum ffnen Speichern bzw f r Hinweise und Fehlermeldungen ben tigt werden Zus tzlich zu den eigenen Erkenntnissen wurde bei den durchgef hrten Usability Tests festgestellt dass die ersten GUI Prototypen zu wenig ausgereift waren Die Entscheidungsgeschichte zum Finden des endg ltigen User Interfaces ist im Kapitel 7 1 Usability Test beschrieben 2 3 Zustandsdiagramm Das nachfolgende Diagramm soll die m glichen Hauptzust nde des HOVISSE Workflow Editors sowie die jeweiligen berg nge aufzeigen Diese sind insofern wichtig da gewisse Vorg nge nur in bestimmten Situationen ausgef hrt werden d rfen E J sm Zustandsdiagramm z Workflow laden Applikation gestartet i Workflow schliessen Neuer Workflow erstellen Workflow ver ndert Programm beenden Programm beenden Workflow geladen gespeichert Workflow speichern Simulation Simulation initialisieren beenden Simulation beenden Programm beenden Simulation initialisiert Simula
82. uws annakaan nannaa aan nanna nn nannaa 8 Abbildung 3 Zustandsdiagramm Workflow Editor 9 Abbildung 4 Aktivit tsdiagramm Workflow Editor starten 11 Abbildung 5 Aktivit tsdiagramm neuer Workflow erstellen 12 Abbildung 6 Aktivit tsdiagramm Workflow laden rrnnnnnnnnnnnnnnvrvnnnnnnrnnnnnnnnrvrnnnnnnnnn 13 Abbildung 7 Aktivit tsdiagramm Workflow schliessen arnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnen 14 Abbildung 8 Aktivit tsdiagramm Workflow speichern nnen nananana 15 Abbildung 9 Aktivit tsdiagramm Simulation Modus Workflow simulieren 16 Abbildung 10 Zusammenh nge in IANXDH nenne annan ana n naan naan naaanen 17 Abbildung 11 Aufbau eines Menus mit Actions amp Beispiel Menu mit Sample Output 18 Abbildung 12 Austauschen eines Panels en 19 Abbildung 13 Testprogramm f r die Workflow Engine ne 20 Abbildung 14 Test Output ivissssssavasasat enn aau aan aamuun maan dann 20 Abbildung 15 Software Layer alu lasse liessen dt 21 Abbildung 16 Software TE eet e Serie 22 Abbildung 17 Software Layer Pakete ana 23 Abbildung 18 Environment und Exception Klassen 24 Abbildung 19 Data Layer Pakete est gie ee en 24 Abbildung 20 Data Model Klassen anne 25 66 67 HOVISSE Workflow Editor Abbildung 21 Abbildung 22 Abbildung 23 Abbildung 24 Abbildung 25 Abbildung 26 Abbildung 27 Abbildung 28 Abbildung 29 Abbildung 30 Abbildung 31 Abbildung 32 Abbildung 33 Abbildung 34 Abbildung 3
Download Pdf Manuals
Related Search
Related Contents
RCA AH55N User's Manual 電気用品安全法技術基準の解釈別表第八に係る 遠隔操作機構に関する Paymentsite Hosted Payments User`s Guide Applikationsprogramm MANUEL D’INSTRUCTIONS マニュアル TV One 1T-VGA-DVI video converter Descargar manual Sangean SR-3 Pocket Radio Copyright © All rights reserved.
Failed to retrieve file