Produktval som påverkar implementationen
För att spara in på licenskostnader bör VP byggas om till att kunna köra utan Mule. Som ersättare till Mule som ramverk för virtualiseringsplattformen har Spring Boot + Apache Camel valts.
Camel är ett moget ramverk med stöd för de funktioner som implementerats i Mule i tidigare lösning.
Apache Camel är också öppen källkod som distribueras under Apache 2.0 license.
Paketstrukturer för VP-camel
Nedan redovisas de mest intressanta paketen i koden.
se.skl.tp.vp
- certificate - kod som hämtar data från certifikaten
- errorhandling - kod som hanterar olika fel som inträffar under flödet
- exceptions - olika definerade fel som används i VP
httpheader -Processors/helpers som hanterar http-headrar
status - service som returnerar VP status
- timeout - kod som hanterar konfiguration för timeout per tjästekontrakt
- vagval - kod som hanterar vägval och behörigheter att anropa för konsumenten/tjänstekontraktet
- wsdl - returnerar wsdl'er för olika virtuella tjänster
Tillgång till källkoden
Loggning Hawtio
För loggning används log4j2. Ovanpå det används Hawtio som är ett logg-ramverk som visar information om olika delar av tjänste-plattformen.
Det finns möjlighet att ändra loggnivåer under drift. Det går även att få systeminformation som:
processorutnyttjande, minne, diskutrymme, javaversion, java classpath, threads etc.
Samt att debugga Camel-flöden.
Se vidare här: SKLTP VP - Loggning
Exceptions
Fel rapporteras av VP enligt VP standariserade felkoder. Om ett fel uppstår loggas det och ett VpSemanticException kastas. Det görs senare om till SoapFaultException vilket är den exception som når klienten.
Monitorering Statustjänst
VP Camel exponerar en status-tjänst. Den returnerar information om plattformen. Genom anrop av denna tjänst kan man på ett enkelt sätt kontrollera att VP är igång och fungerar som avsett.
Se vidare här: SKLTP VP - Status tjänst
TAK cache
VP har sin egen kopia av TAK data i en cache. Den inhåller vägval och anropsbehörigeter. VP använder en Tak-cache för:
- Få information om faktisk url till en producent
- Bestämma om konsumenten har behöriget att anropa en viss producent med ett visst tjänstekontrakt.
Man kan göra en uppdatering av TAK cache via url:
http://[vp-url]:23000/resetcache
eller via egen-konfigurerad adress, se nyckeln vp.reset.cache.url här: Application.properties
Webb-service/SOAP/WSDL
VP tillhandahåller inte i sig själv några tjänster. De WSDL:er VP exponerar beskriver alltså de tjänster som andra system exponerar via VP. Dessa ska, om de ska exponeras av VP, ha en Logisk adress till systemet som tillhandahåller tjänsten.
Denna skall läggas i headern. Detta måste därför beskrivas i WSDL:n. Header är ett valfritt element men som ingår i SOAP:standarden.
Exakt hur WSDL:er som exponeras av VP skall se ut finns beskrivet i Ineras styrdokument. Verifiering och testning av nya tjänster i VP skall ha gjorts innan dessa exponeras i produktionsmiljön för NTJP.
WSDL:erna skall då vara färdiga inklusive scheman som beskriver data som skall skickas. Dessa placeras sedan i en katalog under VP varpå de är tillgängliga via anropsadrerss+?wsdl. Mer om hur installationen av WSDL:erna finns här Installation av Virtuella tjänster.
Trädklättring HSA cache
VP har för närvarande stöd för "trädklättring", d.v.s. att behörighet till att anropa ett kontrakt kan ligga ovanför en producent, i ett hierarkiskt träd.
Men denna funktionalitet kommer i framtida versioner av VP att tas bort. Fram tills dess kan
VP kan för att stödja detta läsa in och spara HSA information lokalt. Informationen läses in från en eller flera filer som kan hämtas från HSA.
HSA trädet för en HSA enhet ligger i en komma-separerad lista i DN fältet där förälder är nästa del i listan.
Exemplet nedan är ett utdrag från två filer (den ena innehåller endast root parent med HSA-id=SE)
Vi kan se att i filen nedan att både "Nässjö VC DLM" och "Nässjö VC DLK" ligger under "Nässjö Primärvårdsområde".
"Nässjö Primärvårdsområde" ligger i sin tur under "Höglandets sjukvårdsområde" osv.
VP använder informationen för att kontrollera om det finns vägval och behörigheter för organisationer högre upp i trädet om den inte hittar ett för en specifik enhet.
Dvs. om VP i HSA trädet ovan kontrollerar en behörighet för SE0000000001-1234( Nässjö VC DLM) i TAK men inte får någon träff kommer den då att fortsätta med
SE0000000002-1234(Nässjö Primärvårdsområde) osv. ända tills den hittar en behörighet eller når roten SE.