DDC BC/FO 12 juni 2019 - Aansturing Events met het Discovery Event Pattern

Woensdag, 12 juni 2019, door Martin Oomen

Design Patterns, wie gebruikt ze niet. Vaak gebruiken we ze zonder dat we het zelf weten. De discovery Pattern is er ook zo één.  Hoe werkt hij en waar is hij voor. Daar ging deze sessie over. De sessie werd gegeven door Martin Oomen. Martin is een Software ontwikkelaar bij Mysolution en is al 10+ jaar in het vak. Als je weet dat een ontwikkelaar een sessie geeft, wordt er een hoop code gepresenteerd. Zo ook deze keer.

Event Subscribers

Hoe handig zijn de nieuwe Event mogelijkheden die we sinds NAV2016 tot onze beschikking hebben. Subscriben op een functie en als het Event afgaat, snel en simpel iets aanpassen zonder dat we iets aan de standaard NAV code hoeven aan te passen. CodeUnit aanmaken voor Klant A. Een paar Events en klaar, we hebben Maatwerk zonder code aanpassing. Nog een CodeUnit voor Klant B en het werk is weer gedaan. Heerlijk werken die Events. Wat nou als klant C een paar functie nodig heeft van functies van Klant A, maar ook een paar van klant B? Gaan we hiervoor een 3e CodeUnit maken en functies kopiëren? Zou het niet makkelijker zijn als we aan de hand van instellingen kunnen aangeven welke Events er af moeten gaan bij welke klant cq. bedrijf?

Discovery Event Pattern

Voor bovenstaand probleem is Discovery Event in het leven geroepen. Een voorbeeld van een Discovery Event in NAV het Mijn berichten scherm (Page 1518).  Een lijst met instellingen die we aan en uit kunnen zetten.

Hoe werkt het?

Bij het openen van het Mijn berichten scherm, wordt er een Initialisatie Event aangeroepen. Alle functies die een regel aan het Mijn berichten scherm willen toevoegen schrijven zich in op het Initialisatie Event. En de rest gebeurt bijna automatisch. Lang leve Design Patterns.
Alle voorbeeld code is op basis van de Demo van Martin. Dit om voorbeeld code die ook te downloaden is makkelijker te doorgronden.

Inschrijven

Door in te schrijven op het Initialisatie Event, is het mogelijk om waarden aan de lijst toe te voegen.



Er worden twee Events toegevoegd, namelijk wanneer de kaart opent en wanneer het overzicht opent.

Hoe weet je wanneer het Event moet afgaan?

Nu we weten welke Events er zijn, blijft nog de vraag over wanneer laten we het Event afgaan. Als we niets doen, gaan de Events altijd af. We zullen er dus voor moeten zorgen dat o.b.v. een waarde in bovenstaande tabel we controleren of het Event aan of uit staat. Er is gekozen om dit te doen m.b.v. het actief vinkje. Dit kan per bedrijf aan of uit worden gezet.

Maar hoe vangen we dit nu af in het Event? Eigenlijk is dit heel simpel, in het Event gaan we opvragen in bovenstaande tabel of het vinkje aan of uit staat. Staat het vinkje aan, dan voeren we het Event uit, staat het niet aan, dan springen we uit de functie.


 
Martin had een EventSubscriber gemaakt op de OnOpenCustomerCard. Hierdoor gaat het Event af bij het openen van de Customer Card. Door in het Event als eerste een controle toe te voegen of het actief vinkje aanstaat, kan je bepalen of het Event moet doorgaan of stoppen. Deze functie doet niets anders dan met een GET het Event record ophalen en geeft daarna terug of het Event actief is.


 
Op deze manier kan je naar alle klanten dezelfde code uitleveren, maar per database/bedrijven verschillende onderdelen aan en uitzetten.

Tot slot

Eigenlijk spreekt het Discovery Event voor zich, maar toch is het handig om weer eens op deze functionaliteit te worden gewezen. Wat mij aanspreekt aan deze oplossing is dat er geen code aanpassingen nodig zijn om nieuwe Items toe te voegen. Als de ontwikkelaar netjes aan het pattern houdt, dan kan het bijna niet meer fout gaan en dat is toch wat we willen met software. Ik raad aan de voorbeeld fob van Martin te importeren en eens kijken of je zelf een 3e item kan toevoegen.

Verslag: Guido Robben
Foto's: Vincent van Rens

« Naar het overzicht

Events

12 juni 2019 - DDC Jaarevent 12 juni 2019
MeetinOffice, De Bleek 13, 3447 GV Woerden
Datum: 12 juni 2019
Meer informatie »

27 maart 2019 - Dynamics 365 BC Event, 27 maart 2019
Van der Valk Hotel, Bastion 73, 3905 NJ Veenendaal
Datum: 27 maart 2019
Meer informatie »

21 maart 2019 - DDC Dynamics 365 FO event, 21 maart 2019
Golfbaan Bentwoude, Boslaan 3, 2731 LD Benthuizen
Datum: 21 maart 2019
Meer informatie »


Nieuws

Dutch Dynamics Community - Nieuwsflits * Juni 2019
06 juni 2019
Lees bericht »

Dutch Dynamics Community - Nieuwsflits * Mei 2019
31 mei 2019
Lees bericht »

Dutch Dynamics Community - Nieuwsflits * April 2019
30 april 2019
Lees bericht »


Blog

DDC Rondetafel Werving en opleiding - Woerden 12 juni 2019
18 juli 2019
Lees blog »

DDC BC/FO-avond Woerden 12 juni 2019 - Algemeen
12 juni 2019
Lees blog »

DDC BC/FO 12 juni 2019 - Security architecture in Microsoft Dynamics 365 for Finance and Operations
12 juni 2019
Lees blog »

Wat is de Dutch Dynamics Community?

Ons doel is het delen van kennis en ervaringen rondom Microsoft Dynamics software.

We bieden de mogelijkheid aan alle Microsoft Dynamics Professionals om met elkaar in contact te komen en deel te nemen aan presentaties en discussies.

Laagdrempelig, onafhankelijk, diepgaand en altijd actueel.

Om iedereen op de hoogte te houden kun je je inschrijven voor een van onze nieuwsbrieven:

Schrijf je hier in voor de Business Central nieuwsbrief

Schrijf je hier in voor de Finance & Operations nieuwsbrief

Platinum sponsors


Gold sponsors

 

Sapphire sponsors


Silver sponsors


Club van 100

c100