M365Con 2027 – gratis online conferentie · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Business Central-events versus triggers in AL: een timinggids voor ontwikkelaars

By ·

Leer Business Central AL-ontwikkeling beheersen door te begrijpen wanneer je triggers en event subscribers gebruikt voor maatwerkbedrijfslogica, validaties en boekingscontroles.

Automatically translated with AI from the original post. Read the English original

Cover: Dynamics 365 Business Central AL Development

Het onderscheid tussen triggers en events in Microsoft Dynamics 365 Business Central AL-ontwikkeling is essentieel voor het schrijven van heldere, onderhoudbare extensies. Het kiezen van het juiste uitvoeringsmechanisme zorgt ervoor dat je validatieregels op precies het juiste moment draaien, voorkomt het invoeren van foute gegevens en zorgt voor soepele cloudupdates, zonder de kernapplicatiecode te dupliceren.

Belangrijkste punten

De architectuur van maatwerklogica in Business Central

Wanneer je Dynamics 365 Business Central uitbreidt met Microsofts Application Language (AL), is code schrijven maar het halve werk. De echte uitdaging is bepalen waar en wanneer die code moet draaien. Of je nu een eenvoudig rewardniveauveld toevoegt aan een klantrecord of een complexe compliancecontrole afdwingt voordat een factuur wordt aangemaakt, de levensduur en stabiliteit van je extensie hangen af van de manier waarop je aansluit op het systeem.

Oudere ontwikkelmodellen moedigden ontwikkelaars vaak aan om native applicatiecode rechtstreeks te herschrijven. Als je wilde dat een controle draaide voordat een document werd geboekt, plaatste je je logica rechtstreeks in de kernboekingsroutine. Dat werkte tijdelijk, maar elke grote Microsoft-update werd een pijnlijk herstelproject. Moderne Business Central-extensieontwikkeling werkt met een modulair, app-gebaseerd model. In plaats van standaardroutines te herschrijven, gebruiken ontwikkelaars ingebouwde aansluitpunten, met name triggers en events, om maatwerklogica veilig naast de standaardapplicatiecode te verweven.

Triggers in AL ontrafeld

Een trigger is een aangewezen, vooraf gedefinieerde plek in een AL-object waar je code kunt schrijven die automatisch wordt uitgevoerd wanneer een specifieke actie plaatsvindt. Elk standaard- en eigen object, waaronder tabellen, tabelextensies, pagina's, paginaextensies, rapporten en codeunits, bevat deze ingebouwde punten.

Neem een praktijkvoorbeeld: je organisatie heeft een eigen Reward-ID-veld op het klantrecord toegevoegd. Wanneer een gebruiker een rewardniveau selecteert uit de keuzelijst, moet het systeem direct controleren of het klantaccount is geblokkeerd of dat secundaire kenmerken moeten worden bijgewerkt. Door de OnValidate-trigger op dat specifieke veld te gebruiken, wordt je code precies op het moment van de wijziging uitgevoerd.

Wanneer triggers gebruiken

Triggers zijn het beste in te zetten wanneer je bedrijfslogica uitsluitend hoort bij één object en de directe context ervan. Bijvoorbeeld:

Omdat triggers strak zijn gebonden aan hun hostobjecten, blijft lokale code makkelijk te vinden, te lezen en op de lange termijn te onderhouden.

Business Central-events en -abonnementen inzetten

Terwijl triggers lokale acties afhandelen, vragen bredere processen in meerdere stappen, zoals het boeken van verkooporders, het verzenden van voorraad of het genereren van financiële journalen, om een geavanceerdere aanpak. Je kunt je validatiecode niet zomaar midden in een omvangrijke boekingsroutine plaatsen zonder het extensiemodel te doorbreken.

Hier worden events en event subscribers onmisbaar. Zie een event als een officiële melding die door de standaardapplicatie van Business Central wordt uitgezonden. Het systeem kondigt belangrijke mijlpalen aan, zoals 'een record staat op het punt te worden ingevoegd' of 'een verkoopdocument staat op het punt te worden geboekt.' Je extensie kan naar deze meldingen luisteren met een event subscriber-procedure.

Wanneer Business Central het benoemde event activeert, wordt je geabonneerde procedure actief, voert je eigen regel uit en geeft vervolgens groen licht of stopt het proces met een duidelijke foutmelding. Belangrijk is dat je extensie de onderliggende boekingsengine nooit hoeft te kopiëren, plakken of herschrijven.

De kracht van timing: OnBefore versus OnAfter

Bij het bouwen van event subscribers in AL laten de naamconventies zien wanneer ze worden uitgevoerd. Het begrijpen van deze timing is cruciaal voor de betrouwbaarheid van het systeem:

Een regel die te laat draait, kan geen foutieve transactie meer voorkomen, terwijl een regel die te vroeg draait mogelijk de benodigde gegevens mist die pas in de standaardroutine worden berekend. Door je logica aan de juiste eventsignatuur te koppelen, voorkom je deze valkuilen.

Conclusie

Het in balans brengen van objecttriggers en event subscribers verandert de manier waarop je Business Central-extensies benadert. Door lokale triggers te gebruiken voor veldvalidaties en event subscribers voor processen die het hele systeem raken, zorg je ervoor dat je aanpassingen bestand blijven tegen cloudupdates en je omgeving snel en veilig blijft.

Wil je dieper ingaan op moderne applicatieontwerpprincipes en expertbesprekingen van architectuur horen? Luister de volledige aflevering van de M365 FM Podcast. Stem in om te ontdekken hoe cloudarchitecten en ontwikkelaars het Microsoft-ecosysteem optimaliseren voor succes in de praktijk!

Veelgestelde vragen

Wat is het belangrijkste verschil tussen een trigger en een event subscriber in AL?

Een trigger is een vooraf gedefinieerd uitvoeringspunt dat rechtstreeks in een specifiek AL-object (zoals een tabelveld of pagina) is ingebouwd, terwijl een event subscriber een afzonderlijke procedure in je extensie is die luistert naar gepubliceerde meldingen van de basisapplicatie of andere objecten, zonder de oorspronkelijke code te wijzigen.

Kan een event subscriber voorkomen dat een verkooporder wordt geboekt?

Ja, als je een 'on before'-event subscriber gebruikt die gekoppeld is aan het boekingsproces, kan je eigen code zakelijke voorwaarden beoordelen, een foutmelding geven en de transactie stoppen voordat de boekingsroutine de posten definitief maakt.

Wanneer moet ik een validatietrigger op een tabelveld gebruiken in plaats van een event subscriber?

Gebruik een validatietrigger op een tabelveld wanneer je bedrijfsregel strikt gekoppeld is aan de waarde van dat specifieke veld, bijvoorbeeld om te controleren of een aangepaste Reward ID bestaat of om ervoor te zorgen dat een gerelateerd statusveld direct wordt bijgewerkt na invoer door de gebruiker.

Waarom is de uitvoeringstiming cruciaal bij het schrijven van AL event subscribers?

De timing van de uitvoering bepaalt of je code draait vóór of ná het voltooien van een kernproces. Als je regel te vroeg draait, zijn de benodigde gegevens misschien nog niet ingevuld; draait hij te laat, dan verlies je de mogelijkheid om ongeldige transacties te blokkeren.

Dynamics 365 Dynamics 365 Business Central

Related articles

RSS