ServiceImplementation.cs
Beskrivelse av format for tjenesteimplementasjonen
Arbeidet med POC har føreløpig ikke konkludert angÄende bruk av denne filen. Vil jobbes videre med i MVP.
Overordnet
‘ServiceImplementation.cs’ er hovedgrensesnittet mellom Altinn Core runtime og foretningslogikken i tjenesten som kjĆører pĆ„ server.
Format
‘ServiceImplementation.cs’ implementerer grensesnittet IServiceImplementation som har fĆølgende metoder definert.
object CreateNewServiceModel();
Metode som oppretter nytt datamodell objekt basert pƄ den datamodellen som tjenesten definerer
void SetServiceModel(object model);
Metode som gjĆør at plattformen kan tilgjengeliggjĆøre en populert datamodell til tjenesteimplementasjonen
void SetContext(RequestContext requestContext, dynamic viewBag);
Metode som setter context informasjon til tjenesteimplementasjon
void SetContext(RequestContext requestContext, dynamic viewBag, ServiceContext serviceContext, StartServiceModel startServiceModel, ModelStateDictionary modelState);
Metode som setter context informasjon til tjenesteimplementasjon
Task RunServiceEvent(ServiceEventType serviceEvent);
Metode som trigger en tjeneste hendelse. Dette gjĆør plattformen ved spesielle tidspunkt og tjenesteutvikler kan da velge Ć„ kjĆøre forretningslogikk under dise hendelsene.
Hendelsene som er definert til nƄ er.
- BeforeRender
- Calculation
- Instantiation
- ValidateInstantiation
- Validation
- DataRetrieval
void SetPlatformServices(IPlatformServices platformServices);
TilgjengeligjĆør plattformtjenester.
ViewMetadata GetView(string viewID, UserActionType userAction);
Henter view. TODO: Vurder Ä fjerne dette nÄr man har konkludert om MVC Razor views skal støttes av plattformen.
Utvikling
Under opprettelse av en tjeneste vil en tom ServiceImplementasjonsklasse opprettes.
Hypotese: Tjenesteutvikler editerer pƄ denne filen via Altinn Studio eller Visual Studio Code
Forretningslogikk
Foretningslogikk implementeres i denne klassen eller andre relatert klasser som denne referer til. Det vil vƦre opp til utvikler Ƅ eventuelt skille kode ut i flere andre klasser.
Tjenester 3.0 oppretter egne klasser for forretningslogikk tilknyttet kalkuleringer, valideringer og instansiering.
Eksempel pƄ forretningslogikk