2010-09-28 37 views
9

Je suis actuellement en train de m'enseigner Drools Expert/Flow ainsi que GWT. Je souhaite utiliser Drools Flow en tant que bus d'événement/commande et moteur de règles métier pour obtenir un couplage lâche entre différentes parties de l'application. Jusqu'à présent, j'ai testé Expert et Flow à partir de mes cas de test, mais j'ai du mal à comprendre comment implémenter au mieux les flux dans un conteneur Web. Dois-je mettre tous les échafaudages dans un EJB de session sans état et laisser chaque requête tout configurer à partir de zéro, puis exécuter les flux/règles? Cela semble être un gaspillage de ressources pour moi. Puis-je à la place stocker une seule session de connaissances et partager les sessions entre les requêtes Web, en y accédant simultanément, ce scénario est-il à l'échelle et est-il sécurisé (mon estimation est non)? La mise en commun des sessions de connaissances est-elle une bonne idée?Meilleures pratiques pour l'utilisation de Drools Expert/Flow dans une application Web

Ce que je demande est fondamentalement s'il y a des meilleures pratiques pour ce qui précède? La documentation et les exemples, bien qu'ils soient plutôt bons, ne sont pas clairs sur ces points particuliers.

J'ai lu quelque chose à propos de Drools Grid, je ne sais pas si cela résoudrait mon problème et cela semble être en cours de développement. Si mes questions ne sont pas claires, veuillez le dire.

BR Magnus

Répondre

3

Un fil est KnowledgeBase poids sûr et lourd (ce n'est pas pas cher pour créer), de sorte que vous voudrez sans doute garder que, dans un champ d'application. Pour l'instant, la plupart des gens ont tendance à utiliser une architecture sans état et à créer une StatelessKnowlegdeSession (thread dangereux et peu coûteux à créer) pour chaque requête web, par exemple dans un bean session sans état (ou un haricot seam/CDI ou un haricot de printemps).). Cependant, si vous avez la puissance d'EJB stateful, il peut être enrichissant de continuer à utiliser un StafefulKnowlegdeSession pour gérer toutes les demandes dans la même conversation.

Je ne sais pas si StatefulKnowlegdeSession est thread-safe (ne pense pas), donc je fait une question: https://issues.jboss.org/browse/JBRULES-2842

+0

Unfortunaly utilisant Drools flux signifie implicitement que je dois utiliser un StatefulKnowledgeSession, sinon flux n » t travail. J'ai essayé cela et d'après ce dont je me souviens, j'ai eu une exception d'exécution. Le seul indice que je peux trouver moi-même, jusqu'à présent, est que la persistance de toutes les données sur la session entre les demandes. Je suppose que cela se résume à des modèles d'utilisation de l'outil. Peut-être qu'il me manque quelque chose de fondamental dans mon application de Drools. Les exampels que j'ai trouvés semblent plus pencher vers l'utilisation d'applications de bureau (Swing) et une session continuellement continue. – Magnus