April 2011 tot december 2011 - Een database systeem voor het integreren van eindgebruikers gegevens in het applicatie landschap. Klanten leveren informatie aan over eindgebruikers in een veelheid van formaten, vaak in zeer bedenkelijke data kwaliteit. Het systeem importeert deze gegevens zodat ze doorzocht kunnen worden en houdt historie van deze gegevens bij.

Tags:
C#.NET - SQL - SQL Server - SQL Server Reporting Services - WCF - Regular Expressions

Situatie

Een alarmcentrale bedient vele klanten, die een service overeenkomst met hun klanten (eindgebruikers) hebben. De alarmcentrale verzorgt veelal de feitelijke service, en is daarbij voor het vaststellen van de dekking afhankelijk van de informatie die door de klant is aangeleverd. De informatie wordt aangeleverd via verschillende kanalen en in verschillende formaten, en er mankeert veel aan. Er moet dus veel gevalideerd en geconverteerd worden, en om alle mogelijke situaties af te dekken moet het systeem zeer flexibel instelbaar zijn. Bovendien kan er gerekend worden op veel data wat een efficiënt database ontwerp vergt.

Taken

Mijn taken omvatten de volledige implementatie van het systeem, van solution design tot database ontwerp en implementatie. Daarnaast moesten de requirements worden vastgesteld op basis van bestaande import inrichtingen, business gaps en aanvullende functionele verzoeken van gebruikers.

Aanpak

Na het inzichtelijk maken van de systeemeisen ben ik begonnen met het opzetten van een database structuur, waarbij ik een duidelijk onderscheid heb gemaakt tussen gegevens waarin gezocht moet kunnen worden en gegevens die enkel door het systeem geretourneerd moeten worden. Al snel bleek de verwerking van grote imports de bottleneck van het systeem te zijn, omdat bij het aansluiten van nieuwe gegevens aan bestaande historie zware bewerkingen op de data nodig waren. Door voor het import proces gebruik te maken van bulk imports en stored procedures in combinatie met de juiste indexen kon ik het proces voldoende snel maken.

Voor het aanbieden van import bestanden heb ik een transportlaag ontwikkeld waardoor bestanden aangeleverd via e-mail, ftp, etc. gekanaliseerd kunnen worden naar de juiste import definitie. Na het voltooien van een import wordt een rapport verstuurd over de verloop van de import. Dit rapport bevat onder meer een bestand met afgewezen records voorzien van de reden van afwijzing, zodat de klant zijn verantwoordelijkheid voor het juist aanleveren van gegevens kan nemen.

Voor het valideren van gegevens kunnen, naast de voor de hand liggende validties, regular expressions en dynamische C# expressies gebruikt worden. Voor de laatst genoemde kan ondersteuning van een ontwikkelaar nodig zijn.

De in het systeem beschikbare gegevens worden beschikbaar gesteld voor integratie in de bedrijfsprocessen middels een webservice. Ook heb ik een aantal rapporten ontwikkeld voor het raadplegen van de gegevens voor bijvoorbeeld de afhandeling van klachten op het gebied van dekking.

Voor het beheer gedeelte heb ik gebruik gemaakt van mijn AutoGui project, een gedrag-gebaseerde bibliotheek voor het genereren van een user interface. Zodoende kostte het weinig tijd om de beheer schermen te bouwen en te onderhouden.

Resultaat

Het systeem staat volop in productie en levert voldoende flexibiliteit om de benodigde imports in te richten. Door de grote mate van flexibiliteit zijn er veel opties in te stellen wat het beheer niet eenvoudig maakt. Documentatie en scherm hints zorgen ervoor dat gebruikers er goed mee uit de voeten kunnen. De goede performance en het betrouwbare resultaat maken me als ontwikkelaar trots op dit systeem.