2011-12-14 2 views
5

je considérais à l'aide Drools Fusion à mettre en œuvre les règles exemplaires suivantes:Drools soutien Fusion pour des événements persistants, longue course

  • si le client a acheté deux mêmes produits dans l'année, elle obtient la troisième gratuitement
  • pour les dépenses lorsque le client reçoit une réduction
  • lorsque le client est inactif depuis plus d'un an, un rappel est généré
  • un superviseur est averti lorsqu'une seule commande est supérieure à la moyenne valeur de la commande dans les six derniers monhts
  • ... et ainsi de suite, ce ne sont que des exemples du haut de ma tête

Toutes ces règles peuvent facilement être exprimées à l'aide Drools Fusion. Cependant, après la création d'un prototype et l'examen de la documentation, il semble que ce produit soit mieux adapté aux événements transitoires à court terme (marché boursier, prise de décision en temps réel).

La question est: est-il nécessaire de stocker tous les événements en mémoire? (peut-être des millions d'achats très anciens). En outre peut stocke les événements de la fusion Drools afin qu'ils survivent au redémarrage du serveur? (Idéalement dans la base de données).

Je sais que les événements Drools Fusion sont tout simplement faits Drools Expert, donc peut-être la question peut être étendue à: peut Drools Expert persisteront et charger paresseusement faits?

Répondre

3

Ce que vous pouvez faire est de charger les informations d'historique par client chaque fois que vous obtenez une nouvelle transaction pour ce client. Ou chargez périodiquement les informations pour examiner les clients inactifs. Tous les exemples que vous mentionnez ressemble à Faits à moi. De toute évidence, vous pouvez tout modéliser en tant qu'événements, mais comme vous l'avez mentionné, cela vous obligera à avoir tout en mémoire. Pour répondre à votre question sur le stockage/gérer des millions d'événements, vous devez d'abord répondre à la question si la JVM prendra en charge tous ces objets en mémoire.

Salutations

+0

Merci beaucoup. Est-ce que cela signifie que Drools Expert et Drools Fusion exigent que tous les faits/événements soient en mémoire tout le temps? Je pensais que Drools serait en mesure de charger paresseusement des faits pour le traitement et de jeter ceux qui ne sont plus nécessaires ... –

+2

Oui cela signifie que vous pouvez mettre en œuvre un chargement paresseux pour certains faits, mais le moteur fonctionnera mieux évidemment ayant tous les faits dans la main Mémoire. Pour les événements, vous disposez d'une fonction de gestion automatique du cycle de vie. Cela signifie que tous les événements qui ne correspondent à aucune règle seront automatiquement supprimés. Dans Expert, vous pouvez utiliser des assertions logiques pour supprimer des faits qui ne sont plus sauvegardés pour la règle qui les insère. – salaboy

Questions connexes