AF1 - Normalflöde genom Virtualiseringsplattformen inkl federering
Loggning, felhantering, RIV-konvertering, ...
Beskrivning av flödet
Check sender id
Kontrollerar om HTTP headern x_vp_sender_id är satt i inkommande anrop.
Om den är satt kontrolleras att fältet x_vp_instance_id har samma värde som Virtualiseringsplattformen som handhar anropet. Dessutom kontrolleras att anropet kommer från en ip-adress enligt en white-list för denna VP-instans.
Om den inte är satt försöker man hämta ut avsändar identiteten ur ett certifikat. Detta finns antingen i headern x_vp_auth_cert (en white-list kontroll görs då också) eller i session efter SSL/TLS handskakningen.
Oavsett metod sätts fältet senderid med hittat värde i sessionen.
Save consumer id
Om HTTP headern x-rivta-original-serviceconsumer-hsaid är satt sparas den undan i sessions variablen originalServiceconsumerHsaid. (Detta värde skall propageras genom virtualiseringsplattformen till anropet mot Tjänsteproducenten)
Create corr id
Skapar ett korrelerings id (GUID) och spara undan detta i sessions variabeln soitoolkit_correlationId. Detta id kan användas internt inom Virtualiseringsplattformen för att t.ex. korrelera log-poster.
RIV extractor
Plockar ut RIV-version, receiverId, wsdl namnrymd och tjänstekontrakt. Dessa värden stoppas in i följande sessionsvariabler: rivversion, receiverid, wsdl_namespace och servicecontract_namespace.
logReqIn
Sparar ner en loggpost med information om det inkommande anropet.
RIV transformer
Kontrollerar om den konfigurerade Tjänsteproducenten har en annan RIV version är RIV versionen för inkommande anrop. Om de är olika sker en översättning till den RIV version som Tjänsteproducenten är konfigurerad med.
Get recipients
Hämtar en URL som matchar de parametrar som inkommande anrop har från Vägvalsagenten när det gäller routing. En kontroll att det finns behörighet att göra anropet görs också.
Get recipient endpoint
Skapar dynamisk en representation av den ändpunkt dit anropet skall skickas. Egenskaper som vi konfigurerar för denna ändpunkt är följande:
- URL till ändpunkten som vi tidigare fick från Get recipients anropet.
- Response time-out, dvs hur länge vi skall vänta på ett svar från Tjänsteproducenten innan vi signalerar en time-out.
- Interactionstyp sätts till Request-Response, dvs ett synkront anrop.
- Encoding sätts till UTF-8.
- HTTP header Content-Type sätts till "text/xml; charset=UTF-8"
- En dynamisk transformer skapas där bl a:
- HTTP Header User-Agent sätts till "SKLTP VP/2.0"
- HTTP Header Content-Type sätts till "text/xml; charset=UTF-8"
- Följande Headers plockas bort så att de inte blir HTTP Headers: rivversion, wsdl_namespace, x_vp_auth_cert, servicecontract_namespace, PEER_CERTIFICATES, LOCAL_CERTIFICATES, Content-Type?
- Följande HTTP Headers läggs till: x_vp_sender_id och x_vp_instance_id
- Följande HTTP Header läggs till: x-rivta-original-serviceconsumer-hsaid. Antingen propageras den vidare från det inkommande anropet (se Save consumer id) eller så sätts den till samma värde som senderid ( se Check sender id).
- Om propertyn SOAPAction är satt skapas en HTTP Header (SOAPAction) med detta värde.
- Slutligen väljer man vilken connector som skall göra utgående anrop. Antingen är det ett HTTP eller ett HTTPS anrop som skall göras.
Route
Här sker själva anropet till Tjänsteproducenten. Innan anropet sparar vi en tidsstämpel och när anropet gjorts sparar vi undan hur lång tid själva anrop tog i en sessions variabel (x_skltp_prt).
Handle exception
Om ett fel inträffar tar en exception handler vid och hanterar felet så att en Tjänstekonsument får ett SOAPFault som svar med detaljer om felet.
LogRespOut
Sparar ner en loggpost med information om det svaret.
Feature keep-alive respons
Stänger explicit en connection om keep-alive ej skall användas. Gäller endast HTTPS trafik!
WSDL query respons
Byter ut URL:er i WSDL:er och XSD:er som returneras från ett GET anrop som pekar på interna adresser som en Tjänstekonsument ej kommer åt till att vara anropad URL istället.
Filter respons headers
Plockar bort följande properties ur sessionen som annars blir HTTP Headers i svaret till Tjänstekonsumenten:
- SOAPAction
- MULE_CORRELATION_GROUP_SIZE
- MULE_CORRELATION_ID
- MULE_ENCODING
- http.method
- LOCAL_CERTIFICATES
- PEER_CERTIFICATES
AF2 - Ursprunglig avsändare inkl. federering
AF3 - Keep-alive
AF4 - Timeout
AF5 - Resetcache
TAK och HSA
AF6 - Lastbalansering proxy HTTPS och HTTP
Information i HTTP-headers från en proxy
AF7 - Övervakning med PingForConfiguration