INDHOLD

Beskrivelse

DCC (DeCoupling Component): DCC er også kendt som SOSI afkoblingskomponenten. Også kaldet SOSI-DDC.SOSI-DCC fungerer som webservice gateway, og dens hovedfunktioner er routning af requests, håndhævelse af timeout-grænser på webservice kald samt asynkron afkobling af webservice kald med tilhørende retry-mekanisme (som dog aldrig er blevet implementeret). Formålet med komponenten er primært at understøtte flere typer af kald-semantik. Et godt eksempel er behovet for en fleksibel garanti for svartider, hvor en klient til afkoblingskomponenten i et web service kald kan specificere, at kaldet skal forsøges gennemført inden for et antal millisekunder. Hvis svaret ikke er kommet inden for det angivne antal millisekunder, afbryder komponenten kommunikationen med den pågældende web service, og returnerer en fejl til klientsystemet. Afkoblingskomponenten understøtter også andre typer af kald.

Support ansvarlig: Arosii
NSP: Viderestillingsservice (DCC) - Leverancebeskrivelse

Forretningsanvendelse

^^Tilbage til toppen^^


Relaterede registre og services


Applikationsbeskrivelse

^^Tilbage til toppen^^



DCC (DeCoupling Component): SOSI-DCC fungerer som webservice gateway, og dens hovedfunktioner er routning af requests, håndhævelse af timeout-grænser på webservice kald samt asynkron afkobling af webservice kald med tilhørende retrymekanisme.

WSDL: DCC'en viderestiller kald til GW og andre services, så der er ikke en WSDL for DCC'en
DCC kræver ingen whitelisting.

DCC (DeCoupling Component): DCC er også kendt som SOSI afkoblingskomponenten.
SOSI-DCC fungerer som webservice gateway, og dens hovedfunktioner er routning af requests, håndhævelse af timeout-grænser på webservice kald samt asynkron afkobling af webservice kald med tilhørende retry-mekanisme (som dog aldrig er blevet implementeret). Formålet med komponenten er primært at understøtte flere typer af kald-semantik. Et godt eksempel er behovet for en fleksibel garanti for svartider, hvor en klient til afkoblingskomponenten i et web service kald kan specificere, at kaldet skal forsøges gennemført inden for et antal millisekunder. Hvis svaret ikke er kommet inden for det angivne antal millisekunder, afbryder komponenten kommunikationen med den pågældende web service, og returnerer en fejl til klientsystemet. Afkoblingskomponenten understøtter også andre typer af kald.

Der bemærkes, at komponenten ikke er bundet til [DGWS] og ikke foretager nogen form for validering af at [DGWS] overholdes og dermed heller ikke validerer et eventuel indlejret SOSI Idkort.
Afhængig af hvordan den enkelte operation (SOAPAction) er konfigureret, erstatter, fjerner eller bevarer SOSI-DCC [WS-addressing] headere i kaldet der viderestilles.

Arkitekturoverblik
-------------------
Som webservice gateway er komponenten placeret mellem en klient – som typisk kaldes for webservice consumer (WSC) – og en service udbyder, kaldet webservice provider (WSP, kan være både indenfor og udenfor NSP miljøet).
WSCen webservice sender requests til WSPen igennem komponenten og modtager responsen enten direkte eller ved synkron kommunikation.

Logisk arkitektur
-------------------
Komponenten er implementeret som simpel Servlet, som danner indgangspunktet for indkommende webservice kald. Ved opstart af komponenten indlæses konfigurationen, som indeholder routningsinformation og en default afkoblings-model for de operationer, der skal kunne kaldes igennem komponenten.
Når en besked modtages fra en WSC til videreforsendelse til en WSP, gennemløbes følgende flow:
1) der er IKKE (længere) whitelisting til DCC
2) Routning slås op i komponentens konfiguration: På baggrund af SOAPAction i HTTP headeren afgøres hvorhen beskeden skal routes. Hvis routningsinformation ikke findes i komponentens konfiguration afbrydes kaldet og der returneres et fejlsvar
3) Beskeden parses: Der foretages en SAX parsning af beskeden hvor relevante parametre opsamles
4) Afkoblingsmodel identificeres: Der afgøres hvorvidt kaldet til WSPen skal foregå synkront med timeout, asynkront eller asynkront ved timeout. Hvis ikke WSCen har specificeret afkoblingsmodellen i beskeden, benyttes default afkoblingsmodellen for den pågældende operation som er angivet i komponentens konfiguration
5) Beskeden sendes til WSPen

Routningskonfigurationen vedligeholdes af Central Router Konfiguration (CRK) komponenten.

SOSI-GW som Proxy
----------------------
Det er muligt at specificere i DCC-routing-konfigurationen, at kald skal routes over SOSI-GW inden en service kaldes. SOSI-GW vil efterfølgende kalde den endelige service. Dette giver mening, hvor der anvendes MOCES-certifikater mod en service. Ved denne type routing hjælpes klienter ved at overlade opgaven med, at opbevare SOSI ID-kort til SOSI-GW. Rent praktisk fungerer dette ved, at angive i DCC-routing-konfigurationen om service-kald skal routes gennem SOSI-GW. Angives dette kan samtidig også angives en værdi for den maksimale alder i minutter på SOSI ID-kort fundet i SOSI-GW cache. DCC sørger så for, at indsætte denne værdi i kaldet inden routningen til SOSI-GW, som vil afvise kaldet, hvis alderen er overskredet. Denne type routning-konfiguration benyttes typisk af services, som ønsker en specifik styring af SOSI ID-kortets alder eller ønsker at håndtere SOSI ID-kort opbevaringen udenfor eget system.

Snitflade
----------
SOSI-DCC har én proxy webservice snitflade, som router kald på baggrund af den operation der kaldes – angivet som 'SOAPAction' HTTP header En angivelse af 'SOAPAction' HTTP headeren er påkrævet for HTTP bundne SOAP kald. .
For hver operation, der skal kunne kaldes i gennem DCC, er komponenten konfigureret med et WSP endpoint, en timeout-grænse og en eventuel proxy endpoint som kaldet skal routes i gennem (fx en SOSI-Gateway).

Datastruktur, Intern register: Central Rute Konfiguration (CRK)

^^Tilbage til toppen^^

Register properties:

Central Rute Konfiguration

CRK'en har til formål at stille konfiguration til rådighed for DCC'en på en form der let kan modificeres og gøres tilgængelig for DCC i alle NSP-miljøer -- centrale såvel som decentrale.

CRK anvender databasen til dels at læse eksisterende endpoint definitioner, dels til oprettelse af nye definitioner og deaktivering af ældre versioner.
Databasen består af 2 tabeller, som tilsammen udgør en versioneret repræsentation af de eksterne endpointdefinitioner.

Entitetsbeskrivelser

actions

^^Tilbage til toppen^^

Action angiver hvordan det enkelte endpoint kaldes

Objektet indeholder informationen:
--------------------------------------
- `name`: uri på den angivne action - Hentet fra ekstern definition og benyttes af DCC
- `model`: Indeholder pt altid værdien 'synchronous_timeout'
- `timeout`: angiver den maksimalt tilladelige svartid for den eksterne service der kaldes gennem DCC.
- `useProxy`: Angiver hvorvidt DCC'en må sende forespørgslen gennem en proxy (SOSI-GW). Indlæst fra ekstern kilde.
- `proxyOverride`: (valgfri) Vedligeholdes af driften og giver mulighed for at overskrive useProxy.
- `idcardmaxage`: (valgfri) Medsendes til gateway, såfremt en sådan benyttes, og anvendes til check for udløbne id-kort.
- `endpointId`: Den version af endpoint, som en given action er knyttet til. Relation til endpoints tabellen
- `inheritedEndpoint`: Såfremt en action "forsvinder" fra den eksterne kilde, bevares den som udgangspunkt i konfigurationen, med angivelse af hvor den er kopieret fra. Relation til endpoints tabellen
- `active`. Angiver hvorvidt pågældende action er aktiv eller ej. Kan f.eks. benyttes af driften til helt at fjerne actions, der forsvinder fra den eksterne kilde.

endpoints

^^Tilbage til toppen^^

Endpoints Konfiguration til brug for Viderstillingservicen, DCC

Objektet indeholder informationen:
--------------------------------------
- `configId`: Navnet på det konfigurerede job i spring konfigurationen.
- `name`: Det eksterne navn, defineret i den eksternt indlæste fil.
- `url`: Adressen på det eksterne endpoint.
- `externaltime`: Tidsstempel defineret i den eksterne kilde. Benyttes ved genindlæsning til at kontrollere om der er sket ændringer.
- `active`: Angiver hvorvidt denne (version af) endpoint definition er aktiv eller ej.
- `version`: Ved genindlæsning oprettes altid en ny version (række i tabellen), og de foregående deaktiveres.

override

^^Tilbage til toppen^^

"override" tabellen anvendes til at overstyre de url'er de DCC'er der kører på dnsp'erne anvender til at kalde videre med således vi kan ramme de services der kører på dnsp'erne også.
(undtagelses håndtering af regionernes DNS, hvor det hedder noget forskelligt i de forskellige regioner (kører på regionernes net), hvorved der kan overrides forskellige dele af url'en, f.eks. hostname)

Objektet indeholder informationen:
--------------------------------------
name
node
serviceUrl
useProxy
timeout
idcardmaxage
doNotVerifySSLHostName
wsaHeadersProcessing


Fil: xml-konfiguration (CRK)

^^Tilbage til toppen^^

Filen indeholder definitioner af endpoints med tilhørende actions

Tabelbeskrivelser

Tabel: actions

^^Tilbage til toppen^^

CREATE TABLE actions (
id bigint(20) NOT NULL auto_increment,
endpointId bigint(20) NOT NULL,
inheritedEndpoint bigint(20),
name varchar(4096) NOT NULL,
timeout bigint(20) NOT NULL,
model varchar(255) NOT NULL,
active boolean default false,
idcardmaxage int(11),
useProxy boolean NOT NULL,
proxyOverride boolean,
primary key(id)
);

CREATE INDEX IX_ACT_1 ON actions (endpointId, active); -- bruges af view
ALTER TABLE actions ADD CONSTRAINT act_ep1 FOREIGN KEY (endpointId) REFERENCES endpoints (id); -- bruges af DCC
ALTER TABLE actions ADD CONSTRAINT act_ep2 FOREIGN KEY (inheritedEndpoint) REFERENCES endpoints (id);

Tabel: endpoints

^^Tilbage til toppen^^

CREATE TABLE endpoints (
id bigint(20) NOT NULL auto_increment,
configId varchar(255) NOT NULL,
name varchar(255) NOT NULL,
url varchar(4096) NOT NULL,
lastModified Datetime NOT NULL,
externaltime Datetime NOT NULL,
createdtime Datetime NOT NULL,
version bigint(20) NOT NULL,
active boolean NOT NULL,
primary key(id)
);

CREATE UNIQUE INDEX IX_EP_1 ON endpoints (configId, version);
CREATE INDEX IX_EP_2 ON endpoints (active); -- bruges af view
CREATE INDEX IX_EP_3 ON endpoints (createdtime); -- bruges af view

Tabel: override

^^Tilbage til toppen^^

Desc crk.override;

| id | bigint(10) | NO | PRI | NULL | |
| name | varchar(255) | NO | | NULL | |
| node | varchar(255) | YES | | NULL | |
| serviceUrl | varchar(255) | YES | | NULL | |
| useProxy | tinyint(1) | YES | | NULL | |
| timeout | bigint(20) | YES | | NULL | |
| idcardmaxage | int(11) | YES | | NULL | |
| doNotVerifySSLHostName | tinyint(1) | YES | | NULL | |
| wsaHeadersProcessing | varchar(32) | YES | | NULL | |

Teknologibeskrivelse

^^Tilbage til toppen^^

Refereres fra

^^Tilbage til toppen^^






  • No labels