Skip to content

Gebeurtenistabellen ​

Bij Gebeurtenistabellen kiest u welke Business Central-tabellen gebeurtenissen publiceren, welke velden in de JSON-payload van elke gebeurtenis terechtkomen, en welke gebeurtenistypen daadwerkelijk worden geactiveerd. Open het vanuit de actie Event Tables in Event Bridge-instellingen, of zoek in Business Central naar Event Tables.

Lijst met Event Tables met Customer, Item, Project en Vendor geregistreerd met verschillende gebeurtenistypen ingeschakeld

Een tabel toevoegen ​

  1. Kies in Event Tables voor Add Table.

  2. Zoek de tabel waarvoor u gebeurtenissen wilt publiceren (bijv. "Customer", "Sales Header") en selecteer deze — dubbelklik op een regel, of vink er meerdere aan en kies Add Table om er meerdere tegelijk toe te voegen.

    Dialoogvenster Select Event Table met tabellen zoals Location, G/L Account en Customer om toe te voegen

    Verwacht resultaat: de tabel verschijnt in de lijst met 0 actieve velden en elk gebeurtenistype uitgeschakeld. Er worden nog geen gebeurtenissen verzonden — u moet hieronder nog velden toevoegen en ten minste één gebeurtenistype inschakelen.

Velden aan de payload toevoegen ​

  1. Klik door op de naam van de tabel in Event Tables om de Event Card ervan te openen.
  2. Kies in het onderdeel Fields voor Add Field.
  3. Selecteer de velden die u wilt opnemen — de lijst toont het nummer, de naam, de bijschrift, het type van elk veld, of het deel uitmaakt van de primaire sleutel, en de relatietabel indien van toepassing. Velden van de primaire sleutel en FlowFields worden visueel gemarkeerd, zodat u ze in één oogopslag herkent. Kies Add Field om uw selectie toe te voegen.

Elk toegevoegd veld krijgt een Key Name — de eigenschapsnaam waaronder het in de JSON-payload verschijnt — automatisch gegenereerd op basis van de bijschrift van het veld (alleen letters, cijfers, underscore en koppelteken). Wijzig deze als u een andere JSON-sleutel wilt; namen moeten uniek blijven binnen de gebeurtenis van die tabel en mogen alleen diezelfde tekens gebruiken.

Een FlowField die op deze manier wordt toegevoegd, wordt ook automatisch gemarkeerd als Ignore For Changes, aangezien het herberekenen ervan enkel om een wijziging te controleren kostbaar is — zie Filteren welke wijzigingen worden gepubliceerd voor de reden, en wanneer u dit weer zou willen uitschakelen.

Sommige velden verwijzen naar de primaire sleutel van een andere tabel (zichtbaar als Relation Table Name in de veldkiezer) — voor deze velden kunt u ook velden ophalen uit het gerelateerde record, niet alleen de sleutel zelf.

  1. Kies bij een veld met een relatie voor Add Related Field.

  2. Kies velden uit de gerelateerde tabel op dezelfde manier als bij het toevoegen van velden hierboven.

    Verwacht resultaat: de gerelateerde velden verschijnen ingesprongen onder hun bovenliggende veld in de lijst, en zijn genest onder de sleutel van dat veld in de JSON-payload — bijvoorbeeld velden die zijn toegevoegd onder een relatie "Sell-to Customer No." verschijnen genest onder de sleutel van dat veld, niet plat ernaast. Controleer de exacte vorm met Berichtvoorbeeld.

Gerelateerde velden worden live opgezocht, door de huidige waarde van het bovenliggende veld te vergelijken met de primaire sleutel van de gerelateerde tabel op het moment dat de gebeurtenis wordt geactiveerd — ze worden niet redundant opgeslagen. Als er op dat moment geen overeenkomend record bestaat, wordt de geneste sleutel gewoon weggelaten uit de payload in plaats van leeg te worden verzonden.

Een gerelateerd veld maakt nooit deel uit van de vraag of een Modify- of Rename-gebeurtenis überhaupt wordt geactiveerd — het bevindt zich op een andere tabel dan degene die op wijzigingen wordt gecontroleerd, dus er valt niets te vergelijken. De optie Ignore For Changes (zie hieronder) staat automatisch aangevinkt en is vergrendeld — u kunt deze niet uitvinken, anders dan bij een veld op het eerste niveau. Gerelateerde velden bestaan puur om de payload nuttiger te maken zodra een gebeurtenis om een andere reden wordt geactiveerd, niet om er zelf een te veroorzaken.

Event Card voor de tabel Project met de gerelateerde velden No./Name/SearchName van Bill-toCustomerNo genest eronder

Gebeurtenistypen inschakelen ​

Schakel in de groep Event Subscriptions van de Event Card elke combinatie in van:

  • Insert — er is een nieuw record aangemaakt.
  • Modify — een bestaand record is gewijzigd.
  • Rename — de primaire sleutel van een record is gewijzigd.
  • Delete — een record is verwijderd.

U hebt ten minste één toegevoegd veld nodig voordat een van deze effect heeft. Als er velden bestaan maar geen gebeurtenistype is ingeschakeld, toont Business Central een herinneringsmelding rechtstreeks op de kaart. Omgekeerd schakelt het verwijderen van alle velden uit een tabel automatisch alle vier gebeurtenistypen weer uit.

Include Previous Values (alleen relevant wanneer Modify of Rename is ingeschakeld) bepaalt of die gebeurtenissen een before/after-vergelijking van de waarde van elk veld bevatten, of alleen de huidige (after) waarden op zich — vergelijkingspayloads zijn ongeveer dubbel zo groot, dus laat dit uitgeschakeld als uw integratie niet hoeft te zien wat er is veranderd, alleen dát er iets is veranderd.

Filteren welke wijzigingen worden gepubliceerd ​

Insert Filter en Modify Filter op een veld (alleen velden op het eerste niveau — niet gerelateerde/detailvelden, en niet Media-/MediaSet-velden) beperken wanneer dat gebeurtenistype wordt geactiveerd, met behulp van de standaard Business Central-filtersyntaxis (bijv. >100, A|B, <>'') geëvalueerd tegen de waarde van dat veld op het moment van de gebeurtenis.

Als u filters instelt op meer dan één veld, moeten ze allemaal overeenkomen — ze worden gecombineerd als EN, niet OF. Een tabel zonder ingestelde filters activeert altijd zijn gebeurtenissen, ongefilterd.

Gebruik Berichtvoorbeeld om te controleren of een specifiek record momenteel aan uw filters voldoet (weergegeven als ✅/❌) voordat u er in productie op vertrouwt.

Ignore For Changes werkt anders: in plaats van te filteren op de waarde van een veld, sluit het het veld uit van de vergelijking die Business Central gebruikt om te bepalen of een Modify- of Rename-gebeurtenis überhaupt moet worden geactiveerd. Vink dit aan voor een veld dat vanzelf verandert (een aanraaktijdstempel, een berekende status, iets dat niet relevant is voor uw integratie) en een wijziging in alleen dat veld activeert de gebeurtenis niet meer — maar de huidige waarde van het veld wordt nog steeds verzonden wanneer een wijziging in een ander, niet-genegeerd veld de gebeurtenis wél activeert. Insert- en Delete-gebeurtenissen worden hierdoor niet beïnvloed, aangezien geen van beide sowieso vergeleken wordt met een vorige waarde. Het is bovendien alleen bewerkbaar op velden van het eerste niveau — bij een gerelateerd veld staat het altijd aangevinkt en vergrendeld, aangezien gerelateerde velden sowieso nooit deel uitmaken van die vergelijking.

Diezelfde vergelijking is de reden waarom Add Field automatisch Ignore For Changes aanvinkt voor elke FlowField die u toevoegt (alleen velden op het eerste niveau, niet gerelateerde/detailvelden): het herberekenen van een FlowField enkel om te zien of deze is veranderd, zou bij elke opslag van de tabel gebeuren, niet alleen wanneer een gebeurtenis daadwerkelijk wordt geactiveerd, en voor een FlowField die optelt of telt over veel gerelateerde records is dat een reële, herhaalde kost. Het wordt nog steeds normaal berekend — één keer — wanneer een wijziging in een ander veld een gebeurtenis activeert en de payload daadwerkelijk wordt opgebouwd. Vink dit alleen uit als u specifiek wilt dat een wijziging in alleen die FlowField een gebeurtenis activeert; laat anders de standaardinstelling ongewijzigd.

Een tabel of veld verwijderen ​

  • Verwijder een regel in het onderdeel Fields om te stoppen met het verzenden van dat veld — alle gerelateerde velden die eronder genest zijn, worden er samen mee verwijderd.
  • Verwijder een tabel uit Event Tables om volledig te stoppen met het publiceren van gebeurtenissen ervoor, inclusief alle geconfigureerde velden ervan.