2009-12-15 71 views
0

我正在尝试使用OpenRules和Java,并且我只想将所有规则存储在数据库中。如果我正确理解documentation,我需要一个用于存储环境设置的“Main.xls”。现在的问题是:有没有办法彻底绕过这一个物理.xls文件? 最好的情况是,如果我可以调用诸如只有在数据库中可以使用OpenRules规则吗?

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

一些地方的方法defineOpenRulesDatabase()定义了在文档中提到的db.properties文件中定义的所有设置。

对此有何想法?

回答

0

是的。 According to the documentation,你可以传入Java支持的任何URL(即任何可以返回一些有用的东西的URL.openStream())。

因此,您只需在应用程序中嵌入Jetty web server,创建一个返回该文件的servlet,然后使用该servlet的URL调用OpenRulesEngine()

或者您可以从数据库下载文件并使用File.createTempFile()创建一个临时文件来设置规则引擎。

或者您可以针对该项目提交一个错误并要求另一个构造函数,允许您传入一个InputStream

[编辑]我想你已经看到了this document,它解释了如何将规则放入数据库。从我所看到的情况来看,至少在你的类路径中不可能创建没有现有Main.xls文件的规则引擎。

但该文件并没有包含太多:

规则/主/ Main.xls主文件的规则引擎开始。它仅包含环境表

因此,您可以简单地将一个静态文件放入类路径中,并从数据库加载所有规则。

+0

根据文档:“OpenRules使用URL伪协议符号”,这至少是我的理解。码头版本在这里是不可能的。所有这三种方法都存在无法包含子目录中的规则的问题。 如果我得到了开发人员的任何回复,我会提交一个错误... – 2009-12-15 16:08:41

+0

请参阅我的编辑以获取可能的解决方案。 – 2009-12-15 16:52:03

相关问题