Gå till slutet av bannern
Gå till början av bannern

VP Camel för utvecklare

Hoppa till slutet på meta-data
Gå till början av metadata

Du visar en gammal version av den här sidan. Visa nuvarande version.

Jämför med nuvarande Visa sidhistorik

« Föregående Version 11 Nästa »

Instruktioner för utvecklare

Initial uppsättning av utvecklingsmiljön

Sätt upp utvecklingsmiljö enligt följande: Generella instruktioner för utvecklare.

När detta är gjort kan man hämta ut källkoden för virtualiseringsplatformen på https://github.com/skltp/vp

Exempel på checkout kommando för virtualiseringsplatformen

╰─$ git clone git@github.com:skltp/vp.git
Cloning into 'vp'...
cd vp

Öppna därefter ett kommandofönster för att bygga och testa källkoden med hjälp av Maven:

mvn clean install

Hur köra automatiska tester

Alla automatiserade enhetstester och integrationstester går att köra via Maven utan att någon infrastruktur behöver vara uppsatt.

mvn clean test

Hur ser det ut i utvecklingsmiljön?

Efter att koden importerats i en lämplig utvecklingsmiljö (IntelliJ eller Eclipse t.ex.) så kan applikationen startas i run/debug som VpServicesApplication:

Applikations-strukturen ska i IntelliJ se ut som detta:

Hur commita kod

För att committa källkod på GitHub följer vi standardproceduren beskriven på: Generella instruktioner för utvecklare.

Hur göra en release

För att bygga en release följer vi standardproceduren beskriven på: Generella instruktioner för utvecklare.

Lokal verifiering

För att verifiera att VP Camel är installerat och igång på ett normalt sätt, så kan man anropa statustjänsten med t.ex. Curl, se punkt 4 på denna sida: SKLTP VP - Installation

För att anropa VP Camel med Soap-requests så behöver man sätta upp en testmiljö med t.ex. SoapUI.

Information om flödet i VP Camel

Camel implementerar ett så kallat domän specifikt språk DSL. Detta används för att styra data flödet mellan olika processer. Vilket görs genom att man skapar upp en eller flera flöden kallade Routes i en Routebilder.

Dessa Route:s kan i sin tur ha olika in och utgångar eller vara sammankopplade. Detta gör att det är enkelt att skriva kod där varje steg i processen kan skrivas av en enskild klass med en specifik uppgift. Dessa steg kan sedan relativt enkelt kopplas samman i flöden som är enkla att överblicka och följa. Det gör det även enkelt att lägga till eller dra ifrån steg i processen, skapa undantag och vägval efter behov och eller återanvända flera steg i en process genom att skapa en specifik Route för dessa.

Med de positiva superlativen om Camel så kan det vara värt att notera att det är lätt att som ny användare av ramverket förväxla en Route konfigurering med kod som exekveras (it walks and talks like a duck). Det här är för det mesta inget problem men är värt att ha i bakhuvudet.

Flödesdiagrammet mappar ganska väl med de Routes som skapas upp i klassen VPRouter. Den klassen är en väldigt bra ingång, för att få en överblick över VP och man kan mycket väl hävda att den på sätt och vis bättre beskriver flödet än diagrammet som länkats ovan.

För att flytta data mellan process stegen används ett Exchange objekt. Detta är en realisering av konceptet Message exchange pattern vilket vi känner igen från t.ex. Rest SOAP etc. Som nämnts kan en Route börja i lite av varje men i VP:s fall kommer Exchange objektet att emanera från web-socket och den komponent vi använder för detta kommer att stoppa in payloaden (SOAP meddelandet) i attributet In,Body, headrar i In.Headers etc. o.s.v.

I princip kan/bör varje steg i flödet genom VP motsvaras av en implementation av det enkla interfacet Processor vilken har en metod som tar just en Exchange.

Exchange In vs Out. En egenhet är att om man exempelvis vill göra ändringar i In.Body innan den skickas vidare till nästa steg så görs detta enklast genom att stoppa tillbaka ändringen i In.Body. Det kan verka lite ointiutivt först, men under förutsättning att vi inte försökt sätta Out “manuellt” så används In som Out till nästa steg. På det viset följer övriga attribut som headers, attachments etc med automatiskt.

I praktiken jobbar de olika stegen i VP i huvudsak med attributen: In.Body (Soap meddelandet), In.Headers för att läsa headers som kommit in och lägga till headers som behöver läggas till åt Producenten, samt Propertys vilka ligger direkt på Exchangen och används för att överföra data mellan de olika stegen i flödet.

En annan egenhet är att strömmad data kan realiseras lite olika. I VP:s fall så är bodyn direkt ur lådan ett läs-en-gång attribut. Vilket man får anta har att göra med att om det är stora meddelande vill man kunna läsa dessa rad för rad. Vi har kringgått detta genom att slå på streamCaching.

  • Inga etiketter