Overordnet løsningsdesign af DFDG (classic)

Følgende giver en gennemgang af den tekniske løsning, der er udviklet for at understøtte forretningsfunktionaliteten.

Applikationsdesign

DFDG er udviklet, så det understøtter en lagdelt webapplikation, som registrerer data direkte i DFDG’s database. DFDG er udviklet efter normal best practice for Microsoft.NET platformen for sådanne applikationer, dog præget af at udviklingen af DFDG har stået på i en del år. Det er en arkitektur med fire logiske applikationslag som vist på tegningen herunder, suppleret med en række delte komponenter og klasser. DFDG har ikke egen brugergrænseflade, så Præsentationslaget i nedenstående er ikke en del af DFDG men en del af de applikationer, der anvender DFDG.

Figur 4: Lagdelt opbygning af DFDG, dog er brugergrænsefladen ikke en del af DFDG



DFDG implementerer følgende lag:

  • Servicelag – udstilling af forretningslaget via webservices samt besked-kø

  • Forretningslag – forretningskomponenter (dog uden brug af Microsoft workflow logik)

  • Datalag – adgangslag til datakilder som databaser og eksterne services

Systemet udvikles i Microsoft.NET teknologi i programmeringssproget C#, med anvendelse af enkelte støttekomponenter til f.eks. logning, e-mail afsendelse, sms-afsendelse (NemSMS), dannelse af pdf-dokumenter, osv.

Som en del af den løbende modernisering af DFDG er der påbegynde en fysisk kodemæssig opsplitning af kodebasen (ca. 50 pct. gennemført pr. medio maj 2024). Et af de primære formål er at gøre DFDG's kodebase mindre samt mere overskuelig, hvilket forventes at medføre lettere vedligeholdelse og videreudvikling. Udledt af ovenstående er der p.t. opbygget en række nye selvstændige kodebaser – kaldet forretningsdomæner, som hver især skal rumme kode, som er relateret til et meget velafgrænset forretningsområde. De nye forretningsdomæner er set fra DFDG's eksterne aftagere stadig en del af DFDG. Dermed er siloerne – udover at have eget service endpoint udadtil – en intern implementeringsdetalje. Da siloerne er udviklet i en helt ny teknologistak, er detaljerne beskrevet i hhv.

Forretningsdomænerne udveksler data via forretningshændelser via en EventBroker (RabbitMQ), som er implementeret i Q1 2021. Bemærk at STAR's interne EventBroker ikke udstiller hændelser til eksterne. Det er alene en STAR-intern komponent. Eksterne forretningshændelser udstilles via WSRM (under udfasning) og webservicebeskeder (under indfasning).

Hvert forretningsdomæne har egen database.

Det er STAR's ambition, at der fortsat skal udtrækkes funktionalitet ud af DFDG og placeres i egne siloer i takt med, at øvrig forretningsdrevet funktionalitet implementeres, eller i forbindelse med gennemførelse af moderniseringsprojekt i 2022-2025.

Servicelaget

Servicelaget er en tynd skal oven på forretningslaget. Servicelaget målrettes forretningsbehovene i de enkelte forretningsapplikationer og skærmer disse mod forretningslogikken og domænemodellen, som anvendes i forretningslaget.

De fleste services udstilles som SOAP webservices, og der skrives WSDL kontrakter via CodeFirst arbejdsformen med anvendelse af delte typer (Shared-Types), herunder bl.a. OIO typer. WSDL-kontrakten beskriver syntaks for de enkelte felter, samt kardinalitet. Alle kald valideres. Ved fejl kastes en SOAP Fault.

Webservices er udviklet via Microsoft Windows Communication Foundation (WCF) rammeværket.

Alle webservices er beskyttes via server-certifikater til kryptering af kommunikationen og klient OCES funktionscertifikater til autentificering. Forretningslaget sikrer også, at aftagere kun får adgang til de services og data, som aftager må modtage.

DFDG er som led i omlægningen til nye forretningsdomæner ved at omlægge services fra SOAP (WCF) til REST/Json/WebApi. I første fase er det kun services i de nye forretningsdomæner, som overgår til REST.

Services i DFDG kan logisk opdeles i fire typer:

  1. Forretningsservices

    1. Disse services foretager en forretningshandling, som kan resultere i en eller flere registreringer af data i DFDG, men også resultere i kald til andre systemer. Sådanne services er typisk tænkt som del af en specifik forretningsgang.

  2. Dataservices

    1. Disse services arbejder direkte på en enkelt entitet og stiller typisk et CRUD (Create, Read, Update og Delete) interface til rådighed. Read operationen er typisk stillet til rådighed via den brede PersonStatusService eller mere målrettede status-services, der returnerer mange centrale data omkring borgeren, og Delete operationen er i flere tilfælde udeladt men understøttet som en blød sletning via Update operationen.

  3. Hændelsesservices

    1. Disse services returnerer data om hændelser, som udsendes via WSRM køen i DFDG. WSRM køen er en hændelseskø for hver aftagertype (dvs. organisation, forretningsenhed, osv.), f.eks. et Jobcenter eller en Kommune. Hændelseskøen underretter aftagerne om, hvilke hændelser der kan være relevante for denne aftager.

  4. Infrastrukturservices

    1. Disse services er en del af rammeværket og understøtter f.eks. hændelseskøen, logning, sikkerhed eller andet.

Webservicekatalog

DFDG tilbyder en række webservicekataloger med et antal webservices i hver, som kan tilgås af eksterne applikationer.

Der findes i dag:

  • Omkring 230 webservices, der hver tilbyder en eller flere operationer

Hver service underordnes et versionsnummer. Versionsnummer tælles op for hver servicegeneration. Beskrivelse af de enkelte services kan findes her:

https://starwiki.atlassian.net/wiki/spaces/FYS/pages/1638408/DFDG+Services

Hovedkataloget i DFDG (classic) er PjakTass, hvor de fleste webservices fremadrettet oprettes. Derudover er der en række mindre kataloger, hvoraf en del forventes nedlukket med tiden. PjakTass blev i sin tid oprettet for at understøtte Pilot Jobcentrenes A-kasse Kommunikation (PJAK) samt Tilmelde, Afmelde og Status Service (TASS) i både kommuner, a-kasser og på Jobnet.

Servicekatalog

Beskrivelse

DFDG (classic)

Moderniseret DFDG (afsluttet eller i gang)

PjakTass

Hoved webserviceskatalog med services til både kommuner og a-kasser. Her er mulighed for at registrere bla. fravær, planer, aktiviteter, ledighed, osv.

X

 

JobnetPjakTass

Service målrettet Jobnet.

X

 

BatchLogService

Service, som anvendes til overvågning af alle batchjobs.

X

 

JobSearch

Den selvstændige del af det moderniserede DFDG, der udstiller cv-oplysninger og workflows i tilknytning til cv-området. Udstilles som REST snitflader.

 

X

Taxonomy

Klassifikationer for bl.a. stillingsbetegnelser baseret på ESCO-klassifikationen. Udstilles som REST snitflader.

 

X

SearchService

Person- og virksomhedssøgning.

X

 

Ydelsesudstilling

Den selvstændige del af det moderniserede DFDG, bl.a. udstilling af oplysninger fra STAR's ydelsesregistre. Og indeholder oplysninger fra a-kasserne om bl.a. dagpengekort og belægninger.

 

X

Borgerkommunikation

Den selvstændige del af det moderniserede DFDG, der indeholder kommunikation generelt herunder mellem myndigheder og med borger.

 

X

VisiteringOgStatus

Den selvstændige del af det moderniserede DFDG, der håndterer grundlæggende data om borgers kontaktgruppe (målgruppe), visitation, fravær og tilmeldeforhold m.v. Endvidere frontend til det moderniserede Jobnet og det moderniserede JobAG.

 

X

Kontaktforløb

Den selvstændige del af det moderniserede DFDG, der håndterer oplysninger om frister for selvbooking af samtaler i jobcenteret, indkaldelser til samtaler i a-kasser og jobcentre og selvbookede samtaler samt afholdte samtaler. Endvidere frontend til det moderniserede Jobnet.

 

X

Borgerindsats

Den selvstændige del af det moderniserede DFDG, der håndterer Min Plan, aktiviteter/tilbud borger deltager i, krav til jobsøgning, oplysninger om kontrakt efter integrationsloven samt oplysninger om rehabiliteringsforløb. Endvidere frontend til det moderniserede Jobnet.

 

X

Komposit

Den selvstændige del af det moderniserede DFDG, der håndterer udstilling (læsning og opdatering) af oplysninger, der datamæssigt hører til andre forretningsdomæner, herunder på tværs af forretningsdomæner. Endvidere frontend til det moderniserede Jobnet.

 

X

Virksomhedsindsats

Den selvstændige del af det moderniserede DFDG, der håndterer jobordrer vedr. bl.a. ordinære job, arbejdsgiveres cv-søgning, ansøgning om oprettelse af virksomhedsrettede tilbud m.v. Endvidere frontend til det moderniserede Jobnet og det moderniserede JobAG.

 

X

Match

Den selvstændige del af det moderniserede DFDG, der håndterer cv-søgning, match mellem borger og virksomhed. Endvidere frontend til det moderniserede Jobnet og det moderniserede JobAG

 

X

EksterneData

Den selvstændige del af det moderniserede DFDG, der håndterer udstilling af data fra eksterne kilder og håndterer opdateringer fra CVR og CPR.

 

X

EksternKommukation

Den selvstændige del af det moderniserede DFDG, der håndtere bl.a. push af webservicebeskeder til eksterne aftagere

 

X

 

Webservices, der tilgås af eksterne aftagere og af VITAS, JobAG og Jobnet er beskrevet i STAR’s webservice WIKI: https://starwiki.atlassian.net/wiki/spaces/FYS/pages/1638408/DFDG+Services

Forretningslaget

Forretningslaget indeholder forretningskomponenter for de forskellige applikationer. Forretningslaget kan kalde andre services via serviceagenter.

DFDG er opdelt i en række applikationsmoduler, som har hver sine egne forretningsmoduler. Applikationsmodulet PjakTass er f.eks. opdelt i ca. 75 forretningsmoduler med hvert sit ansvar.

Forretningsmodulerne foretager forretningsmæssig validering af kaldene, og der returneres fejl. Alle forretningsfejl er nummereret. Fejl kan findes ud fra kodeliste i CodeListService.

Batchjobs

DFDG indeholder en del forretningslogik, som afvikles som batchjob. Afviklingen for DFDG er omfattende, og der afvikles mere end 70 batchjob, hvoraf hovedparten afvikles alle ugens dage.

Beskrivelserne af DFDG batchjobs er fordelt på:

Datalaget

Dataadgangslaget i DFDG håndterer helt klassisk adgangen til databaser og eksterne services og tilbyder et abstraktionslag mod data/services, så forretningslaget kan anvende og gemme data uafhængigt af kilden.

Data access

Under DFDG opsamles data i en række databaser. De enkelte DFDG databaser anvender alt overvejende Stored Procedures som adgang til tabeller og data. Hoveddatabasen under DFDG (classic) er BrokerServices. Denne indeholder mange hundrede Stored Procedures.

Service agents

DFDG kalder eksterne services, her kan kort nævnes:

Services

Beskrivelse

SMS Gateway

Afsendelse af SMS beskeder – sendes via NemSMS

E-Mail

Afsendelse af E-mails

Jobnet Services

CV- og jobdata via en webservice, som bl.a. tilgås af DFDG m.fl.

Ungedatabasen

Synkronisering af hændelser fra Ungedatabasen

BatchLog

Service til batchlog overvågning



Miljøer

Følgende er en kort introduktion til de anvendte miljøer.

Produktionsmiljø

DFDG eksekveres i dag i en webfarm med en række webservere og et database-cluster som illustreret på følgende:

Figur 5: Driftsarkitektur (produktion)

Serverne er Microsoft Windows Baserede og anvender følgende serversoftware:

  • Windows Server

  • SQL Server 

Miljøet afvikles i en to-center drift konfiguration. Miljøet kører samtidig i begge centre med fælles kapacitet.

Følgende observeres omkring to-center konfigurationen:

  • Data er placeret i et SAN, der er fuldt redundant.

  • AD er redundant ved, at hver AD Server står i hvert sit driftscenter-site.

  • SQL Cluster er redundant via en active-passive konfiguration.

  • SQL serverne for henholdsvis produktionsmiljøet og præ-produktion er placeret i hvert sit driftscenter-site.

  • Web servere er redundant ved at disse er jævnt fordelt på hvert driftscenter-site.

Driftsleverandøren er KMD på driftsaftale indgået gennem Statens IT.

Testmiljø

Internt og eksternt rettede testmiljøer hostes hos KMD på driftsaftale indgået gennem Statens IT. Testmiljøerne indeholder både DFDG, Jobnet og andre af STAR’s løsninger.

Der tilbydes en lang række miljøer, som er opdelt i forhold til de forskellige spor og test pass, som koden løber igennem. Det er miljøer til:

  • Kundetest

  • Ekstern integrationstest

  • Intern integrationstest

  • Leverandørtest

  • Udviklingstest

DFDG releases til de enkelte miljøer med faste intervaller eller efter behov, afhængigt af miljø.

Anvendte teknologier og værktøjer

Løsningen er Microsoft baseret og vedligeholdes for det væsentligste med Microsoft standardværktøjer, fra Microsoft Web Platformen.

Udviklingen foregår primært med anvendelse af:

  • Visual Studio

  • Github

Og ved anvendelse af følgende teknologier:

  • NET Framework

  • WCF

  • EntityFramework (minimalt)

  • T-SQL Stored Procedures (hovedpart)

Samt følgende væsentlige .NET biblioteker:

  • Log4net

Data- og trafikmængder

Datamængder

Der registreres årligt en lang række data i DFDG. Datamængden kan ses som en funktion af antallet af personer, som er i berøring med beskæftigelsessystemet. Nedenfor er angivet antallet af berørte personer og antal fuldtidspersoner fordelt på en række af de målgrupper, der behandles oplysninger om i DFDG.

Data samles i DFDG’s underliggende databaser, primært BrokerServices databasen. Den samlede datamængde i produktionsmiljøet er:

  • DFDG databaser: ca. 430 GB data

  • DFDG programværk: ca. 500 MB filer

DFDG indeholder data om ca. 5.000.000 borgere.

Trafikmængder

Samlet set gennemføres dagligt ca. 9-13 mio. servicekald mod DFDG og nye forretningsdomæner, og trafikken forventes at være stigende.