Rule Engine
Samenvatting
DAQS is *geen - verzameling hardgecodeerde controles. Het is een platform dat kennis uitvoert die is vastgelegd in configureerbare regels.
De Rule Engine vormt de generieke uitvoeringslaag van het platform. De engine leest validatieregels, voert de daarin vastgelegde logica uit op de geëxtraheerde bouwdata en levert de resultaten aan DAQS Assist of het dashboard.
De kennis over datakwaliteit bevindt zich daarmee niet uitsluitend in de software. Zij is vastgelegd in afzonderlijke regels die kunnen worden toegevoegd, aangepast en gegroepeerd zonder dat iedere wijziging een fundamentele aanpassing van de Rule Engine vereist.
Kernvraag
Hoe maakt DAQS kwaliteitskennis uitvoerbaar zonder iedere controle rechtstreeks in de software te programmeren?
Waarom dit belangrijk is
Kwaliteitseisen voor bouwdata zijn niet overal hetzelfde.
Landelijke standaarden stellen generieke eisen, organisaties hanteren aanvullende richtlijnen en afzonderlijke projecten kunnen weer eigen afspraken bevatten. Bovendien ontwikkelen deze eisen zich voortdurend. Nieuwe standaarden verschijnen, bestaande afspraken worden aangescherpt en klanten vragen om aanvullende controles.
Wanneer iedere controle rechtstreeks in de software zou worden geprogrammeerd, zouden de technische implementatie en de inhoudelijke kwaliteitskennis voortdurend met elkaar verweven raken. Iedere nieuwe regel zou dan mogelijk een nieuwe softwareversie, aanvullende regressietests en wijzigingen in bestaande functionaliteit vereisen.
DAQS kiest daarom voor een andere architectuur. De software die regels uitvoert is gescheiden van de domeinkennis die bepaalt wat gecontroleerd moet worden.
Ontwerpprincipe: scheid software van domeinkennis
Binnen DAQS wordt onderscheid gemaakt tussen de software die validaties uitvoert en de domeinkennis die bepaalt *wat - gevalideerd moet worden.
De Rule Engine vormt de uitvoeringslaag van het platform. De kennis over informatiestandaarden, kwaliteitscriteria en projectspecifieke eisen is vastgelegd in configureerbare validatieregels.
Deze scheiding maakt het mogelijk om beide onafhankelijk van elkaar te ontwikkelen. Nieuwe functionaliteit kan worden toegevoegd zonder bestaande validatieregels te wijzigen. Omgekeerd kunnen nieuwe kwaliteitsregels, standaarden of projecteisen worden geïntroduceerd zonder de Rule Engine fundamenteel aan te passen.
Hierdoor blijft het platform onderhoudbaar, uitbreidbaar en geschikt voor uiteenlopende organisaties, projecten en kwaliteitsstandaarden.
DAQS is geen verzameling hardgecodeerde controles. Het is een platform dat kennis uitvoert die is vastgelegd in configureerbare regels.
Kernuitleg
De Rule Engine voert regels uit op de JSON-data die eerder uit de bron is geëxtraheerd.
De engine bevat zelf geen inhoudelijke kennis over deuren, classificaties, informatiestandaarden of projectspecifieke afspraken. Zij verzorgt de technische uitvoering van de regels die aan haar worden aangeboden.
Een regel bevat de informatie die nodig is om één controle uit te voeren. De regel wordt opgeslagen als een JSON-bestand en bevat onder andere de beschrijving, configuratie en logica van de betreffende controle.
De kern van een regel is het filter. Dit filter bepaalt welke objecten of situaties in de dataset relevant zijn en welk resultaat uit de controle volgt. Binnen DAQS wordt dit filter geschreven in JSONata.
JSONata is daarmee de expressietaal waarmee de regel de geëxtraheerde JSON-data bevraagt. De taal kan objecten selecteren, waarden vergelijken, relaties volgen, voorwaarden combineren en resultaten samenstellen.
De Rule Engine leest de regel, voert het JSONata-filter uit en verwerkt het resultaat volgens de configuratie van de regel.
Analysetypen als containers van regels
Validatieregels worden niet uitsluitend als losse controles aangeboden. Binnen DAQS worden samenhangende regels gegroepeerd in een analysetype.
Een analysetype kan worden gezien als een container met regels die samen een bepaald kwaliteitsgebied, een standaard of een specifieke klantbehoefte afdekken.
Een analysetype kan bijvoorbeeld regels bevatten voor:
- een landelijke informatiestandaard;
- de kwaliteit van families;
- IFC-mapping;
- projectafspraken;
- organisatiespecifieke naamgeving;
- performance van een Revit-project.
De container bepaalt welke verzameling regels gezamenlijk beschikbaar wordt gesteld en uitgevoerd.
Hierdoor kan DAQS verschillende organisaties en projecten ondersteunen zonder voor iedere klant een afzonderlijke versie van het platform te onderhouden. Klanten krijgen toegang tot de analysetypen die voor hen relevant zijn. Wanneer aanvullende regels nodig zijn, kan een bestaand analysetype worden uitgebreid of een nieuw analysetype worden samengesteld.
Opbouw van de regeluitvoering
De werking kan op hoofdlijnen als volgt worden weergegeven:
Analysetype
│
├── Regel.json
├── Regel.json
├── Regel.json
│
▼
Rule Engine
│
├── leest de regelconfiguratie
├── voert het JSONata-filter uit
├── verwerkt de uitkomst
│
▼
Validatieresultaten
│
├── DAQS Assist
└── Dashboard
Het analysetype bepaalt welke regels worden aangeboden. De Rule Engine bepaalt hoe deze regels technisch worden uitgevoerd. De toepassing bepaalt vervolgens hoe de resultaten aan de gebruiker worden gepresenteerd.
Deze verantwoordelijkheden blijven bewust van elkaar gescheiden.
JSONata als filtertaal
JSONata vormt de technische kern van het filter binnen een regel.
De kracht van JSONata ligt in het direct kunnen bevragen en transformeren van JSON-data. Een regel kan bijvoorbeeld objecten selecteren op basis van hun type, eigenschappen, bovenliggende objecten of gekoppelde informatie.
Een JSONata-filter kan onder andere controleren:
- of een verplichte eigenschap aanwezig is;
- of een waarde voldoet aan een afgesproken patroon;
- of een classificatie overeenkomt met de categorie;
- of type- en instance-informatie consistent zijn;
- of een relatie naar een ander object aanwezig is;
- of meerdere voorwaarden gelijktijdig worden overtreden.
De Primer behandelt JSONata niet als programmeertaal of trainingsonderwerp. Het relevante architectuurprincipe is dat de inhoudelijke logica van een controle buiten de Rule Engine wordt vastgelegd en configureerbaar blijft.
Van regel naar resultaat
De Rule Engine voert regels uit, maar bepaalt niet zelf hoe de resultaten uiteindelijk worden gebruikt.
Dezelfde regeluitvoering kan resultaten leveren aan verschillende onderdelen van het platform.
Binnen DAQS Assist kunnen resultaten worden gebruikt om een modelleur direct inzicht te geven in afwijkingen binnen het actieve Revit-project.
Binnen het dashboard kunnen resultaten worden samengebracht tot analyses, overzichten en rapportages voor een bredere groep gebruikers.
De uitvoeringslogica blijft daarbij gelijk. Het verschil bevindt zich vooral in de context waarin de analyse wordt gestart en de manier waarop de resultaten worden gepresenteerd.
Praktijkvoorbeeld
Een nieuwe klant wil bouwdata controleren op twee bestaande informatiestandaarden. Daarnaast hanteert de organisatie enkele eigen afspraken voor classificaties en naamgeving.
De klant krijgt toegang tot twee bestaande analysetypen. Voor de aanvullende organisatie-eisen wordt een nieuw analysetype samengesteld.
In dit nieuwe analysetype worden de klantspecifieke regels als afzonderlijke JSON-bestanden opgenomen. Het JSONata-filter binnen iedere regel beschrijft welke objecten moeten worden geselecteerd en onder welke voorwaarden een afwijking wordt vastgesteld.
De Rule Engine hoeft hiervoor niet opnieuw te worden ontwikkeld. Zij voert de nieuwe regels op dezelfde manier uit als bestaande regels.
Alleen de betreffende klant krijgt toegang tot het nieuwe analysetype. Andere organisaties blijven werken met hun eigen combinatie van analysetypen en regels.
Hierdoor kan één platform verschillende kwaliteitskaders ondersteunen, zonder de software per organisatie te splitsen.
Belangrijkste inzichten
- De Rule Engine is de generieke uitvoeringslaag van DAQS.
- De engine bevat niet zelf alle kennis over bouwdata en kwaliteitsstandaarden.
- Domeinkennis wordt vastgelegd in configureerbare regels.
- Iedere regel wordt opgeslagen als een JSON-bestand.
- Het filter binnen een regel wordt geschreven in JSONata.
- Analysetypen groeperen samenhangende regels in een herkenbare container.
- Software en kwaliteitskennis kunnen onafhankelijk van elkaar evolueren.
- Dezelfde Rule Engine ondersteunt zowel DAQS Assist als het dashboard.
Relatie met DAQS en Elements
De Rule Engine vormt een kernonderdeel van DAQS.
De engine gebruikt de eerder geëxtraheerde JSON-data en voert daarop de regels uit die binnen een analysetype beschikbaar zijn. De uitkomsten vormen de basis voor validatie, explainability en rapportage.
DAQS Assist gebruikt deze resultaten binnen de Revit-omgeving. Het dashboard gebruikt dezelfde uitvoeringsprincipes om analyses en overzichten buiten de modelleringsomgeving beschikbaar te maken.
Elements staat los van de werking die in dit hoofdstuk wordt beschreven. Dit hoofdstuk behandelt uitsluitend de Rule Engine van DAQS en de manier waarop configureerbare validatieregels worden uitgevoerd.
Belangrijk om te onthouden
Binnen DAQS is de kennis gescheiden van de software. De Rule Engine verzorgt de uitvoering; de kennis over datakwaliteit ligt vast in configureerbare regels.
Open vragen
- Welke onderdelen van een regel bepalen de presentatie van een resultaat?
- Hoe worden versies van regels en analysetypen beheerd?
- Hoe worden afhankelijkheden tussen regels voorkomen of gecontroleerd?
- Welke informatie moet een regel bevatten om een resultaat volledig uitlegbaar te maken?
- Hoe worden regels getest voordat zij in een analysetype beschikbaar worden gesteld?