2010-09-28 4 views
9

Obecnie uczę sam siebie Drools Expert/Flow oraz GWT. Chcę używać Drools Flow jako magistrali zdarzeń/poleceń i mechanizmu reguł biznesowych, aby uzyskać luźne połączenie między różnymi częściami aplikacji.Najlepsze praktyki dotyczące korzystania z Drools Expert/Flow w aplikacji internetowej

Do tej pory dostałem zarówno Expert, jak i Flow, działający w moich testowych przypadkach, ale ciężko jest mi wymyślić, jak najlepiej wdrożyć Flow w kontenerze sieciowym.

Czy powinienem umieścić wszystkie rusztowania w EJB bezstanowej sesji i pozwolić każdemu wnioskowi skonfigurować wszystko od podstaw, a następnie uruchomić przepływy/reguły? Wydaje mi się to marnowaniem zasobów. Czy zamiast tego mogę przechowywać pojedynczą sesję wiedzy i udostępniać sesje między żądaniami sieci Web, uzyskując jednocześnie dostęp do niej, czy ten scenariusz byłby skalowalny i czy jest bezpieczny w wątku (przypuszczam, że nie)? Czy łączenie sesji wiedzy jest dobrym pomysłem?

To, o co proszę, to w zasadzie, czy istnieją jakieś najlepsze praktyki dla powyższych? Dokumentacja i przykłady, poza tym całkiem dobre, nie są jasne w tych konkretnych punktach.

Przeczytałem coś o Drools Grid, nie jestem pewien, czy to rozwiąże mój problem i który wydaje się być w fazie rozwoju. Jeśli moje pytania są niejasne, proszę tak powiedzieć.

BR Magnus

Odpowiedz

3

KnowledgeBase jest wątek bezpieczne i waga ciężka (nie jest tanio stworzyć), więc prawdopodobnie będziesz chciał zachować to w zakresie aplikacji.

Obecnie większość ludzi korzysta z architektury bezpaństwowej i tworzy StatelessKnowlegdeSession (wątek niebezpieczny i tani w tworzeniu) dla każdego żądania internetowego, na przykład w bezstanowym komponencie bean sesji (lub szwie/ziarnie CDI lub fasoli wiosennej). Jednakże, jeśli masz moc stanowych EJB, może to być satysfakcjonujące, aby używać jednej StafefulKnowlegdeSession do obsługi wszystkich żądań w tej samej rozmowie.

Nie jestem pewien, czy jest bezpieczny StatefulKnowlegdeSession gwint (nie sądzę), więc zrobiłem problem: https://issues.jboss.org/browse/JBRULES-2842

+0

Unfortunaly użyciu Drools przepływu pośrednio oznacza, że ​​muszę użyć StatefulKnowledgeSession, inaczej Przepływ robi” t działa. Próbowałem tego i z tego, co pamiętam, otrzymałem wyjątek środowiska wykonawczego. Jedyną wskazówką, na jaką mogę się teraz natknąć, jest utrzymywanie wszystkich danych dotyczących sesji między żądaniami. Zgaduję, że sprowadza się to do wzorców użycia narzędzia. Być może brakuje mi czegoś podstawowego w mojej aplikacji Drools. Odkryte przeze mnie egzampele wydają się być bardziej pochylone w stronę zastosowania aplikacji komputerowych (Swing) i ciągłej sesji. – Magnus

Powiązane problemy