Ich bin ein großer Fan von Business Rules Engines, da es Ihnen helfen kann, Ihr Leben als Programmierer viel einfacher zu gestalten. Eine der ersten Erfahrungen, die ich bei der Arbeit an einem Data Warehouse-Projekt gemacht habe, war das Auffinden gespeicherter Prozeduren mit komplizierten CASE-Strukturen, die sich über ganze Seiten erstrecken. Das Debuggen war ein Albtraum, da es sehr schwierig war, die in so langen CASE-Strukturen angewandte Logik zu verstehen und festzustellen, ob sich eine Regel auf Seite 1 des Codes mit einer anderen auf Seite 5 überschneidet. Insgesamt hatten wir mehr als 300 solcher Regeln in den Code eingebettet.
Als wir eine neue Entwicklungsanforderung für etwas namens Accounting Destination erhalten haben, bei dem mehr als 3000 Regeln behandelt wurden, wusste ich, dass sich etwas ändern musste. Damals habe ich an einem Prototyp gearbeitet, der später das übergeordnete Element einer benutzerdefinierten Geschäftsregel-Engine wurde, die alle SQL-Standardoperatoren verarbeiten kann. Zunächst haben wir Excel als Authoring-Tool verwendet und später eine ASP.net-Anwendung erstellt, mit der die Geschäftsbenutzer ihre eigenen Geschäftsregeln definieren können, ohne Code schreiben zu müssen. Jetzt funktioniert das System mit sehr wenigen Fehlern einwandfrei und enthält über 7000 Regeln für die Berechnung dieses Abrechnungsziels. Ich denke nicht, dass ein solches Szenario nur durch Hardcodierung möglich gewesen wäre.
Dennoch gibt es Grenzen für einen solchen Ansatz:
- Sie benötigen fähige Geschäftsanwender, die das Unternehmensgeschäft hervorragend verstehen.
- Das Durchsuchen des gesamten Systems (in unserem Fall eines Data Warehouse) ist mit einem erheblichen Arbeitsaufwand verbunden, um alle fest codierten Bedingungen zu ermitteln, die sinnvoll sind, um in Regeln übersetzt zu werden, die von einer Business Rule Engine verarbeitet werden. Wir mussten auch darauf achten, dass diese anfänglichen Vorlagen für Geschäftsbenutzer vollständig verständlich sind.
- Für die Erstellung von Regeln muss eine Anwendung verwendet werden, in der Algorithmen zur Erkennung überlappender Geschäftsregeln implementiert sind. Andernfalls kommt es zu einem großen Durcheinander, bei dem niemand mehr versteht, welche Ergebnisse sie erzielen. Wenn Sie einen Fehler in einer generischen Komponente wie einer Custom Business Rule Engine haben, kann es sehr schwierig sein, Fehler zu beheben und umfangreiche Tests durchzuführen, um sicherzustellen, dass die zuvor funktionierenden Dinge jetzt auch funktionieren.
Weitere Details zu diesem Thema finden Sie in einem Beitrag, den ich geschrieben habe: http://dwhbp.com/post/2011/10/30/Implementing-a-Business-Rule-Engine.aspx
Insgesamt besteht der größte Vorteil der Verwendung von Business Rule Engines darin, dass die Benutzer die Kontrolle über die Definitionen und das Authoring von Business Rules zurückerhalten können, ohne jedes Mal zur IT-Abteilung gehen zu müssen, wenn sie etwas ändern müssen. Dies reduziert auch die Arbeitsbelastung der IT-Entwicklungsteams, die sich nun darauf konzentrieren können, Dinge mit mehr Mehrwert zu erstellen.
Prost,
Nicolae