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.

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):

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

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:

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

Tabellen actions

Indeholder følgende vigtige felter



<iframe src="https://archi.nspop.dk/NSP/570928ca/views/id-4539cbe4-505f-4d31-95a5-95a7633d79bf.html" name="test" height="420" width="800">You need a Frames Capable browser to view this content.</iframe>   

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