SharePoint Rule Engines (Part 2) - NxBRE
SharePoint Rule Engines (Part 2) - NxBRE hätte der zweite Teil werden sollen, die ersten paar Sätze gab es auch schon...
Update 2019: Also, hier fängt die Scham/Schande an. Ein angefangener Beitrag der nie zu Ende geschrieben wurde. Ich habe vor dieses Thema in einem anderen Kontext wieder aufzunehmen, und anhand von anderen Beispielen eine ähnliche Serie zu starten. Ich werde in der neuen Serie auch auf andere Lösungen - wie z.B. grakn.ai - eingehen, auf dem semantischen Pflaster hat sich in den letzten Jahren viel getan :)...
Weiter mit den .NET Rule Engines (NxBRE)Nachdem wir im vorhergehenden Beitrag unsere initiale Solution erstellt haben, werden wir in diesem Beitrag diese ein bisschen erweitern.
NxBRE
NxBRE ist nach eigenen Angaben die erste Business Rule Engine für .NET. Diese Rule Engine beinhaltet zum einen eine Flow Engine (man stelle sich dies ähnlich einem Workflow in SharePoint vor) und einer Forward-Chained Inference Engine (man nehme den vorhin gedanklich erstellten Workflow und einen Event Receiver der jedesmal den imaginären WF bei einer Änderung der Faktenbasis (z.B. wenn sich ein Metadatum ändern sollte) mit den neuen Fakten startet).
Die Flow Engine
Die Inference Engine ist natürlich die mächtigere der beiden, jedoch werde ich aus zeitlichen Gründen auf die Flow Engine eingehen. Falls es doch von Interesse sein sollte bitte in den Kommentaren melden.
Wie man in den First Steps sieht kann man der Flow Engine ein Objekt übergeben und die Regeln auf dieses Objekt wirken lassen. Ein weiterer Plus-Punkt für die Flow Engine war die einfachere Deklaration der Regeln. In unserem Beispiel verwenden wir die Version 3.3.0 (die Library ist in der Beispiel Solution in GitHub enthalten).
Die Flow Engine versteht mehrere Formate, damit meine ich das Format der Rule Files. Zum einen werden die aus JxBRE bekannten '.bre' Rules unterstützt und zum anderen die mit NxBRE eingeführten und erweiterten '.xbre' Rules. Man kann einen Vergleich in der Dokumentation (S. 17-19) finden. Wir werden für unser Beispiel die '.xbre' Variante verwenden.
//Note:
Es gibt anscheinend auch die Möglichkeit Flow Regeln in Visio zu modellieren, jedoch habe ich diese Methode nicht angetestet.
Wir fangen an...
... oder auch nicht (2019), mittlerweile wird NxBRE nicht mehr auf SourceForge gehostet, das Projekt befindet sich auf GitHub.
Der Code für dieses Beispiel kann auf jeden Fall im Git Repository eingesehen werden.
Auch der Source Code für die Simple Rule Engine (Github Fork) befindet sich im Repo.