December 2019 tot juni 2020 - Het uitbreiden van een data uitwisseling systeem en het bouwen van een adapter voor een specifieke externe API.

Tags:
.NET - SQL Server - MVC - EntityFrameworkCore - Scrum

Situatie

Het data uitwisseling systeem wordt dagelijks gevoed met imports vanuit verschillende systemen met fok administraties van varkenshouders. De verschillen tussen de import en de in de database aanwezige data worden bepaald en opgeslagen, waarbij ook historie bewaard blijft. Het systeem stelt een API beschikbaar voor externe partijen, en er is een adapter gebouwd om dagelijks wijzigingen naar een specifieke fok organisatie te sturen. Er is behoefte om een tweede adapter te bouwen, voor een andere fok organisatie. Aangezien deze organisatie aanzienlijk meer informatie nodig heeft, moeten er ook uitbreidingen komen op het datamodel, de verwerking van de imports en het aanmaken van de exports.

Taken

Het ontwerp en de bouw van de nieuwe adapter, waarbij de meeste tijd is besteed aan het bouwen van de communicatie. De API waarmee gecommuniceerd moet worden is oorspronkelijk gebouwd als backend voor een data invoer web applicatie waarin gezocht kan worden, een gevonden record kan worden bewerkt dat vervolgens kan worden opgeslagen of waarop de wijzigingen kunnen worden teruggedraaid. Ook invoer en verwijderen werken op soortgelijke wijze. Daarbij komt dat er met allerlei validaties rekening gehouden moet worden, en dat de volgorde van het aanbrengen van de wijzigingen zeer belangrijk is. Dit leidt tot een intensief communicatieproces dat bovendien zeer moeilijk te testen was. Naast deze communicatie moeten er tevens web portalen worden gebouwd voor gebruik door de support organisatie en door de gebruikers zelf, voor het instellen van rechten, en instellen van bepaalde mappings en het monitoren van de communicatie.

Tijdens dit project ben ik scrum-master geweest.

Aanpak

We zijn begonnen met het implementeren van een client voor de API, waarbij een specifieke serialisatie methode is gebouwd. Daarna zijn entiteiten toegevoegd of uitgebreid in de database en de ex- en import. Tegelijk zijn generieke classes gebouwd om de communicatie uit te voeren in de correcte volgorde. Omdat de test mogelijkheden op de werkelijke API beperkt waren, is er ook veel tijd gestoken in integratietests waarin zo veel mogelijk scenarios getest werden. In deze tests werden alleen de EntityFramework context en de API communicatie gemocked. Zodoende kon niet alleen de logica worden getest, ook kon zodoende duidelijk worden gemaakt hoe e.e.a. behoort te werken. Ook zijn de benodigde portalen gebouwd.

Resultaat

De werkzaamheden zijn met succes afgerond zodat de administraties in de backends synchroon gehouden kunnen worden met de administratie van de fok organisatie.