150 likes | 282 Views
SS 2007 Leif Geiger, Carsten Reckord, Software Engineering. Software Engineering 2 Übung – Konstruktion interaktiver (CASE) Tools. Meta Modell. Download Fujaba http://www.se.eecs.uni-kassel.de/se/fileadmin/se/courses/SE207/Fujaba%205.zip Meta Modell des Petri-Netz Tools erstellen
E N D
SS 2007 Leif Geiger, Carsten Reckord, Software Engineering Software Engineering 2 Übung – Konstruktion interaktiver (CASE) Tools
Meta Modell • Download Fujaba http://www.se.eecs.uni-kassel.de/se/fileadmin/se/courses/SE207/Fujaba%205.zip • Meta Modell des Petri-Netz Tools erstellen • Packagenamen vergeben! • Compositions verwenden, wo sinnvoll! SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
Codegenerierung • Eclipse 3.2 downloadenhttp://www.eclipse.org/ • EMF und GMF installieren über Help Software Updates Find and Install • Java Projekt anlegen • In Fujaba den Codestyle des Root Packages auf EMF stellen (mit dem Property Editor) • Das Output Directory des Fujaba Projekts auf ein Verzeichnis im Eclipse Projekt stellen • Code generieren SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
Codegenerierung Teil 2 • In generated/model das ecore File auswählen • Über New Other ein EMF Model anlegen • Im genmodel File das Model Directory anpassen • Auf dem genmodel File das Model generieren • features.jar, utils.jar und RuntimeTools.jar aus dem Fujaba/libs Verzeichnis als Bibliotheken hinzufügen • Fertig! SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
Editor generieren • Auf dem genmodel File den Edit Code und den Editor Code generieren • Eclipse Runtime Workspace starten • Ein Projekt anlegen • Im Projekt über New Other Example EMF Model Creation Wizard ein neues Modell anlegen • Beispiel Petrinetz anlegen SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
Actions in Eclipse • Plugin.xml um org.eclipse.ui erweitern • Erben von IActionDelegate, selection merken • Methode run(IAction) überschreiben • Extensionpoint z.B. org.eclipse.ui.popupMenus erweitern • Siehe Beispielprojekt SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
Persistenz • XMI Import / Export • org.eclipse.emf.ecore.xmi in plugin.xml hinzufügen • Mit Fujaba • An Beispiel Petrinetz ausprobieren • Versuchen XMI vom Editor zu laden • CoObRA • Mit Fujaba • EMF Erweiterungen in coobra2_emf_1.0.0.jar und emfbindings_1.0.0.jar • Laden / Speichern • Mit Server • Undo / Redo • Siehe http://www.se.eecs.uni-kassel.de/~fujabawiki/index.php/CoObRA2_developer_guide SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
XMI Speichern // Create a resource set. ResourceSet resourceSet = new ResourceSetImpl(); // Get the URI of the model file. URI fileURI = URI.createFileURI(new File(„petri.xmi").getAbsolutePath()); // Create a resource for this file. Resource resource = resourceSet.createResource(fileURI); // Add the book and writer objects to the contents. resource.getContents().add(net); // Save the contents of the resource to the file system. try { resource.save(Collections.EMPTY_MAP); } catch (IOException e) {} SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
XMI Laden // Create a resource set. ResourceSet resourceSet = new ResourceSetImpl(); // Get the URI of the model file. URI fileURI = URI.createFileURI(new File(„petri.xmi").getAbsolutePath()); // Demand load the resource for this file. Resource resource = resourceSet.getResource(fileURI, true); // Print the contents of the resource to System.out. try { resource.save(System.out, Collections.EMPTY_MAP); } catch (IOException e) {} SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
CoObRA Speichern public void storeRepository( final Repository repository, File file ) { // create copy-repository Repository copyRepository = new Repository(); // set new PersistencyModule copyRepository.setPersistencyModule( new FilePersistencyModule( file ) ); copyRepository.getPersistencyModule().open( false ); // set the old repository's IdentifierModule copyRepository.setIdentifierModule( repository.getIdentifierModule() ); // copy changes TransactionEntry entry = repository.getPersistencyModule().receiveFirst(); while( entry != null ) { boolean autoResolving = entry.isAutoResolving(); entry.setAutoResolving( false ); copyRepository.acknowledgeUpdate( entry ); entry.setAutoResolving( autoResolving ); entry = repository.getPersistencyModule().receiveNext( entry ); } // close repository copyRepository.getPersistencyModule().close(); } SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
eDOBS • eDOBS Plugin installieren über update site http://www.se.eecs.uni-kassel.de/se/fileadmin/se/projects/eDOBS/update/ • im Test-Eclipse • im XMI Editor ein Element auswählen • Browse in eDOBS in der Toolbar wählen • Expand Object auf dem Objekt ausführen • eDOBS Aktion bauen • eDOBS_core plugin einbinden • Dobs.get().browseObject(net); SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
GMF • GEF machen wir erstmal nicht, vielleicht später • Wer‘s genauer wissen will:http://eclipsewiki.editme.com/GefDescriptionhttp://publib-b.boulder.ibm.com/Redbooks.nsf/RedbookAbstracts/sg246302.html?OpenDocumenthttp://www.eclipse.org/gef/reference/articles.html • GMF: Per Wizard oder von HandWir machen das mal von Hand • Erstmal Places, Transitions und Arcs: • Graphical Definition Model: Figures und Nodes • Tooling Definition • Mapping Model • Generation Model aus Mapping Model • Code generieren, fertig… SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
Figures • File->New->GMFGraph • Im model-Verzeichnis neben ecore-File SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
Tools • File->New->GMFTool • Im model-Verzeichnis neben ecore-File … SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel
Mapping • File->New->GMFMap… • Canvas->PetriNet • Top Node Referencesfür alles, was direkt auf dem Canvas liegt • Containment feature ist die Modellkante zum Element • Child: Node Mapping für Klasse<->Node… • Am Ende Rechtsklick auf Mapping Model -> Create Generator Model • Typ: Gen Diagram • .gmfgen Datei: Rechtsklick -> Generate Diagram code SS 2007 Software Engineering 2 Leif Geiger, Carsten Reckord, University of Kassel