Le migliori pratiche per l'utilizzo di Drools Esperto / Portata in un'applicazione Web
-
26-09-2019 - |
Domanda
Al momento sto insegnando me Drools Expert / flusso così come GWT. Voglio usare Drools flusso come motore evento / bus di comando e regola di business per raggiungere accoppiamento lasco tra le diverse parti dell'applicazione.
Finora ho ottenuto sia di esperti e di flusso di lavoro dai miei casi di test, ma ho difficoltà a capire come meglio implementare flussi all'interno di un contenitore web.
Devo mettere tutta l'impalcatura in un EJB Stateless Session e lasciare che ogni richiesta di impostare tutto da zero e quindi eseguire i flussi / regole? Questo mi sembra uno spreco di risorse per me. Posso invece memorizzare una sessione di conoscenze unico e di condivisione che le sessioni tra le richieste web, accedendo contemporaneamente, sarebbe quella scala scenario Ed è thread-safe (la mia congettura è no)? Sta mettendo in comune le sessioni di conoscenza una buona idea?
Quello che sto chiedendo è fondamentalmente se ci sono delle migliori pratiche per quanto sopra? La documentazione e gli esempi, mentre altrimenti abbastanza buono, non sono chiare su questi punti particolari.
ho fatto qualcosa di lettura su Drools griglia, non so se questo avrebbe risolto il mio problema e che sembra essere in fase di sviluppo. Se le mie domande non sono chiare, si prega di dirlo.
BR Magnus
Soluzione
Un KnowledgeBase è thread-safe e peso (non è poco per creare), in modo da 'll probabilmente vuole mantenere che in un ambito di applicazione.
Per il momento, la maggior parte delle persone tendono ad utilizzare un'architettura senza stato e creare una StatelessKnowlegdeSession (filo non sicuro ed economico per creare) per ogni richiesta web, ad esempio in una session bean senza stato (o una cucitura / fagioli CDI o di un fagiolo di primavera) . Tuttavia, se avete il potere di stateful EJB di, può essere gratificante per mantenere l'uso uno StafefulKnowlegdeSession a gestire tutte le richieste della stessa conversazione.
Non sono sicuro se StatefulKnowlegdeSession è thread-safe (non la penso così), così ho fatto un problema: https://issues.jboss.org/browse/JBRULES-2842