Virtuell tjänst
En virtuell tjänst erbjuder en anslutningspunkt per tjänstekontrakt som standardiserats genom RIVmetoden. I praktiken finns det ofta många tjänsteproducenter (regionala, landstingsspecifika eller gemensamma för ett antal vårdgivare) för ett standardiserat tjänstekontrakt. Virtuella tjänster döljer detta förhållande för tjänstekonsumenter.
Driftsätta virtualiseringar i Virtualiseringsplattformen
- Lägg till jar-fil med virtualisering i <MULE_HOME>/apps/vp-services-[version]/lib katalogen
- Använd kommandot touch <MULE_HOME>/apps/vp-services-[version]/vp-config.xml för att ladda om applikationen och starta den virtuella tjänsten
- Säkerställ driftsättningen av den virtuella tjänsten genom att:
- titta i loggen <MULE_HOME>/logs/mule-app-vp.log. Omladdningen har gått bra när man ser informationen nedan i loggen:
**********************************************************************
* Application: vp-services-2.2.0 *
* OS encoding: UTF-8, Mule encoding: UTF-8 *
* Agents Running: *
* JMX Agent *
* Clustering Agent *
**********************************************************************
b. Hämta upp den installerade virtuella tjänstens wsdl genom SOAPUI. Det räcker med att testa en eller två tjänster:
- Gå till File=> New soapUI Project och fyll i Project Name och Initial WSDL/WADL.
- Project Name är valfritt.
- Initial WSDL/WADL är adress till tjänstens wsdl. Den får man fram genom att packa upp tjänstens jar-fil och titta efter adress för inbound-endpoint i filen tp2-service-mule-descriptor.xml.
ex. address="https://${TP_HOST}:${TP_PORT}/${TP_BASE_URI}/AterkallaSamtyckeVardsystem/1/rivtabp20". - Ersätt samtliga parametrar i adressen och lägg till ?wsdl på slutet, till exempel: https://123.456.00.00:20000/vp/AterkallaSamtyckeVardsystem/1/rivtabp20?wsdl
- Lyckas upphämtningen av wsdl-en kommer ett SoapUI projekt skapas med ett request till tjänsten.
Verktyg för att generera virtuella tjänster
Verktyg för att hjälpa till i arbetet med att skapa körbara virtuella tjänster.
Script för att generera körbara virtuella tjänster för VP 2.x
Förutsättningar
Java är installerat och JAVA_HOME är satt i miljön.
Kräver groovy 1.8 eller nyare, se här för installationsinstruktioner.
Kräver Maven 3.0 eller nyare.
Rätt version av Maven behövs för att kunna köra scriptet.
Scriptet baseras på RIV TA Konfigurationsstyrning 1.0
Om tjänsteinteraktionen skall stödja både rivtabp20 och rivtabp21
Det finns tjänsteinteraktioner på RIV TA som både har stöd för rivtabp20 och rivtabp21. För att kunna generera virtuella tjänster för båda dessa krävs idag lite handpåläggning och generering i 2 steg.
Exempel från tjänstedomänen eservicesupply:eoffering (Erbjuden e-tjänst):
För att generera virtualiseringar för enbart rivtabp20, ändra namn på wsdl fil för rivtabp21
cd rivta-read-only/ServiceInteractions/riv/eservicesupply/eoffering/trunk/schemas/interactions/GetAvailableEServicesInteraction mv GetAvailableEServicesInteraction_1.0_RIVTABP21.wsdl GetAvailableEServicesInteraction_1.0_RIVTABP21.wsdl.temp
Generera virtualisering för rivtabp20 enligt instruktionen under Skapa virtualiseringar
För att generera virtualiseringar för enbart rivtabp21, ändra namn på wsdl fil för rivtabp20
Byt namn på tidigare ändrad wsdl
cd rivta-read-only/ServiceInteractions/riv/eservicesupply/eoffering/trunk/schemas/interactions/GetAvailableEServicesInteraction mv GetAvailableEServicesInteraction_1.0_RIVTABP21.wsdl.temp GetAvailableEServicesInteraction_1.0_RIVTABP21.wsdl
cd rivta-read-only/ServiceInteractions/riv/eservicesupply/eoffering/trunk/schemas/interactions/GetAvailableEServicesInteraction mv GetAvailableEServicesInteraction_1.0_RIVTABP20.wsdl GetAvailableEServicesInteraction_1.0_RIVTABP20.wsdl.temp
Generera virtualisering för rivtabp21 enligt instruktionen under Skapa virtualiseringar
Skapa tjänstevirtualiseringar
Ladda ner önskad RIV-TA zip med tjänstekontrakt till ett [temporärt bibliotek] från RIV TA sidan.
Packa upp zip-filen
Checka ut filer som behövs för att generera virtualiseringar till varfritt bibliotek (i nedanstående exempel används katalog 'temp'):
svn checkout http://skltpservices.googlecode.com/svn/tools/generators/ temp
Bygg den senaste version av artefakten. I exemplet nedan används version 1.3
1. cd /temp/archetypes/tags/archetype-1.3/ServiceArchetype 2. mvn clean install
Gå till tools-katalogen där Virtualiseringsscriptet finns
cd temp/scripts/trunk/se/skltpservices/tools
I potemplate.xml uppdatera artifactId och version beroende på vilken domän/subdomän som tjänstekontrakten tillhör samt vilken version av RIVTA zip-filen som används, se exempel nedan
<groupId>se.skl.skltpservices</groupId> <artifactId>itintegration-engagementindex</artifactId> <version>1.0-RC4</version>
Uppdatera version i VirtualiseringGenerator.groovy så att det matchar versionen på RIVTA zip-filen.
def version = '1.0-RC4'
Det är senare när man bygger de körbara jarfilerna som dessa döps till en kombination av tjänstedomän och version, ex itintegration-engagementindex-FindContent-virtualisering-1.0-RC4.jarI samma fil (VirtualiseringGenerator.groovy ) se till att rätt version av arketypen används. Sätt -DarchetypeVersion till den version som har byggts i ovan steg 4.
mvn archetype:generate -DinteractiveMode=false -DarchetypeArtifactId=service-archetype -DarchetypeGroupId=se.skl.tp.archetype -DarchetypeVersion=1.3 -Duser.dir=. -DgroupId=se.skl.skltpservices.druglogistics.dosedispensing -DartifactId=HamtaLokaltProduktsortiment -Dversion=1.1.0 -DvirtualiseringArtifactId=druglogistics-dosedispensing-HamtaLokaltProduktsortiment-virtualisering -DhttpsEndpointAdress=https://${TP_HOST}:${TP_PORT}/${TP_BASE_URI}/druglogistics/dosedispensing/HamtaLokaltProduktsortiment/1/rivtabp20 -DhttpEndpointAdress=http://${TP_HOST}:${TP_PORT_HTTP}/${TP_BASE_URI}/druglogistics/dosedispensing/HamtaLokaltProduktsortiment/1/rivtabp20 -DflowName=druglogistics-dosedispensing-HamtaLokaltProduktsortiment-<TODO: tex 1.1.0>-Interaction-virtualisering-flow -DfeatureKeepaliveValue=${feature.keepalive.urn.riv.druglogistics.dosedispensing.HamtaLokaltProduktsortimentResponder.1:${feature.keepalive}} -DfeatureResponseTimeoutValue=${feature.featureresponsetimeout.druglogistics.dosedispensing:${SERVICE_TIMEOUT_MS}} -DserviceMethod=HamtaLokaltProduktsortiment -DserviceWsdlFileDir=classpath:/schemas/interactions/HamtaLokaltProduktsortimentInteraction/HamtaLokaltProduktsortimentInteraction_1.0_RIVTABP20.wsdl -DserviceNamespace=urn:riv:druglogistics:dosedispensing:HamtaLokaltProduktsortiment:1:rivtabp20
Kör script med schemas som input
./VirtualiseringGenerator.groovy <genväg till den uppackade RIV TA filen>/schemas
Mappar för varje interaktion har nu skapats. Varje mapp innehåller en definition av en virtuell tjänst
FindContent pom.xml Virtualisering pom.xml src main resources schemas core_components interactions tp2-service-mule-descriptor.xml GetUpdates ProcessNotification Update pom.xml
Kör maven install för att skapa körbara jar-filer
mvn clean package
Problem med att köra script
Script hänger på mvn archetype:generate
Kör mvn archetype:generate kommandot manuellt för att ladda ner olika beroenden som behövs av scriptet. Prova att köra scriptet igen när beroendena finns nedladdade.
Release notes
Använda 1.1
Använda 1.2
- Endast Mule3 flow för virtualisering, mule2 service borttagen
- Lägger till en http och https ändpunkt
- Lägger till möjligheten att styra via keep-alive via feature
- Ändpunkternas adress innehåller nu även domän och subdomän (Notera att om man vill generera om tjänster som inte skall ha domännamn i adress, så uppdatera -DhttpsEndpointAdress och -DhttpEndpointAdress så att endast tjänstens namn kommer med)
Använda 1.3
- Stöd för feature response timeout per tjänstedomän
mvn archetype:generate -DinteractiveMode=false -DarchetypeArtifactId=service-archetype -DarchetypeGroupId=se.skl.tp.archetype -DarchetypeVersion=1.3 -Duser.dir=. -DgroupId=se.skl.skltpservices.druglogistics.dosedispensing -DartifactId=HamtaLokaltProduktsortiment -Dversion=1.1.0 -DvirtualiseringArtifactId=druglogistics-dosedispensing-HamtaLokaltProduktsortiment-virtualisering -DhttpsEndpointAdress=https://${TP_HOST}:${TP_PORT}/${TP_BASE_URI}/druglogistics/dosedispensing/HamtaLokaltProduktsortiment/1/rivtabp20 -DhttpEndpointAdress=http://${TP_HOST}:${TP_PORT_HTTP}/${TP_BASE_URI}/druglogistics/dosedispensing/HamtaLokaltProduktsortiment/1/rivtabp20 -DflowName=druglogistics-dosedispensing-HamtaLokaltProduktsortiment-<TODO: tex 1.1.0>-Interaction-virtualisering-flow -DfeatureKeepaliveValue=${feature.keepalive.urn.riv.druglogistics.dosedispensing.HamtaLokaltProduktsortimentResponder.1:${feature.keepalive}} -DfeatureResponseTimeoutValue=${feature.featureresponsetimeout.druglogistics.dosedispensing:${SERVICE_TIMEOUT_MS}} -DserviceMethod=HamtaLokaltProduktsortiment -DserviceWsdlFileDir=classpath:/schemas/interactions/HamtaLokaltProduktsortimentInteraction/HamtaLokaltProduktsortimentInteraction_1.0_RIVTABP20.wsdl -DserviceNamespace=urn:riv:druglogistics:dosedispensing:HamtaLokaltProduktsortiment:1:rivtabp20