2009-12-15 5 views
0

J'expérimente avec OpenRules et Java et je voudrais stocker toutes mes règles dans une base de données seulement. Si je comprends le documentation correctement, j'ai besoin d'un "Main.xls" dans lequel stocker les paramètres d'environnement. Maintenant la question: Y at-il un moyen de contourner complètement ce fichier .xls physique? meilleur cas serait, si je pouvais simplement appeler quelque chose commeRègles OpenRules seulement dans une base de données possible?

defineOpenRulesDatabase();  
OpenRulesEngine engine = new OpenRulesEngine("db:myFile.xls"); 
engine.run(); 

où la méthode defineOpenRulesDatabase() définit tous les paramètres qui sont définis dans le fichier db.properties mentionné dans la documentation.

Une idée à ce sujet?

Répondre

0

Oui. According to the documentation, vous pouvez transmettre n'importe quelle URL prise en charge par Java (c'est-à-dire tout ce pour quoi URL.openStream() retournera quelque chose d'utile).

Vous pouvez simplement intégrer le Jetty web server dans votre application, créer une servlet qui renvoie le fichier, puis appeler le OpenRulesEngine() avec l'URL du servlet.

Ou vous pouvez télécharger le fichier à partir de la base de données et utiliser File.createTempFile() pour créer un fichier temporaire pour configurer le moteur de règles.

Ou vous pourriez déposer un bug contre le projet et demander un autre constructeur qui vous permet de passer un InputStream.

[EDIT] Je suppose que vous avez déjà vu this document qui explique comment mettre les règles dans une base de données. D'après ce que je vois, il n'est pas possible de créer le moteur de règles sans un fichier Main.xls existant au moins dans votre classpath.

Mais ce fichier ne doit pas contenir beaucoup:

règles/main/Main.xls le fichier principal pour un moteur de règles pour commencer. Il contient uniquement la table d'environnement

Vous pouvez donc simplement placer un fichier statique dans le chemin de classe et charger toutes les règles depuis la base de données.

+0

Selon les docs: "OpenRules utilise une notation de pseudo-protocole URL", c'est du moins ce que je comprends. La version jetty n'est pas possible ici. Les trois approches ont le problème de ne pas pouvoir inclure les règles d'un sous-répertoire. Je voudrais déposer un bug si j'ai reçu une réponse des développeurs ... –

+0

Voir mes modifications pour une solution possible. –

Questions connexes