Arkitekturoverblik

CRK består af et antal schedulerede jobs - hvert job indlæser definitionen af et endpoint med tilhørende actions fra en ekstern kilde, hentet via HTTP eller direkte i filsystemet (i princippet kan et job også indlæse fra classpath men dette benyttes kun til unittests).

Nedenstående oversigtsdiagram viser CRK og dens afhængigheder, og deres relation til hinanden.

overblik

Eksterne snitflader

CRK'en udstiller ingen eksterne snitflader.

Afhængigheder

CRK som sådan har kun en enkelt ekstern afhængighed, nemlig en database. Denne benyttes til at gemme konfigurationsdata og stille disse til rådighed for DCC'en.

CRK'en er så konfigureret med et antal jobs, som hver indlæser en endpoint definition fra en ekstern kilde -- enten via HTTP eller filsystemet.

Der er følgende krav til den eksterne kilde (http):

  • Indholdet skal være xml som overholder skemaet `dks.xsd`.
  • Den konfigurerede url skal være tilgængelig fra NSP og tilbyde HEAD og GET requests.

  • http headeren Last-Modified skal være samme som eller senere end det tidsstempel som er defineret i indholdet.

Der er følgende krav til den eksterne kilde (filsystem):

  • Indholdet skal være xml som overholder skemaet `dks.xsd`.
  • Filen skal være tilgængelig for den operativ system bruger som afvikler wildfly.
  • Filens tidsstempel skal være samme som eller senere end det tidsstempel som er defineret i indholdet.

Såfremt kravene er overholdet, vil indholdet blive hentet. Kilden genindlæses hvis tidsstemplet i filen er senere end seneste indlæsning.

Logisk arkitektur

CRK består af nogle få komponenter (eller services), som konfigureres via Spring. For nærmere detaljer omkring konfigurationen henvises til installationsvejlednignen.

Komponenterne indkapsler følgende funktionalitet:

  • EndpointdefinitionJob: Schedulering og check af om ekstern kilde er ændret.
  • EndpointService: Forretningslogik til indlæsning af endpoint, herunder versionering.

  • EndpointDao: Indkapsler databaseadgang vedrørende endpoints.
  • ActionDao: Indkapsler databaseadgang vedrørende actions.
  • CrkWebApplicationContext: En specialiseret spring applicationContext.
  • SLALogHelper: Opsætning af SLALog

Datamodel

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 retræsentation af de eksterne endpointdefinitioner.

Tabellen endpoints

Indeholder følgende vigtige felter

  • 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.

Tabellen actions

Indeholder følgende vigtige felter

  • name: uri på den angivne action - Hentet fra ekstern definition og benyttes af DCC

  • serviceIdentifier: serviceId for den service der ønskes tilgået. Benyttes af DCC. Kan være NULL af hensyn til bagudkompatibilitet.
  • 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.
  • inheritedEndpoint: Såfremt en action "forsvinder" fra den eksterne kilde, bevares den som udgangspunkt i konfigurationen, med angivelse af hvor den er kopieret fra.

  • 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.



* Hver kasse i ovenstående diagram har en kort forklaring, som kommer frem i et nyt browservindue, når der klikkes på kassen.


Procedure for (gen)indlæsning af endpoint definition

  1. Et job "vågner op".
  2. Hvis jobbet er disablet i konfigurationen så afsluttes - ellers kører vi videre.
  3. lastModified for jobbets eksterne kilde kontrolleres op mod lastModified for evt tidligere indlæsning (via HTTP If-Modified-since eller tidsstempel i filsystemet). Såfremt der allerede findes en endpoint version med pågældende configId med et nyere samme eller nyere lastModified, så afsluttes, ellers fortsættes.

  4. Den eksterne endpointdefinition hentes og parses.
  5. Stop hvis nyeste aktive version af pågældende endpoint har externalTime nyere end tidsstempel defineret i XML'en.

  6. Deaktiver den gamle version.
  7. Alle AKTIVE actions som fandtes i den gamle version men er bortfaldet i den nye, kopieres til den nye.

  8. Hvis en action findes i både ny og gammel version, kopieres evt. gammel `proxyOverride` til den nye definition.

Deployment

CRK applikationen er en J2EE web applikation, som deployes til driftsmiljøerne som et WAR-arkiv. Applikationen deployeres sammen med konfigurationsartefakter, som bestemmer runtime egenskaber, herunder logning, databaseadgang og opsætning af jobs.

For nærmere detaljer omkring konfigurations- og deploymentmuligheder henvises til installationsvejledningen.


  • No labels