Jämförda versioner

Nyckel

  • Dessa rader lades till.
  • Denna rad togs bort.
  • Formateringen ändrades.

Innehållsförteckning

...

Innehållsförteckning

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 implementeras i Mule i nuvarande lösning.

Apache Camel är också öppen källkod som distribueras under Apache 2.0 license.

...


Hur Mule ESB tillämpas

För att tillmötesgå kravet på enkel installation av nya virtuella tjänster paketeras varje virtualiserad tjänst som en komponent. Denna komponent (paketerad virtuell tjänst) hör samman med det tjänstekontrakt den virtualiserar snarare än en specifik instans av virtualiseringsplattformen. Den kan sedan installeras i alla förekommande driftsinstanser av virtualiseringsplattformen utan någon ytterligare konfiguration. som tillförs ESB'n. Vägvalsroutern är den komponent som alla virtualiserade tjänster kommunicerar med via ett internt protokoll.

Image Modified

Den virtuella tjänsten exponerar en anslutningspunkt in till vår ESB för ett visst tjänstekontrakt. Vid ett anrop från en tjänstekonsument anropas virtualiseringsplattformen internt med ett meddelande som innehåller all inkommande information. Virtualiseringsplattformen exponerar en intern anslutningspunkt för inkommande anrop från den virtuella tjänsten. Alla virtuella tjänster skickar anropen vidare till samma interna anslutningspunkt. En routing sker i virtualisringsplattformen till en extern tjänsteproducent när alla villkor för denna routing är uppfyllda.Om villkoren inte är uppfyllda returneras ett SoapFault. Virtualiseringsplattformen anropar tjänstekatalogen för att få nödvändig virtualiserings- och behörighetsinformation vid uppstart av ESB'n.

Då Mule endast används i det interna flödet så skall Mule-headers i den mån det går inte skickas vidare till andra system i som HTTP-headers. Förutom rent estetiska och säkerhetstekniska orsaker så kan Mule-headers i vissa Mule-versioner ge oväntade konsekvenser om dem plockas upp av senare system som också använder Mule.

Virtuell tjänst

Nödvändiga delar att paketera blir enbart en konfigurationsfil samt tjänstekontraktet (WSDL) med dess tjänsteschema. Detta paketeras i en jar-fil. Konfigureringsinformation för en virtuell tjänst följer nedanstående konfiguration (vissa detaljer utelämnande), se även VP Anvisningar användare[7]:

Kodblock
languagexml
<mule ... >
	<flow name="<unikt namn beroende på tjänst>" >
		<composite-source>
			<https:inbound-endpoint
        		address="https://${TP_HOST}:${TP_PORT}/${TP_BASE_URI}/clinical..."
				...
				<response-transformers ...>
			</https:inbound-endpoint>

			<http:inbound-endpoint
				address="http://${TP_HOST}:${TP_PORT_HTTP}/${TP_BASE_URI}/clinicalprocess..."
				...
				<response-transformers ...>
			</http:inbound-endpoint>
		</composite-source>

		<cxf:proxy-service
			wsdlLocation="..."
			...     
		</cxf:proxy-service>

		<flow-ref name="vagval-dynamic-routing-flow" />
	</flow>
</mule>
  • name i flow-transformer-taggen måste vara unikt. Används för att namnge en virtualisering unikt.
  • wsdlLocation måste anpassas till var i paketstrukturen wsdl-en ligger.
  • Parametrarna TP_HOST, TP_PORT_HPPT, TP_PORT_HTTPS, TP_BASE_URI hämtas från den generella konfigurationen av VP. Tillsammans med tjänstedomänens namn och tjänstens namn bildar de den kompletta URL:en till den virtuella tjänsten.

Virtualiseringsplatformen

Paketstrukturer för

...

VP-camel

Nedan redovisas de mest intressanta paketstrukturerna.

se.skl.tp

...

.vp

  • certificate - coden som hämtar data från certefikat
  • errorhandling -  koden som hanterar olika fel situationer som händer under flödet
  • exceptions - olika definerade fel som används i VP
  • httpheader - Processors/halpers som jobbar med http-headrar

  • service - TAK och HSA cache

  • status - service som returnerar VP status

  • util - Utilities som används av övriga komponenter i VP
  • vagvalagent - hanterar TAK information som behövs för att göra routing och behörighetskontroll
  • vagvalrouter - gör själva routingen i VP

se.skl.tp.hsa

  • cache - hanterar HSA information som används för att hitta verksamheter i en trädstruktur.

Intern inkommande "anslutningspunkt"

Den inkommande "anslutningspunkten" definieras med följande konfiguration som definierar ett Mule flöde (många detaljer är utelämnade).

Kodblock
languagexml
<mule ... >
    <flow name="vagval-dynamic-routing-flow" >

		<!-- transformers --> 
		<!-- session handling -->

		<cxf:proxy-client payload="envelope" />

		<custom-processor class="se.skl.tp.vp.vagvalrouter.VagvalRouter" >
			<!-- spring properties -->
		</custom-processor>
	
		<response>" >
			<!-- transformersspring properties -->
		</response>
   
		<catch-exception-strategy>custom-processor>
	
		<response>
			<!-- transformers -->
		</catch-exception-strategy>response>
   
</flow>
</mule>

VP + virtualiserade tjänster

För att ha en enda konfigurationsfil när mule startas så finns en fil som heter vp-config.xml. Den laddar dels egna konfigurationsfiler och dels alla virtualiserade tjänster den kan hitta på classpathen. Detta bygger på att alla virtualiserade tjänster har namngivit sin konfigurationsfil med följande namn tp2-service-mule-descriptor.xml

Kodblock
languagexml
<spring:beans>
  ...
  <spring:import resource="classpath*:tp2-service-mule-descriptor.xml"/>
</spring:beans>		<catch-exception-strategy>
			<!-- transformers -->
		</catch-exception-strategy>
    </flow>
</mule>

Hawtio 
Ankare
Hawtio
Hawtio

...

Det finns möjliget att ändra loggnivåer on the fly, få systeminformation som processorutnyttjande, minne, diskutrymme, javaversion, java classpath, threads etc, debugga Camel flöden.

Status

...

Tjänst 
Ankare
status_tjanst
status_tjanst

Vp Camel platformen innehåller status tjänst. Den returnerar information om platformen. Genom anrop av denna tjänst kan man på ett enkelt sätt kontrollera att VP inte har avslutats.

T.ex.

...

.

T.ex.

Kodblock
{
  "Name": "vp-services-camel",
  "JavaVersionVersion": "14.80.0_161-RC1",
  "CamelVersionBuildTime": "2.24.02019-09-18T08:19:27.550Z",
  "TakCacheInitializedServiceStatus": "trueStarted",
  "TakCacheResetInfoUptime": "5 hours 1 "Date:2019-09-18T10:23 Status:REFRESH_OK vagval:566 behorigheter:1034minute",
  "ManagementName": "vp-services",
  "HsaCacheInitializedJavaVersion": "true1.8.0_161",
  "HsaCacheResetInfoCamelVersion": "Date:2019-09-18T10:23 Status:true oldNum:0 newNum:314682.24.0",
  "JvmTotalMemoryTakCacheInitialized": "827 mBtrue",
  "JvmFreeMemoryTakCacheResetInfo": "383 mB",
  "JvmUsedMemory": "443 mB"Date:2019-09-18T10:23 Status:REFRESH_OK vagval:566 behorigheter:1034",
  "JvmMaxMemoryHsaCacheInitialized": "1365 mBtrue",
  "EndpointsHsaCacheResetInfo": [
    "https://0.0.0.0:20000/vp",
    "http://0.0.0.0:8080/vpDate:2019-09-18T10:23 Status:true oldNum:0 newNum:31468",
  "JvmTotalMemory":  "http://0.0.0.0:8080/status"827 mB",
    "http://0.0.0.0:24000/resethsacache",
 "JvmFreeMemory": "383 mB",
  "JvmUsedMemory"http://0.0.0.0:23000/resetcache"
  ]
}

I application.propertis fil finns parametrar för den tjänst:

Kodblock
vp.status.url=http://${vp.host}:1080/status

TAK cache

HSA cache

Virtualiseringsplattformen har stöd för att 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 kommaseparerad 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.
Image Removed

...

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 rooten SE.

Referensapplikation

I RIV TA finns en referensapplikation som mha en tjänst kan påvisa kommunikation mellan en tjänstekonsument och en tjänsteproducent.

VP's referensapplikation består av följande komponenter:

  • RIV TA rivta-bp21-refapp-consumer som tjänstekonsument
  • RIV TA rivta-bp21-refapp-producer som tjänsteproducent
  • Virtualiseringen MakeBooking i tjänstedomänen crm:scheduling, se nedan

använder en virtualisering för denna tjänst och knyter ihop en tjänstekonsument med en tjänsteproducent mha konfiguration i en driftssatt VP instans.

Referensapplikationen syftar till att

  • illustrera hur en virtuell tjänst paketeras
  • ge möjlighet att provköra virtualiseringsplattformen med en virtuell tjänst
  • verifera en installation av virtualiseringsplattformen

crm-scheduling-makebooking-virtualisering

...

: "443 mB",
  "JvmMaxMemory": "1365 mB",
  "Endpoints": [
    "https://0.0.0.0:20000/vp",
    "http://0.0.0.0:8080/vp",
    "http://0.0.0.0:8080/status",
    "http://0.0.0.0:24000/resethsacache",
    "http://0.0.0.0:23000/resetcache"
  ]
}


I application.propertis fil finns parametrar för den tjänst:

Kodblock
vp.status.url=http://${vp.host}:1080/status


TAK cache


HSA cache

Virtualiseringsplattformen har stöd för att 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 kommaseparerad 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.
Image Added


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 rooten SE.


Exceptions

Felsituationer rapporteras av virtualiseringsplattformen 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.

...