2016-05-14 12 views
0

Wir arbeiten in einer sehr komplexen Lösung mit Drools 6 (Fusion) und ich würde gerne Ihre Meinung über die beste Art zu lesen Objekte während der Korrelation Ergebnisse im Laufe der Zeit erstellt. Mein erster grundlegender Ansatz bestand darin, Arbeitsspeicher zu jeder Zeit zu lesen, nach neuen Objekten zu suchen und sie an den externen Dienst (REST) ​​zu melden. AgendaEventListener scheint nicht der "beste" Ansatz zu sein, da es mir egal ist, dass die meisten Objekte in den Arbeitsspeicher eingefügt werden, also könnte der beste Ansatz darin bestehen, ein bestimmtes "Objekt" in irgendeine Art von Dienst innerhalb von DRL zu injizieren. Ist das ein guter Ansatz?Drools 6 Fusion Notification

Antwort

0

Sie haben eine ganze Reihe von Optionen. In absteigender Reihenfolge meiner Präferenz:

  1. AgendaEventListener ist wahrscheinlich die Lösung, die die kleinste Menge an LOC erfordert. Es könnte auch für andere Aufgaben nützlich sein; Alles, was Sie auf der negativen Seite haben, ist ein zusätzlicher Methodenaufruf und ein Klassentest pro eingefügtem Fakt. Erdnüsse.
  2. Sie können den Einfügemakro in eine DRL-Funktion einschließen und eingefügte Fakten der Klasse X in einer globalen Liste sammeln. Das Problem, das Sie hier haben, ist, dass Sie den KieContext als zweiten Parameter an den Funktionsaufruf übergeben müssen.
  3. Wenn die Erstellung eines Klasse-X-Objekts unweigerlich mit seiner Einfügung in WM verbunden ist, können Sie die Registrierung neuer Objekte in eine statische Liste innerhalb der Klasse X einfügen, die in einer Factory-Methode (oder dem Konstruktor) ausgeführt wird.
  4. Ich setze Ihren "grundlegenden Ansatz" zuletzt, weil es viel mehr Zyklen als der Listener (# 1) und Tonnen von Overhead für die Wartung der Menge von X-Objekten, die bereits in REST abgelegt haben, benötigt.
+0

Vielen Dank Laune für Ihre Vorschläge. Ich denke auch, dass # 4 nicht der beste Weg ist: D. Ich werde versuchen, # 2 zu nummerieren, dass auf den ersten Blick derjenige ist, der weniger Ressourcen verbrauchen wird. –