Overordnet løsningsdesign - Vitas

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.

 

image-20240528-055346.png

 

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

  • SQL Server

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:

  1. NET

  2. MVC

  3. Entity Framework med Code First og Migrations

  4. WCF

Følgende Microsoft værktøjer anvendes ved udviklingen:

  1. Visual Studio 2022 Professional / Premium Edition

  2. Github

Derudover anvendes følgende serversoftware:

  1. SQL Server

  2. Windows Server

Samt følgende væsentlige .NET biblioteker:

  1. log4net

Og følgende væsentlige web biblioteker:

  1. jquery

  2. AngularJS

  3. Angular

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