Indhold
Applikationsdesign
VITAS løsningen er udviklet som en lagdelt applikation som adskilles i tre lag og er kodet i C# samt Javascript. VITAS har egen database, udstiller services og kalder services i bl.a. DFDG.
Nuværende arkitektur
Som følge af LAB-loven i 2018, hvor VITAS blev udvidet med 5 ordninger er den nuværende arkitektur opdelt i “gammel VITAS indeholdende de gamle ordninger”, som benytter Angular JS og “ny VITAS med de 5 nye ordinger”, som er udviklet i Angular 15.1.5.
Præsentationslag
Dette lag indeholder de enkelte websider i løsningen konstrueret ved hjælp af Microsoft ASP.MVC version 5 og AngularJS. Fleksjob, Mentor, Hjælpemidler, Personlig Assistance samt Jobrotation sider er kodet i Angular 15.1.5. Her ligger også stylesheet for løsningen. Websiderne konstrueres ud fra en frontend guide der definerer standard brug af komponenter.
Viewmodellen i det anvendte MVC pattern målrettes præsentationen, og konstrueres ud fra de generelle entiteter i Entitets laget som går på tværs af de øvrige lag i løsningen.
Præsentationslaget er opbygget som et antal SPA applikationer (Single Page Application), der alle er bygget over en MVC webside.
MVC controllere
Håndtering af sikkerhed og rolle adgang på de enkelte views.
Controllerne udfører ingen dataoperationer, som i et almindeligt MVC projekt, de genererer den HTML der bruges, hvor Angular efterfølgende udfylder siden med data fra API controlleren.
API controllere
Henter data og gemmer data.
Model validering.
Common services
Generelle services der bruges på tværs af areas.
Area services
Services der bruges på det enkelte area. Hvert area kan indeholde flere services, der hver behandler et underområde.
Modeller
Håndtering af data annotations.
Giver adgang til intellisense på views.
Databinding mellem Angular og Modellen.
Forretnings- og servicelag
Dette lag samler de data, der skal bruges for at understøtte præsentationslaget. Dette gøres ved at kalde de nødvendige services for at opsamle data. Desuden implementeres relevant forretningslogik her.
Datalag
Datalaget er bygget op omkring Entity Framework. Der benyttes Code First med Migrations. Desuden er selve Entity Framework pakket ind i et repository pattern.
Entity Framework Code First
Entity Framework (EF) supporterer to måder at lave modeller på: Model First og Code First. Vi har valgt at bruge Code First. Det betyder, at vi definerer vores databasemodel som POCO klasser, hvor vi bruger dataannotations til at fortælle EF, hvordan vi ønsker, at mapningen fra POCO til database skal foregå.
Entity Framework Migrations
Til generering af database objekter bruges EF Migrations. Migrations ligger som kode i løsningen, hvor der til alle ændringer i EF model klasser laves en Migration som beskriver de ændringer, der skal foretages i DB på baggrund af EF model ændringer. Denne tætte kobling af EF model og DB ændringer gør, at arbejdet med at sikre, at alle har samme version af databasen lettes betydeligt. Desuden bruges Migrations også i forbindelse med deploy. Når applikationen starter tjekkes der automatisk for om alle Migrations er kørt på databasen og manglende Migrations bliver kørt på.
Repository
Alle EF model klasser er wrappet i et repository pattern. Dette er gjort af følgende årsager:
Isolere datalaget for at understøtte unit testing.
Centralt vedligehold af regler og logik
Separation af forretningslogik og datalogik.
DataAnnotations
DataAnnotations er en nem og overskuelig måde at tilføje regler/validering til objekter eller metoder.
Der er udviklet en række DataAnnotations som understøtter brugen af AngularJS på klienten. Det betyder, at der foruden validering på serveren også sker en validering på klienten, hvor udvikleren ikke skal bekymre sig om detaljerne, men bare huske at dekorere sine metoder med de valideringer, der ønskes.
Snitflader
Udover egne data anvender VITAS også eksterne snitflader. Den primære snitflade er mod Det fælles datagrundlag (DFDG).
Dette er illustreret på følgende figur:
Følgende services anvendes:
DFDG
PersonStatusService for at hente stamoplysninger omkring borgeren.
Virksomhedsindsats.JobordreService for at hente og sende oplysninger om jobordre (oprettes for ansøgninger og bevillinger).
Borgerindsats.AktivitetService for at hente aktiviteter på borger.
SustenanceHistoryService eller Ydelsesudstilling.ForsoergelseshistorikService for at hente forløb (forsørgelseshistorik) på borger.
JobcenterService for at hente og opdaterer data om jobcentre i løsningen.
CodelistService for at hente relevante kodelister til brug af ovenstående services.
VITASNotificationService for at opdatere DFDG med oplysninger om ansøgninger og bevillinger (ophør/forlængelser), der er modtaget og oprettet i VITAS.
ActivityService for at hente, hvor mange der er i en af de omfattede ordninger til brug for rimelighedkravet/forholdskravet
BorgerKommunikation til at hente generelle stamoplysninger om en borger, bl.a. fra cpr, men også kontaktpersoner, jobcenter, a-kasse m.m.
TaxonomyService til at hente stillingsbetegnelser
EksterneData til at hente kodelister
UnemploymentBenefitsAccountService for at hente tællere for dagpengeforbrug, indplaceringsdato, referenceperiode m.v. som a-kasserne opgør
CVR – Virksomhedssøgning og opslag af CVR data
CVR System til System for at hente cvr-data fra CVR’s ElasticSearch snitflade
ADFS
Når en bruger tilgår løsningen gennemføres der autentificering mod Kommunens ADFS. Fra ADFS integrationen hentes der relevante oplysninger som stemples i databasen i User tabellen.
AdresseWebService (AWS)
For at kunne knytte adresser for virksomheder til korrekt jobcenter/kommune slås adresser op i AWS-suiten http://www.aws.dk/. Dette for at verificere, at adresse er korrekt og knytning til korrekt postnummer/kommune kan gennemføres.
Nemlogin
Der kan logges på løsningen via Nemlogin. Ved login afgøres det, om brugeren har administrator rolle for hele cvr-nr. og dermed har rettigheder til at se oplysninger for alle p-numre underlagt CVR-nummeret. Såfremt brugeren kun har privilegium for enkelte p-numre for et CVR-nummer begrænses visningen til disse p-numre. Har brugeren ingen rettigheder opsat for adgang til VITAS for CVR- eller P-nummer, vises vejledning for brugeren.
Virk.dk
Løsningen kan tilgås via virk.dk via Nemlogin eller via iframe fra https://VITAS.bm.dk. Der hentes og vises oplysninger om p-numre knyttet til cvr-nummer, som brugeren, der er logget på, er tilknyttet.
Google DNS lookup
Der er etableret integration til Google DNS lookup for at kontrollerer om en e-mailadresse der indtastes i løsningen er valid.
Systemer med stiplet er kun med i en fremtidig version af VITAS:
eIndkomst – hent borgeres seneste ansættelser/lønindberetninger.
Integration til undervisningsministeriets undervisningsdata systemer. Easy A eller Easy P for at hente oplysninger om uddannelsesaftaler.
Input/Output Management Service (IOMS)– service der kan udsende dokumenter/tekster via flere forskellige kanaler: post, digital post, e-mail og SMS.
På servicen benyttes metoderne:
CreateLetter – Metoden opretter et brev i IOMS, via et bestemt id, som svarer til en skabelon angivet i IOMS løsningen. Når brevet er oprettet svares der tilbage at brevet er lagt på IOMS køen.
GetLetterStatus – IOMS kører et bathjob hvert x minut for at følge op på statussen. VITAS kalder denne metode for at opdatere status på brevet i VITAS.
Som det ses af ovenstående kan CVR data hentes fra enten DFDG eller direkte fra CVR registret.
Miljøer
VITAS har egne dedikerede miljøer. Serverne er Microsoft Windows Baserede, og anvender følgende serversoftware:
Windows Server 2012R2
SQL Server 2016
Driftsleverandøren er KMD på driftsaftale indgået gennem Statens IT.
Produktionsmiljø
Produktions- og præproduktionsmiljøer er identiske for at kunne udføre miljøsikring samt performancetest med sammenlignelige resultater. Specifikation af storage-behov er ligeledes identiske for at kunne foretage dataløft fra produktionsmiljø til præproduktionsmiljø, hvis det findes nødvendigt af test eller fejlsøgningshensyn på et tidspunkt.
Løsningen kører på to webservere og én databaseserver. Databaseserveren kører ikke clustered.
Systemet kan sende e-mails, hvis der er adgang til en mailserver, som der kan sendes fra. Systemet anvender SMTP.
Testmiljø
Testmiljøet kører hos udviklingsleverandøren på to webservere og en database-server.
Teknologier og værktøjer
Løsningen er Microsoft baseret og vedligeholdes for det væsentligste med Microsoft standardværktøjer.
Løsningen er udviklet i:
NET i 4.7.2
MVC 5
Entity Framework med Code First og Migrations
WCF
Følgende Microsoft værktøjer anvendes ved udviklingen:
Visual Studio 2022 Professional / Premium Edition
Github
Derudover anvendes følgende serversoftware:
SQL Server 2016
Windows Server 2012R2
Samt følgende væsentlige .NET biblioteker:
log4net
Og følgende væsentlige web biblioteker:
jquery 2.1.4
AngularJS 1.4.8
Angular 15
Data- og trafikmængder
Datamængder
Påbegyndte ansøgninger | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 |
Løntilskud, Virksomhedsstatistik og Voksenlærlinge, anslået | 2.500 | 56.000 | 200.000 | 200.000 | 220.000 | 220.000 |
Fleksjob, Mentor, Hjælpemidler, Personlig assistance og Jobrotation, anslået | 30.000 |