B1;2c TDP024 > Hemsida
Göm menyn

Scenario 1 - SOA Tjänst

Syfte

Scenariot ämnar hjälpa studenten att uppfylla följande mål.

Lärandemål - Gäller TDP024

Från kursplanen: Kursplan
  • utveckla egna program baserade på SOA
  • konstruera programsystem med lager, klient-server, webbserver/middle ware och persistent lagring
  • arbeta på relevanta utvecklingsplattformar
  • reflektera över egen programutveckling inom området och diskutera alternativa lösningar

Programmål - Gäller IP

Från utbildningsplan: Utbildningsplan
  • hantverk: den (ofta tysta) kunskap och individuell förmåga som studenten bygger upp genom att arbeta praktiskt med programmering, själv, i projekt och i community. Här betonas både att arbeta innovativt och mot beställare.
  • teknik: kunnande om den teknik som finns för programmering och datorer, med fokus på programmeringsspråk och plattformar.

Examensmål - Gäller Kandidatexamen

Från examensordning: Examensordning
  • visa sådan färdighet som fordras för att självständigt arbeta inom det område som utbildningen avser
  • visa förmåga att självständigt identifiera, formulera och lösa problem samt att genomföra uppgifter inom givna tidsramar
  • visa förmåga att muntligt och skriftligt redogöra för och diskutera information, problem och lösningar i dialog med olika grupper

Introduktion

Företaget är nystartat, och även om vi redan har tjänster för att lagra och hämta personer samt banker (se specifikation 1 och 2), så har vi ingen tjänst som tillåter oss att skapa konton för individer hos en viss bank, t ex för Marcus Bendtsen hos Swedbank.

Vi önskar att du utvecklar en SOA tjänst åt oss som tillåter skapandet av konton. Du ska använda våra existerande tjänster för personer och banker, så varje konto måste ha information om vilken person och vilken bank det tillhör. Vi kommer behöva sparkonton och lönekonton. Vi måste också kunna hitta alla konton för en viss person och/eller bank. Förutom att skapa och hitta konton behöver vi möjlighet att debitera och kreditera konton. Varje gång en debitering eller kreditering sker måste det sparas transaktionsinformation, även om de misslyckas.

Vi kan inte skapa konton för personer som vi inte redan har i vår användardatabas, och inte heller skapa konton för banker som vi inte har som kunder.

Här är några exempel på hur vi vill använda tjänsten. Listan är inte på något sätt komplett, utifrån ovanstående beskrivning hoppas vi att du kan skapa en tjänst som fungerar som vi tänkt.

  • Genom att ange namnet på personen, namnet på banken och kontotyp så skall man kunna skapa ett nytt konto.
  • Genom att ange ett kontonummer så skall man kunna debitera och kreditera konton.
  • Genom att ange ett person id så skall alla konton listas för den personen.
  • ...

Krav på lösning

  • Tjänsten är utvecklad enligt multi-tier konceptet och namngivning av klasser och metoder är väl valda.
  • Tjänsten använder JAX-RS och JPA på ett bra sätt.
  • Tjänsten använder transactions och hanterar concurrency på ett bra sätt.
  • Tjänsten är väl testad med 100% code coverage, om detta inte uppnås måste det motiveras.
  • Tjänsten uppfyller önskningarna från företaget.
  • Tjänsten använder Monlog genomgående, loggar fel och anrop till tjänsten (Specification 3).
  • Tjänsten är utvecklad på ett sådan sätt att företagets Jenkins och Sonar kan hantera koden.
  • SVN skall användas kontinuerligt.
  • Tjänsten har en tydlig dokumentation för hur webblagret skall anropas.
  • Tjänsten följer de SOA principer som diskuterats i kursen (se slides).

Redovisning

Vid deadline skrivs koden ut på papper i två exemplar, skapa ett försättsblad med era namn på. Ett lämnas över till en annan grupp och ett exemplar ges till kursledningen. Ni får då också någon annans arbete. Ni har sedan en vecka på er att granska den andra gruppens arbete och förbereda en presentation av lösningen. Presentationerna görs i tvärgrupper, detta innebär att alla personer som står först i paret i webreg tillhör en grupp och alla i andra position i en annan grupp. Därför är det väldigt viktigt att ni förstår er på hela eran lösning och även är väl förberedda att presentera er granskning. Det finns möjlighet för granskarna att ställa frågor kring lösningen, så var beredd på att svara på frågor.

För att lättare visa vad ni pratar om i eran presentation ska ni skapa ett par slides som visar kod etc, därför kan det vara lättare för er om ni kommer överrens om att skicka koden till varandra, men gör endast detta efter deadline.

Deadline

I slutet av laborationspasset den 21:a September 17:00 är deadline. Då träffas alla kursdeltagare i laborationssalen tillsammans med kursledningen för att utbyta arbeten.

Krav på granskning

Utgå ifrån kraven på lösningen ovan för er granskning, skriv en kortfattad rapport och skriv ut i två exemplar. Av intresse är saker som är bra eller förslag på förändring. Det finns ingen anledning att påpeka att någonting är dåligt utan använd istället ett förbättringsförslag. Lämna över era synpunkter till den andra gruppen och till kursledningen. Var sakliga och tydliga i era muntliga och skriftliga redovisningar. Skapa några slides som stöd för er presentation.

Hjälp att komma igång med Netbeans

  • Ladda ner kodskelettet nedan och spara på lämplig plats. Extrahera zip filen.
  • Starta Netbeans, vid första start kommer du efter en stund få en fråga om JUnit, klicka på "Download and Install"
  • Välj i Netbeans: File -> Open Project
  • Leta upp de extraherade projekten, och välj alla tre projekt med hjälp av CTRL knappen
  • Vänta en stund medan Netbeans installerar nödvändiga moduler
  • När ni har tillgång till SVN konton (måste vänta på att de skapats efter man registrerat sig i webreg) så gör ni följande: Markera ett av projekten, klicka i menyn på Team -> Subversion -> Import. Fyll i era uppgifter och klicka igenom guiden. Gör likadant för varje projekt (obs man kan inte markera alla projekten på samma gång)
  • Ändra i persistence.xml filen med dina MySQL uppgifter (DBNAME, USERNAME, PASSWORD)
  • Ändra i Monlog.java filen och ange er grupps API_KEY
  • Filen HTTPHelper är användbar i logiklagret när ni behöver göra requests till andra SOA tjänster
  • Ta gärna bort Todo specifika filer, men använd de som stöd vid utveckling av era egna
  • Titta i Source Packages och Test Packages för tips på hur koden skall byggas upp

Kodskelett: Ladda ner projektet

Specifikation 1

Tjänsten som innehåller alla person nås genom följande tjänst.

Endpoint: http://enterprise-systems.appspot.com/person

Function Path Method Input parameters Output
List all persons /list GET List of persons in JSON format
Find person by name /find.name GET name Person found or 'null'
Find person by key /find.key GET key Person found or 'null'

Specifikation 2

Tjänsten som innehåller alla banker nås genom följande tjänst.

Endpoint: http://enterprise-systems.appspot.com/bank

Function Path Method Input parameters Output
List all banks /list GET List of banks in JSON format
Find bank by name /find.name GET name Bank found or 'null'
Find bank by key /find.key GET key Bank found or 'null'

Specifikation 3

För Monlog finns en hjälp fil i kod-skelettet, titta där för hur funktionen fungerar.

OBS: Det finns för tillfället ett problem med länkningen i Monlog, detta innebär att man först måste gå till sidan: http://www.ida.liu.se/~TDP024/monlog/, när man sedan loggar in blir man kastad till fel sida. Vad man behöver göra då är att igen gå till sidan http://www.ida.liu.se/~TDP024/monlog/.

Länkningsproblemet innebär också att man inte kan spara/skapa "labels" för sina filter, men annars fungerar de funktioner som är viktiga för kursen.


Sidansvarig: infomaster
Senast uppdaterad: 2012-08-31