Extra documentatie toepasbare regels

In STTR-bestanden is het mogelijk om FEEL-expressies toe te voegen.

Wat is FEEL?

Feel staat voor 'Friendly Enough Expression Language' (meer informatie over FEEL is te vinden op What-is-feel). Met FEEL-expressies is het mogelijk om aangeleverde gegevens te bewerken, interpreteren en vergelijken.

Validatie

Bij het aanleveren van een Toepasbare Regelbestand door een leverancier wordt deze op allerhande vlakken gevalideerd. Ook de FEEL-expressies in het bestand worden daarbij geraakt.

Maar: van FEEL-expressies wordt alleen syntactisch gecontroleerd of deze kloppen. Worden de expressies zodanig opgesteld dat ze technisch gezien correct zijn? Voor die controle wordt een validatiecomponent van Drools gebruikt.

Wat niet wordt gevalideerd, is of de FEEL-expressies ook semantisch (qua inhoud) kloppen. Dat is iets waar een regelanalist, eventueel ondersteund door de software waarmee hij zijn Toepasbare Regels opstelt, zelf zorgt moet dragen. Omdat voor het traceren van deze fouten vaak inhoudelijke kennis van het Toepasbare Regelbestand nodig is, is validatie op semantiek bij aanlevering van een bestand ook niet mogelijk.

Problemen in de praktijk

Het is inmiddels al een aantal keren voorgekomen dat er Toepasbare Regelbestanden in het DSO terecht zijn gekomen met dergelijke semantische problemen. Deze Toepasbare Regelbestanden leveren vervolgens bij de executie ervan foutmeldingen op. In sommige gevallen kan dat ertoe leiden dat een initiatiefnemer zijn vergunningcheck niet kan afronden, of zijn aanvraag niet kan indienen.

Wel kunnen we de problemen waar we bij executie tegenaan zijn gelopen delen. Dit helpt hopelijk bij het voorkomen van die problemen in de toekomst. En creëert mogelijk meer bewustzijn bij regelanalisten en softwareleveranciers.

FEEL-expressie matcht niet met inputvariabele

In sommige gevallen is de FEEL-expressie wel correct, maar mag deze niet worden toegepast op de inputExpression, omdat deze een incorrect type heeft.

Voorbeeld FEEL expressies
Voorbeeld FEEL expressies

In bovenstaande voorbeeld zijn de (geel gearceerde) FEEL-expressies syntactisch in orde. Maar omdat deze wordt uitgevoerd op een boolean-waarde, levert dit bij de executie een foutmelding op.

FEEL-expressie methode bevat te veel input parameters

De methode contains() wordt veel gebruikt om te controleren of een string een bepaalde substring bevat. Deze methode werkt met twee input parameters
contains (stringA, stringB)

  • stringA: de string waarin je stringB wilt zoeken
  • stringB: de substring waarnaar je in stringA wilt zoeken
Voorbeeld contains methoden
Voorbeeld contains methoden

In bovenstaande voorbeeld zijn (geel gearceerd) 2 contains-methoden met 3 inputparameters te vinden.

Let op: Dit is natuurlijk een syntactische fout. Uit nader onderzoek bleek dat er een bug zit in de FEEL-validator die Drools levert.