De business rules application is een applicatie die het formuleren, beheren en implementeren van business rules en application logic ondersteunt in Lotus Notes-applicaties. e-office heeft veel ervaring met het ontwerpen en bouwen van Lotus Notes- en Lotus Workflow-applicaties ter ondersteuning van de businessprocessen van klanten. Wat tot nu toe ontbrak in de standaard functionaliteiten van Lotus Notes en Lotus Workflow is de mogelijkheid om specificaties van business rules en application logic te scheiden van het design van de applicaties. Dit heeft enkele grote nadelen:
- er is geen (centraal) overzicht van welke rules op welke manier in welke applicatie zijn geïmplementeerd
- er is geen (centrale) functionaliteit om rules te beheren
- om rules te veranderen moet er opnieuw geprogrammeerd worden in het design
- de uitrol van een veranderde regel vereist dikwijls dat een applicatie tijdelijk niet gebruikt kan worden.
In dit artikel wordt beschreven wat de belangrijkste functionaliteiten van de Business Rules Application zijn en wat de voordelen zijn van het gebruik van deze applicatie.
functionaliteit en structuur van de business rules application
De Business Rules Application bestaat uit twee onderdelen:
- business rules repository
- business rules engine
de business rules repository
De business rules repository bestaat uit één Lotus Notes-database en bevat twee soorten documenten:
- business rules
- business rule implementations
business rules
De business rules representeren de business rules op een conceptuele en/of formele wijze. Een business rule krijgt een titel of naam, een versienummer en kan in een rich text veld allerlei documentatie met betrekking tot de rule herbergen.
Lotus Notes versioning wordt gebruikt voor versioning van de rule documenten.
business rule implementations
De business rule implementations representeren applicatie-specifieke implementaties van de rules. Dit type document staat dus toe dat dezelfde rule hergebruikt wordt door meerdere applicaties, waarbij
field-mapping en
form-mapping gebruikt kan worden. Lotus Notes-versioning wordt gebruikt voor versioning van de rule implementation documenten.
Een rule implementation document:
- is automatisch gelinked aan de rule die wordt geïmplementeerd
- bevat een omschrijving en categorisering van de applicatie
- specificeert een sleutel waarmee de productie-applicatie de rule implementatie kan ophalen
- specificeert een volgordenummer, die geldt binnen de sleutel
- specificeert de strekking van de implementatie: (validatie, routing, edit mode guard)
- specificeert of de implementatie een uitzondering is op voorgaande regels
- specificeert of de engine moet stoppen zodra een rule implementation niet kwalificeert
- specificeert veld-kenmerken als een veld het onderwerp is van de implementatie (naam, label, feedback-message, editable, wel of niet in een section, wel of niet in een tabbed table, etc.)
- specificeert of er een bepaald document of collectie van documenten moet worden behandeld
- specificeert de query die gebruikt moet worden om target-documenten op te halen
- specificeert of er een agent moet worden aangeroepen en hoe
- specificeert de Lotus Notes @Formula preconditions en postconditions die moeten worden geëvalueerd op (het) target document(en)
- specifieert de eventuele Lotus Workflow-functies die als pre- en postconditions moeten worden geëvalueerd
- kan documentatie herbergen over de implementatie
De business rules repository bevat verscheidene gebruikersviews waarin de rules en de rule implementations overzichtelijk kunnen worden gepresenteerd. Deze overzichten ordenen de rules en de rule implementations naar soort rule en soort applicatie. Daarnaast zijn er verscheidene systeem-views waarmee de doelapplicaties de rule-implementatie documenten kunnen ophalen.
Wat voor functionaliteit kan men bijvoorbeeld formuleren met de repository?
Voor een nieuwe of bestaande Lotus Notes- of Lotus Workflow-applicatie specificeren:
- dat in elk document het veld disclaimer gevuld is, of wordt, met een bepaalde tekst
- dat in bepaalde documenten veld X groter is dan A, of veld Y kleiner dan B, en veld Z gelijk aan C
- dat in een bepaald document in een bepaald proces van een bepaalde versie in een bepaalde activiteit (status) een bepaalde agent moet worden aangeroepen
- dat een bepaald document in een bepaald proces in een bepaalde activiteit (status) NIET in edit mode mag worden gezet (EditModeGuard = True)
- dat een bepaalde set van rule implementations niet hoeft te worden gevalideerd (abort)
(dit kan handig zijn in test-situaties en bij tijdelijke ontheffingen van validaties of routings)
- dat binnen een set van rule implementations waarvoor een abort geldt er toch uitzonderingen gelden die wel gevalideerd moeten worden (Force = True)
- dat alle validation in een applicatie on hold staat / verworpen wordt, zodat geen enkel proces nog doorgang kan vinden
Dit is bijvoorbeeld handig om applicaties in runtime tijdelijk te 'bevriezen' omdat er een nieuwe set van rules moet worden gespecificeerd. Zolang de nieuwe set nog niet uitgeformuleerd is, wordt zowel de oude als de nieuwe set on hold gezet. Pas als de nieuwe set uitgespecifieerd is, wordt de nieuwe set in zijn geheel geactiveerd en wordt de oude set in zijn geheel geïnactiveerd.
de business rules engine
De business rules engine bestaat uit één Lotus Notes-database en bevat de design elementen die nodig zijn voor de implementatie. Deze designelementen moeten naar de doelapplicatie gekopieerd worden. Het betreft één form voor een feedbackscherm, één subform voor de koppeling met de repository en de aanroep van de engine, en drie scriptlibraries, de eigenlijke engine. Voor een LWF-applicatie wordt de koppeling met de engine gelegd op het LWF Domino Workflow Information subform.
Onderstaand plaatje geeft aan hoe vanuit een action “
Validate” op het subform ”
Business Rules Engine” de engine wordt aangeroepen.
Met zo'n aanroep wordt de engine geactiveerd en wordt een hiërarchische set van sleutels gegenereerd. een sleutel die geldig is op applicatieniveau, een sleutel die geldig is voor de combinatie van applicatie-proces, etc. Met deze sleutelset wordt in de business rule repository gezocht op geassocieerde rule implementation documenten. De relevante geassocieerde rule implementation documenten worden sequentieel afgehandeld. Indien een validatie-fout is opgetreden wordt er een feedback aan de gebruiker gegeven. Een voorbeeld:
inzet van de business rule application
De business rule application kan eenvoudig in elke nieuwe of bestaande applicatie worden gehangen. De koppeling naar de engine en de repository is automatisch, nadat via een vijftal parameters is aangegeven:
- waar de business rules repository staat, en
- op basis van welke vier velden de hiërarchische set van sleutels moet worden gegenereerd
In bestaande applicaties kan elke veld-validatie of veld-translatie gekopieerd worden uit het design-element (het field) naar het rule implementation document. U hoeft dus niet opnieuw te programmeren, het is een kwestie van bestaande code verplaatsen.
conclusie
De introductie van de business rules application levert de volgende voordelen:
- er is een centraal overzicht van welke rules op welke manier in welke applicatie zijn geïmplementeerd
- er is een centrale functionaliteit om rules te beheren
- om rules te veranderen hoeft alleen de rules specificatie in de repository aangepast te worden
- de uitrol van de veranderde regel vereist niet dat de applicatie tijdelijk uit produktie gaat.voor eindgebruikers