Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

 

Kenmerken

Kenmerk

Beschrijving

Ontkoppel categorie

Domein functie Database ontkoppeling (12)

Complexiteit

Laag

Tonen spectrum en locatie op spectrum

Middel

Related patterns/solutions
  • Persistence of Data
  • Persistence of Product model
  • Persistence of Domain List
 

 

Table of Contents
maxLevel2
 

Samenvatting

Berekeningen worden vaak gebruikt binnen applicaties en vormen een belangrijk onderdeel van Lijsten worden gevuld vanuit stamdata. Deze lijst definieer alle mogelijke waarden binnen een domein. Dit domein eenvoudig kunnen uitlezen van een bron en toepassen binnen de domein laag. De laag waarin alle business regels zijn gedefinieerd. Berekeningen moeten autonoom kunnen worden uitgevoerd en eenvoudig worden aangepast. De berekeningen in dit voorbeeld hebben een beperkt aantal input parameters waarvan de implementatie op een onderhoudbare manier moet worden gerealiseerdlijst wordt beheerd en bepaald buiten de applicatie. Bijvoorbeeld landenlijsten, beroepencodes, gemeentes, etc.

Context

Binnen elke applicatie worden berekeningen uitgevoerd. Berekeningen hebben binnen een applicatie een speciale rol omdat ze onderdeel zijn van de domein laag waarin bedrijfsregels worden vastgelegd. Voor bedrijfsregels die ontsloten worden zijn onderstaande kenmerken van belang:applicaties wordt er regelmatig gebruikt van lijsten in de vorm van een value of instance list. The content of a value list could be defined design-time or run-time. In this document solution will be shown to fill a value or instance list. Every solution has it's own pros and cons.

The table below mentions the most critical considerations regarding the implementation of instance or value lists within Blueriq.

 

 
Kenmerk
EigenschapOmschrijving
Kennis
ontslutingRule engineDoor het gebruiken van de rule engine kunnen back-ward chaining worden toegepast en eenvoudig complexe regels worden afgeleid.Truth maintenance

Door gebruik te maken van truth maintenance is het domein model altijd in een state die 'waar' is.

Impliciete callsBedrijfsregels impliciet aftrappen zodat ze automatisch worden geëvalueerd wanneer dit relevant is.Implementatie kenmerkenAutonoomBedrijfsregels moeten autonoom kunnen worden uitgevoerd en geen afhankelijkheden met andere applicatie functies hebben.HerbruikbaarBedrijfsregels wil je vaak kunnen hergebruiken binnen het Blueriq applicatie landschap.Eenvoudig onderhoudbaarDoor bedrijfsregels te isoleren van de rest van applicatie functies blijven bedrijfsregels goed onderhoudbaar.Out of the boxBedrijfsregels moeten eenvoudig volledig met Blueriq gemodelleerd en geëxecuteerd kunnen worden.

 

Om aan bovenstaande kenmerken te kunnen voldoen is het belangrijk dat berekeningen op de juiste manier worden geïmplementeerd.

Daarnaast zijn er verschillende typen te onderscheiden van bedrijfsregels binnen de domein laag:

  1. Eenvoudige bedrijfsregels (zoals berekeningen) met een beperkte aantal (<5) input parameters en een output parameter.
  2. Een bundeling van bedrijfsregels waarvan de output van de een de input is van de ander. Bedrijfsregels die dus een sterke afhankelijkheid met elkaar hebben.
  3. Complexe bedrijfsregels waarin een groot aantal input parameters (> 10) voor nodig zijn. Dit komt vaak voor bij de evaluatie van complete klant dossiers.
In dit artikel wordt alleen de eerste behandeld waarbij de oplossing zorgt draagt voor een goed onderhoudbare implementatie binnen Blueriq Studio.

Binnen Blueriq implementeren van berekeningen die eenvoudig ontsloten en aangeroepen kunnen worden. Hierbij mag geen verwevenheid ontstaan tussen de implementatie en de aanroep. Hierbij spelen (1) implementatie, (2) ontsluiting en  (3) aanroep een belangrijke rol.

 

Image Removed

Probleem

Bij de implementatie van de berekening én aanroepende applicatie ontstaat er vaak verwevenheid dat voorkomen moet worden; hetzelfde deel van het domein van de applicatie wordt ook voor de berekening gebruikt. Dit heeft een sterk negatief effect op de onderhoudbaarheid van de applicatie (zie Maintainable applications). Daarnaast zijn er nog andere belangrijke aspecten die spelen bij de ontkoppeling van een berekening binnen Blueriq. Deze zijn beschrijven in tabel hierboven.

 

Een concreet voorbeeld van een berekening is bijvoorbeeld een LTI (Loan to Income) berekening.

Voorbeeld berekening:

Image Removed

In een concrete situatie kan dit als volgt uitzien:

Image Removed

In dit voorbeeld is het belangrijk dat de parameters ontkoppeld zijn van de daadwerkelijke implementatie van de berekening en de aanroepende applicatie. Het

Om dit probleem goed op te lossen moeten onderstaande vragen worden beantwoord:

  • Hoe berekening implementeren?
  • Hoe berekening ontsluiten?
  • Hoe berekening aanroepen?

Oplossingen

Hint: Focus op patroon ipv implementatie van het patroon. Dit laatste is alleen relevant binnen het patroon.
ontsluitingDesign-time validatie 
Run-time validatie 
Versiebeheer list content? 
Implementatie kenmerkenInlezen uit externe bron 
Ververs moment value list 
Geen deployment nodig/no design-time changes needed. 
Onderhoudbaarheid 
Out of the box 

 

Probleem

Content of a value list changes more often compared to the application which uses the value list. Seperating application behaviour from maintenance of value list content which could be depend on external resources.

Oplossingen

Voor de oplossing wordt rekening gehouden met de kenmerken die benoemd zijn in de tabel onder "Context". 

Er zijn verschillende oplossingen mogelijk waarbij de bovenstaande kenmerken in meer- of mindere mate gerealiseerd kunnen worden. Per geval dient de best passende oplossing te worden gekozen. In de tabel hieronder worden de belangrijkste eigenschappen getoond en hoe elke oplossing daarop scoort.

 

 Eigenschap
FunctieExternal rule

Webservice

Value list (statisch)Value list
(dynamisch)
Instance list
(statisch)
Instance list
(dynamisch)
Kennis ontsluitingDesign-time validatie(green star)(red star)(green star)(red star)
Run-time validatie(green star)(green star)(green star)(green star)
Versiebeheer list content?(red star)(red star)(red star)
Blueriq kenmerkenRule engine(green star)(star)(red star)Truth maintenance(red star)(star)(red star)Impliciete calls(red star)(green star)
(red star)
Implementatie kenmerkenInlezen uit externe bron
Autonoom
(red star)(green star)(red star)
(red star)Eenvoudig onderhoudbaar
(green star)
Ververs moment value listdesign timestart applicatiedesign timesession time
Geen deployment nodig/no design-time changes needed.(red star)(green star)(red star)
(star)
(green star)
Herbruikbaar
Onderhoudbaarheid(green star)/(red star)3
(green star)
(star)(star)/(red star)3(star)
Out of the box(green star)
*
(star)1(green star)
(green star)
(red star)2

1External source vinkje bij Value List en wat configuratie. BE werk.

2Maatwerk voor inlezen bron en creeren van instanties. TE werk.

3Depends on number of values/instances in the list.*Mogelijk in Blueriq 10.x

Hieronder worden per oplossing in het kort de verschillen in de implementatie beschreven. Voor de realisatie van de daadwerkelijke oplossing wordt verwezen naar het desbetreffende patroon en wordt een concreet voorbeeld beschreven.

Functie

Door gebruik te maken van een functie kan aan de belangrijkste kenmerken voor de implementatie van bedrijfsregels (zie tabel onder "Context") invulling worden gegeven. Met de functie kunnen onderstaande aspecten worden gerealiseerd:

  • Autonome functies implementeren
  • Eenvoudig onderhoudbaar
  • Herbruikbaar vanuit het Blueriq platform
  • Rule Engine kan worden gebruikt t.b.v. de afleiding van regels
  • Out of the box mogelijk

De essentie van de functie is:

 

  • Aparte module voor de implementatie van de berekening en aanroepende applicatie. Hierdoor is design-time vermenging niet mogelijk.
  • Geen side effecten tussen berekening en applicatie. De applicatie kan run-time nooit ongewenst het gedrag van de berekening beïnvloeden.
  • De berekening eenvoudig binnen het BQ platform aanroepen en ontsluiten.
  • Functie is eenvoudig te realiseren en te onderhouden

Voorbeeld

 

Oplossingen:

  • Value list static
  • Value list dynamic
  • Instance list static
  • Instance list dynamic

Value list static

Eenmalig in Studio de value list definiëren. Deze waarde veranderd run-time niet meer.

Wijizigen van de value list vereist een model aanpassing en deployment.

Bij value list met < 10 is onderhoudbaarheid goed, bij 100+ is deze slecht.

Voorbeeld

Het vullen van een value list Dit patroon wordt beschreven in Decoupling Pattern 8: Function. Het gebruik van een Functie binnen Blueriq wordt beschreven in MyBlueriq.

 

External Rule

Value list dynamic

Met een external rule kunnen ook bedrijfsregels worden geïmplementeerd en worden ontsloten. In vergelijking met de Functie is het met een external rule niet mogelijk om autonomie te waarborgen. Een external rule maakt gebruikt van attributen binnen hetzelfde domein als de applicatie zodat ongewenste vermenging mogelijk is. Daarnaast is de onderhoudbaar laag doordat een external rule een regel is die in code wordt geïmplementeerd. Bedrijfsregels wil je niet in code implementeren maar in Blueriq vanwege de onderhoudbaarheid.

Voorbeeld

Dit patroon wordt volledig uitgewerkt in Decoupling Pattern 6: External rule. Het gebruik van een External Rule Het vullen van een value list binnen Blueriq wordt beschreven in in MyBlueriq.

Webservice

Door gebruik te maken van webservices wordt het mogelijk om functies te ontsluiten. Het nadeel van deze oplossing is dat het alle aspecten van Blueriq (Truth maintenance, rule engine, impliciete calls) niet gebruikt worden. Hierdoor is een webservice wel geschikt voor het ontsluiten van bedrijfsregels maar dit gaat altijd gepaard met het verlies van essentiele Blueriq functies.

Blueriq ondersteund het creëren van Webservices OOTB. Hierbij wordt echter geen invulling gegeven aan de autonomie van de functie die ontsloten moet worden. Hierdoor zal er nog steeds verwevenheid ontstaan tussen de implementatie van de berekening en de overige applicaties doordat het domein model nog steeds onderling wordt gedeeld en deze in dezelfde scope worden uitgevoerd.

Voorbeeld

Dit patroon wordt volledig uitgewerkt in Decoupling Pattern 2: Webservice call. Het aanmaken van een Webservice met Blueriq wordt beschreven in MyBlueriq.

Issues en overwegingen

Als rekening wordt gehouden met de belangrijkste kenmerken voor de implementatie van bedrijfsregels voldoen is de Functie de beste methode. De functie heeft de beste implementatie kenmerken en daarnaast maakt het het beste gebruik van Blueriq mogelijkheden. Daarnaast worden de mogelijkheden van de Functie in de toekomst uitgebreid zodat maximaal gebruik wordt gemaakt van de mogelijkheden van Blueriq. Het implementeren en executeren van bedrijfsregels wordt daarmee maximaal ondersteund door het Blueriq platform.

Instance list static

Instances should be created design-time and show instances by using an instance linker. Define a relation attribute to catch the instances.

Voorbeeld

The implementation of an static instance list will be described in MyBlueriq.

Instance list dynamic

Some custom code is needed to implement dynamic instance list. An external resource must provide the values for the instance list and instances should be created run-time.

Voorbeeld

No example available. Too bad joh.

Issues en overwegingen

Value lists die regelmatig wijzigen via een external value list. Value lists die constant zijn, bijvoorbeeld geslacht, ja/nee/onbekend, die realiseren d.m.v. een value list design time. Bij een external value list heb je niet de mogelijkheid om design-time model validatie toe te passen. In een expressie kan een value gebruikt worden die run-time niet mogelijk blijkt te zijn. Dit wordt run-time pas geconstateerdDe andere oplossingen, webservice en mapping, zijn het minst geschikt doordat ze weinig gebruik maken van de mogelijkheden die Blueriq biedt.

Gerelateerde patronen

  • Dossier validatie; hierbij worden complexe bedrijfsregels geimplementeerd en ontsloten. Het lijkt daarom sterk op dit voorbeeld van berekeningen met het verschil dat het mogelijk wordt om een volledig klant dossier kan wordt gevalideerd.
  • Applicatie functie; een applicatie functie biedt functies aan die niet sterk leunen op de rule engine.
  • Front-end ontsluiting; Koppeling met ontsluiting kennis naar een front-end.