Utvikling med Genova. Esito. Agenda. Hvem er vi? Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova

Like dokumenter
Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova

Utvikling med Genova. Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova

Utvikling med Genova. Agenda. Hvem er vi? Kursets struktur og forelesere. Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova

Agenda. Hvem er jeg? Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova

Komme i gang med Genova 8

Modellbasert utvikling

Formål: I denne oppgaven skal du øve deg i å generere og endre GUI prototyper, samt lage database skjema på grunnlag av en UML modell.

OptimalJ-kurs UIO Oppsummering av kurset. De ulike modellene egenskaper og formål

1 Kodegenerering fra Tau Suiten

AUTOCAD Artikkelserie. Tabeller

Onix Personell Prosjektrapport (Excel) Prosjektrapport

Pipfrog AS Flere nettbutikker og språk

INF 1050 BRUK AV MODELLERINGSVERKTØYET RATIONAL ROSE

4. Dynamisk skjemaer (GUI)

Use case drevet design med UML

Genova810DokDomenemodell

I dag UML. Domenemodell visualisering av konsepter. Eksempel. Hvordan finne domeneklasser?

case forts. Generell interaktor Integer- interaktor Domenemodell Eksemplifisering av modellbasert tilnærming til design av brukergrensesnitt

AMS-case forts. Eksemplifisering av modellbasert. tilnærming til design av brukergrensesnitt

5. Brukerveiledning. Experior - rich test editor for FitNesse -

UML- Use case drevet analyse og design. Domenemodeller Sekvensdiagrammer Use case realisering med GRASP patterns Klassediagram - designmodeller

CabinWeb BRUKERDOKUMENTASJON ET SYSTEM UTVIKLET AV DELFI DATA

UML 1. Use case drevet analyse og design Kirsten Ribu

Velkommen. Kjenn din Notes-klient

MMT105 Internettprogrammering Uke 44, høst 2007

8 - Rapporter i M-STAS

Competence / Requirement modulen

Enkel app-programmering med JavaFX og FXML

Communicate SymWriter: R1 Lage en tavle

case forts. Alternativ 1 Alternativer Sammensetning Objekt-interaktor med valg

1. NetBeans IDE: Lage en enkel mobilapplikasjon

HØGSKOLEN I SØR-TRØNDELAG

AMS-case. Eksemplifisering av modellbasert. tilnærming til design av brukergrensesnitt

Introduksjon til nytt grensesnitt i Alma

GAB INNSYN... 1 INNSTILLINGER... 1 Database... 1 Søk... 4 GENERELT... 5 Søkeutvalg... 5 GAB menyen... 6 VIS MENYEN... 6 Generelt...

Integrasjon mot Active Directory i EK 2.37

Datamodellering og databaser SQL, del 2

Tilpassning av Wordpress - Enterprise Theme

Aktiviteter registrert i Activities & Events kan presenteres grafisk i Activities Graphical modulen.

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

KONKURRANSEGRUNNLAG VEDLEGG G FDVU-KRAV

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

Arbeidskrav 1. Se fremdriftsplanen for innleveringsfrist. Emneansvarlig: Olav Dæhli 1

>>21 Datamodellering i MySQL Workbench

minfagplan.no Brukerveiledning - Beskrivelse av funksjonalitet for brukere av minfagplan.no Dokumentnummer: BV-001 Revisjon Dato:

Gruppenavn. Prosjektnavn Beskrivelse av design For Navn på systemet. Versjon <1.0>

1. Opprette Workspace: Velg File, New Workspace. Angi Workspace name og location (hvor filene skal lagres). Trykk OK

1. Innføring i bruk av MySQL Query Browser

Opprette dokumentbibliotek med unike rettigheter

Oppgavesett for NVivo 9

Lønn. Spørringer på ressurser og lønnstransaksjoner. In business for people. Silje Andersen seniorkonsulent UNIT4

INF1000: Forelesning 7

file:///c:/users/michaelp/sites/dkdm/dw5/dreamweaver5_1.html

Labquality/NKK ELEKTRONISK RESULTATSKJEMA VIA INTERNET. Åpning av skjemaet. Logg inn på Participant services. Velg resultatskjemaet

Prøvetilganger (Trials)

Kom i gang med emedia

Datamodellering og databaser SQL, del 2

CORBA Objektmodell (Java RMI)

Repetisjon: Normalformer og SQL

SymWriter: R6 Innstillinger, preferanser og verktøylinjer

UNIVERSITETET I OSLO

Brukerdokumentasjon FrP-medlemsregister

EKSAMEN DATABASER

INF5120 Oblig 1c4 - Gruppe 19

En god søkemaskinen bringer MER SALG!

Integritetsregler i SQL. Primærnøkler

Dokumentstyring og Maler

HØGSKOLEN I SØR-TRØNDELAG

Distribusjon av varslinger

visma net expense - diverse rutiner Innhold

Businesscatalyst PAGES

Metaspråket for å beskrive grammatikk

Fraværsoppfølging. Innhold

Use Case-modellering. INF1050: Gjennomgang, uke 04

ADOBE ILLUSTRATOR. En introduksjon til ADOBE ILLUSTRATOR av Wictor L. Faanes TREIDER DESIGN

Integritetsregler i SQL

Kursdokumentasjon for Dreamweaver

Løsningsforslag til Case. (Analysen)

Brukerveiledning. Søknadssystemet esg. Elektronisk søknadsblankett for søknad om sentral godkjenning for ansvarsrett. Side 1 av 24

UKE 11 UML modellering og use case. Gruppetime INF1055

CORBA Component Model (CCM)

INF1000: Forelesning 7. Konstruktører Static

INF april, 2014 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8

UNIVERSITETET I OSLO

Spesifikasjon av Lag emne

Arbeidskrav 1. Se fremdriftsplanen for innleveringsfrist. Emneansvarlig: Olav Dæhli 1

1. SQL datadefinisjon og manipulering

Layout og publisering

Brukerhåndbok ipad. for politikere i Melhus kommune

Datamodellering og databaser SQL, del 2

Konfigurasjon av SFX-menyen

Side 1 av 12

Installasjon InfoMediaPlayer:

BEGYNNERKURS I SPSS. Anne Schad Bergsaker 12. februar 2019

INF april, 2015 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8. Ble lagt ut 24. april

Algoritmer og Datastrukturer

Brukermanual for Quizbuilder

Tilkobling og Triggere

KursAdmin. Veileder Rapportverktøy. Musikkens Studieforbund

KOMME I GANG 3. Logge på 3. I redigeringsvinduet 4 OVERSIKT OVER KNAPPENE SOM LIGGER ØVERST I REDIGERINGSVINDUET 6

Transkript:

Agenda Utvikling med Genova Modelldrevet utvikling av brukergrensesnitt og tjenester med Genova Hvem er vi? Utviklingsmodell for Genova Kort demonstrasjon av generert system Gjennomgang g av Genovas byggeklosser Rose og Genova Objektseleksjoner i Genova Dialogdesign i Genova Ressursdatabasen på overflaten Produksjon av en ny dialog fra modell til prototype Hvem er vi? Christian Herzog, seniorkonsulent i Esito Knut Sagli, sjefskonsulent i Esito Esito utvikler verktøy og leverer spisskompetanse i prosjekter Esito Esito skal gi kundene lavere kostnader og bedre kvalitet i utvikling og vedlikehold av sine applikasjoner Støtte modelldrevet utvikling (MDU) Lage de beste kodegeneratorer 4

Genova tilbyr Genova fra oven Finn romkategori Ønske om reservasjon Ansatt Finn hotell (from Aktører) [Fullt hotell] «Class» «Class» Reservasjon hotell::hotell Vis alle -hotell hoteller i kjede «Attribute» «Attribute» Velg romkategori - fradato: Date - logo: String - tildato: Date - navn: String - sted: String [Fullt i romkategori] -reservasjoner -romkategori Vis romov ersikt «Class» -kunde hotell::romkategori for hotell «Class» «Attribute» kunde::kunde - antallsoveplasser: int «Attribute» - romkvalitet: ERomkvalitet - epost: String - sengtype: ESengtype t k d b tt i t Genova dialog:: FinnRomkategori dialog:: VisHotell dialog:: VisRomoversikt Genova Genova Genova UI Designer Service Designer Domain Designer UI mal UI-modell Modellutsnitt Domenemodell Domeneklasser Databasemodell Client Service Data access Database Controller rhooks View Hooks Services Actions e Persistence g ORMapping Database Generated code Written code Servicelogikk Objekt-Relasjons- Mapping Domain model Genova og metode Navigasjonsmodell Use case modell Scenarier Domenemodell Styleguide Dialogmodell Dialogmal Brukergrensesnitt prototype Vi lager et lite system UML-modell Navigasjonsmodell Genova Workspace Synkronisering Setup Ressurser Objektseleksjon Dialogmodell Generering og kjørende kode

Detaljert use case - selvbetjent Domenemodell - Hotell Hotellkj ede Reserver rom for periode (from Reservasjon) dialog: : Reserv errom - navn: String + Hotellkjede() -kjede -hoteller..* Webkunde (from Aktører) Reserver rom ut fra profil (from Reservasjon) Oversikt over mine opphold/reserv asj oner (from Reservasjon) Oppdater profil (from Reservasjon) dialog: : VisKundeprofil dialog: : VisKunde Hotell - logo: String - navn: String - sted: String + Hotell() -hotell HotellAs -romkatkobl..* -hotell HotellRomkategori - fradato: Date - tildato: Date «Group» - HRKGroup + HotellRomkategori() -rom..* -romkatkobl RomkategoriAs -romkategori Rom - etasje: int - harbalkong: boolean - himmelretning: EHimmelretning - romnr: int + opptattpadato(date*) : Boolean + Rom() -rom -kategori Romkategori - antallsoveplasser: int - romkvalitet: ERomkvalitet - sengtype: ESengtype - storkunderabatt: int - utgangspris: int «Group» - RomKatMain + Romkategori() Domenemodell - Opphold Domenemodell - Transaksjoner Faktura kunde::kunde -fakturaer -kunde - fakturanr: int - epost: String - fakturatekst: String - kundenr: int - navn: String + Regning() -kunde - telefonnr: String -faktura 0.. -kunde -opphold..* + Kunde() KundeOpphold + lagtransaksjoner : void() Opphold -opphold -reservasjoner Reservasjon - lopenr: int «Group» -opphold -reservasjon - OppholdGroup - fradato: Date 0.. 0.. -opphold + getfradato() : Date - tildato: Date + gethotellnavn() : String hotell::hotell -reservasjoner + gethotellsted() : String + Reservasjon() + gettildato() : Date -overnattingssted -hotell 0.. * + Opphold() -opphold - logo: String - navn: String - sted: String + Hotell() -romkategori -hotell -rom.. * hotell::romkategori -overnattinger hotell::rom - antallsoveplasser: int Ov ernatting - romkvalitet: ERomkvalitet -overnattinger - etasje: int - harbalkong: boolean -rom -kategori - sengtype: ESengtype - dato: Date - himmelretning: EHimmelretning - storkunderabatt: int -rom - utgangspris: int - overnattingspris: int - romnr: int «Group» - RomKatMain + Overnatting() + opptattpadato(date*) : Boolean + Rom() + Romkategori() Opphold - lopenr: int «Group» - OppholdGroup + getfradato() : Date + gethotellnavn() : String + gethotellsted() : String + gettildato() : Date + Opphold() -opphold -overnattinger 0.. * Ov ernatting - dato: Date - overnattingspris: int -opphold -opphold -opphold -overnattingssted KundeOpphold -kunde 0.. 0.. -reservasjon kunde::kunde - epost: String - kundenr: int - navn: String - telefonnr: String + Kunde() + lagtransaksjoner : void() -kunde -reservasjoner -reservasjoner -hotell hotell::hotell - logo: String - navn: String - sted: String + Overnatting() + Hotell() Reservasjon - fradato: Date - tildato: Date + Reservasjon() -transaksjoner gui::oppholdreservasjont - fradato: Date - hotell: String + OPPHOLD: String = "Opphold" {readonly} + RESERVASJON: String = "Reservasjon" {readonly} - sted: String - tildato: Date - typetransaksjon: String + OppholdReservasjonT(Opphold*) + OppholdReservasjonT(Reservasjon*)

Domenemodell - Kunde Navigasjonsmodell Kunde - epost: String - kundenr: int - navn: String - telefonnr: String -kunde Person -personinfo - bostedsadresse: String 0.. - postnr: int + Kunde() + lagtransaksjoner : void() -kunde + Person() -kunde -reservasjonsmaler Webhotell -firmainfo 0.. MalReservasjon «Contains» Firma - besoksadresse: String - besokspostnr: int - fakturapostnr: int - fakturaadresse: String - orgnr: int - postadresse: String - postpostnr: int + Firma() - romkategoritekst: String -hotell hotell::hotell - logo: String - navn: String - sted: String + Hotell() hotell::romkategori -romkategori - antallsoveplasser: int - romkvalitet: ERomkvalitet - sengtype: ESengtype - storkunderabatt: int - utgangspris: int «Group» - RomKatMain WebhotellApp «Contains» VisKundeprofil «Contains» «Contains» VisKunde ReserverRom + Romkategori() Genova - Synkronisering Genova Fra objektseleksjon til dialogmodell e eguide Style Objektseleksjon j Dialogmodell

Genova Objektseleksjon & Dialog Genova Preview Koden som er håndskrevet Genova Generering av skjema

Generering av kildekode Kjørende applikasjon Klientmaler Klientfil.java Klientfil.java Klientfil.java Klientgenerat Servicefil.java Servicefil.java Servicefil.java Servicemaler Servicegenerat Dataaccessmaler Generator Domene.java Domene.java Domene.java Mappingfil.hbm.xml Mappingfil.hbm.xml Mappingfil.hbm.xml Dataaccessgenerat Domenemaler Domenegenerat Detaljert gjennomgang Rose og Genova Objektseleksjoner i Genova Dialogdesign i Genova Ressursdatabasen Kort om kodegenerering Rose og Genova

Domenemodellen Domenemodellen lages i Rose og hentes så inn i Genova via NB! Det er ikke mulig å endre domenemodellen i Genova. Endringer må gjøres i Rose og deretter synkroniseres inn. Domenemodellen Gi roller fornuftige navn. Unngå navn som har, del_av, inneholder, består_av o.l. Navnet på klassen med liten forbokstav er ofte det beste navnet Det skal genereres en database fra domenemodellen. Løs opp i mange-til-mange g relasjoner. Begrens navigasjonen der det er mulig for å unngå unødvendige relasjoner. Navigasjonsmodellen Navigasjonsmodellen er en modell av applikasjonen med dialoger og forholdet mellom dialoger. Navigasjonsmodellen lages i et UMLverktøy y( (Rose) som en klassemodell med bruk av Genova-spesifikke stereotyper. Navigasjonsmodellen Navigasjonsmodellen lages i Rose og hentes så inn i Genova via NB! Det er ikke mulig å endre navigasjonsmodellen i Genova. Endringer gjøres i Rose og synkroniseres inn.

Genovas tillegg til Rose Med Genova følger et tillegg til Rose som inneholder noen stereotyper og mulighet til å legge inn ekstra informasjon i modellen. Genova-spesifikk informasjon legges inn i arkivkortene Genova UI og Genova DB i spesifikasjonsdialogen til attributtene i Rose. Genova UI-dialogen i Rose - UserInterface Denne teksten blir brukt som standard ledetekst i Genova. For å sikre konsistens mellom forskjellige dialoger bør derfor ledetekster t endres i Rose og ikke i Genova direkte. Genova UI-dialogen i Rose - UserInterface Display rule syntaks: Genova DB-dialogen i Rose - DataBase Når man skal lage en database, må man angi databaseorienterte verdier som Primary Key, Unique, Not Null osv. For assosiasjoner kan man angi fremmednøkler. X(n) = En sekvens på n alfanumeriske tegn.

Lage en objektseleksjon j (OS) Objektseleksjoner (OS) i Genova En objektseleksjon er et utsnitt av klassemodellen. Den kan inneholde flere røtter. Den første roten skal imidlertid være den primære roten. På bakgrunn av objektseleksjonen Ny objektseleksjon fra kan vi generere kode som gir oss kontekstsensitiv meny et sett av tjenester (bl.a. CRUD tjenester). Ved synkronisering mot Rose lages det automatisk tomme OS er for hver dialog angitt i navigasjonsmodellen. Lage en objektseleksjon (OS) Man må velge målmiljø for en objektseleksjon. Kontekstsensitiv meny gir deg muligheten for å utvide utsnittet av klassemodellen som objektseleksjonen representerer. Ekskluder uønskede attributter fra objektseleksjonen Lage en objektseleksjon (OS) Dobbeltklikk på rollen gir deg egenskapsdialogen til rollen. (Også tilgjengelig via kontekstsensitiv meny) Gir mulighet for å endre navn. Inneholder også nyttig informasjon om rollen Generelt i Genova så gir både kontekstsensitiv meny og g y g dobbeltklikk komponentens egenskapsdialog.

Lag en god objektseleksjon Hovedrot Her legges det primære modellutsnittet dialogen skal jobbe på. Den øverste noden er hovedklassen for hele dialogen Barn Relevante klasser med navigerbar relasjon til roten kan og bør hektes på roten. Inputroller Ved behov for 2 noder for en klasse. (Eksempel kommer) Relaterte roller bør angis som subtrær også her. Dialogdesign i Genova (Stjernen = én til mange relasjon) Lage en dialog En dialogmodell er bygget på en objektseleksjon En dialogmodell er et tre bestående av dialogkomponenter Ved synkronisering mot Rose lages det automatisk tomme dialoger for hver dialog angitt i navigasjonsmodellen Lage en dialog Første gang g en dialog åpnes må følgende velges Informasjonsinnhold Skal være objektseleksjonen med navn lik dialognavn_os. Regler for generering Målmiljø for kodegenerering Vindustype 3 typer: Application window, (Kan endres i ettertid om ønskelig) Document window, DialogBox

Lage en dialog 2 Setting og endring av ledetekster. Genova UI.Title i Rose 2. Tekstfelt.Title 3. Tekstfelt.Label.Title Høyeste prioritet å foretrekke 3 3 Jav a kod e Flytting av elementer og angring Ta tak i elementet og trekk det dit du ønsker. Det røde punktet angir hvor det havner. Få elementet i riktig blokk. Dessverre ingen angring. Lagre hver gang du er sikker/fornøyd så langt og lukk dialogen (uten å lagre) når du beveger deg bort fra ønsket resultat. Dialogkomponenter - Generelt Merk: General arkivkortet varierer mhp. komponent, men for de fleste gjelder følgende Navn på dialogelementer, navnestruktur kan settes i Style guide Hver enkeltkomponent er tilordnet en template og style. Container-elementer er i tillegg tilordnet en layout via: Arv (fra komponenten over) eller Manuell spesifikasjon Unngå bruk av disse, bortsett fra ved skjulte blokker

Dialogkomponenter - Generelt Egenskaper ved de fleste dialogkomponentene Settes fortrinnsvis via overstyring av layout. I enkelttilfeller er det nødvendig å sette dette på enkeltkomponenter. (For eksempel listblokkelementer) Hvor mange kolonner komponenten skal strekke seg over. Dialogkomponenter - Datafelt Komponent med knytning mot objektseleksjonen Har en av flere mulige representasjoner: Textfield Check Button Radio Group Combo Box (List, Scale, Stepper) Representasjons- avhengige egenskaper Spesiell symbolikk i dialogdesigner Editering i treet H X Dialogkomponenten er skjult ved åpning. Det er mulig å endre på dette i kjøretid Dialogkomponenten er knyttet til en annen komponent via et gyldig uttrykk/expression Ingen kopling mot objektseleksjon k j Fra objektpaletten kan en opprette alle typer komponenter. Begrensninger på nøsting av komponenter, dvs. kun containerelementer kan inneholde andre elementer Editeringen av treet kan gjøres via drag and drop Nye komponenter fra objektpaletten skapes ved klikking. Den nye komponenten vil plasseres nederst i den blokken som er markert.

Tilordning av attributt og ledetekst Listblokk Sortering og skjuling av kolonner Viser alle attributter i objektseleksjonen som enda ikke er brukt i dialogen 2.. Sortere på kolonnen. (No Sort, Ascending eller Descending) Skal kolonnen være synlig Skal kolonnen inneholde kun unike verdier Skal bruker få lov til å sortere listen med hensyn på denne kolonnen. (Klikk på overskrift) Tabulatorrekkefølge i en dialog Event-definisjoner Lurt å gjøre: Venstre mot høyre, ovenfra og ned. Der objekter er åpenbart ordnet kolonnevis, skal rekkefølgen også følge disse kolonnene. Bruk drag and drop for å endre tabulatorrekkefølgen Kun markerte komponenter inngår i tabulatorsekvensen. Hvilken hendelse Metodenavn og metodeinnhold: Bruk actiontarget() Med hvilket objekt Hva skal skje Og hvor skal funksjonaliteten programmeres/genereres

Eksempel på hendelsesdefinisjoner Limet mellom klient/tjener Her genereres to action-metoder actionfindkunde actionsavekunde Metoden savekunde kaller først actionsavekunde, så actionfindkunde Rekkefølgen er signifikant Alle tidligere action-metoder er garantert ferdig eksekvert før neste påbegynnes Metoden findkunde kaller kun actionfindkunde Noen OS relaterte actions: Find FindAll Insert Update Save Delete Clear GUI relaterte actions: Open Close Show Hide Enable Disable InsertRow RemoveRow ClearObject Ressursdatabasen i korte trekk Ressursdatabasen Layouts Style guide: Når en dialog åpnes for første gang genereres det automatisk en dialogmodell. Datafeltene i denne dialogen baseres på den valgte objektseleksjonen. Den visuelle representasjonen av disse dataene baseres på den valgte style guiden. Template: Navngitt kombinasjon av Style og Layout per komponenttype. NB! Ikke noe vi skal endre. Vi skal kun bruke ressursene. Style: Navngitt kombinasjon av for- og bakgrunns- farge, font, rammetype og størrelse. Layout: Navngitt kombinasjon av parametere for utlegg (posisjonering) av komponenter Colors, Fonts og Images angir henholdsvis farge, font og bilder.

Layout generelt Layoutressurser En layout gjelder kun for direkte barn av en container. (Den arves ikke nedover i treet. Ønsker man en arvet layout endring må man overstyre hvilken template som brukes.) Layouten satt i Kode2FeltBlokk gjelder kun for de markerte komponentene En blokk i en annen blokk regnes som enkeltkomponent,,på lik linje med f.eks. tekstfelt, med hensyn på ledetekstplassering, utstrekning, justering, osv Navnet på layoutene er bygget opp slik: [...] = valgfritt Border = Konstant Direction, N, Align, Flex = variable Vi skal nå se på den visuelle betydningen av disse konstantene og variablene. Layoutressurser Layoutressurser d Direction Line/Column prefiks som betyr linje eller kolonnevis utlegg Label og felt er en enhet Foretrekker Line d N = Antall kolonner i layouten. (De fleste layouter i ressursdatabasen har utlegg av komponenter linjevis.) Line Column n=3 n=3

Layoutressurser Layoutressurser Align angir justering av felter og ledetekster. Align = Left Centered Justified angir horisontal justering av ledetekster og felter per rad Align = None Above None angir horisontal justering av ledetekster og felter per rad Above angir justering av ledetekst i forhold til felt. Left Justifie d Centere d kolonne for Ledetekster trukket Ledetekster høyrejustert mot ledetekster, for felt, begge venstrejustert ut mot venstre, felt ut mot høyre midtkolonne, felter venstrejustert fra midten None Ledetekst umiddelbart etterfulgt av felt, ingen kolonner Above Ledetekst over felt, sentrert langs en felles akse. Ledetekst kan i tillegg ha: Verdi Top/Left Center Buttom/Right Justering av ledetekst Venstre Midten Høyre Layoutressurser Layoutressurser Align = Top Centered Bottom angir vertikal justering (der noen elementer er høyere enn andre). Top Align = Left De aller fleste layoutene i ressurs- databasen er Left, Top, Top layouter. Centered Bottom angir justering av ledetekst i forhold til felt. Top Centered Bottom

Layoutressurser Layoutressurser Flex er består av tre elementer, de to første angir fleksibilitet, den siste hvor evt. ledig plass havner. Flex = Fixed Streched Spread angir horisontal fleksibilitet Flex = Fixed Streched Spread angir horisontal fleksibilitet Fixed Bredeste element Bredeste element Kolonnene gjøres så brede som sitt største element, plass ut over summen av kolonnene blir til overs Streched Bredeste element Bredeste element Kolonnene strekkes og kan bli bredere enn bredeste element, slik at all tilgjengelig plass fylles Bredeste element Bredeste element Layoutressurser Layoutressurser DirectionNAlignFlexHFlexV[No]Border Flex = Fixed Streched Spread angir horisontal fleksibilitet Spread Bredeste element Bredeste element Tar opp all plass, men her legges luften mellom kolonnene Flex V= Fixed Streched Spread angir vertikal fleksibilitet. Den visuelle effekten er den samme som for horisontal fleksibilitet, bortsett fra at elementene strekkes/spres i den horisontale retningen. De fleste layoutene i ressursdatabasen er Fixed på vertikal fleksibilitet Bredeste element

Layoutressurser Layoutressurser DirectionNAlignFlexAnchor[No]Border Anchor = se matrise angir ankerpunkt. Dette er bare aktuelt dersom minst en av de foregående er Fixed, og forteller da hvordan feltene skal plasseres i forhold til luften rundt. Top Middle Buttom Left Middle Right TL TM TR ML MM MR BL BM BR d Border hvis layouten har en ramme (marg) NoBorder hvis layouten ikke har ramme Border (Med ramme) NoBorder (Uten ramme) Generering av kildekode Kort om kodegenerering Servicemaler Klientmaler Klientfil.java Klientfil.java Klientfil.java Klientgenerat Servicefil.java Servicefil.java Servicefil.java Servicegenerat Dataaccessmaler Generator Mappingfil.hbm.xml Mappingfil.hbm.xml Mappingfil.hbm.xml Dataaccessgenerat Domene.java Domene.java Domene.java Domenemaler Domenegenerat

Klassemodell for generert dialogkode Klassediagram generert servicekode Skriv hooks Skriv hooks Applikasjonsarkitektur - Java Legg til ny dialog i UML-verktøyet Generert av Genova Genova rammeverk View 3. part rammeverk Generert av Rose Egen kode Do omain model Controller Logic/Actions/ Actions Hooks Hooks ServiceProxy ServiceProxy Spring Webhotell «Contains» Service interface VisKunde2 «Contains» WebhotellApp «Contains» VisKunde Domain model Service Service Service Persistence Hooks WS/EJB/Pojo «Contains» VisKundeprofil «Contains» ReserverRom Hibernate OR mapping Database

Synkroniser og lag objektseleksjon Generer dialogmodell Tilpass dialogmodell og generer kode