OpenRules规则只在数据库中可能吗?

时间:2009-12-15 15:39:52

标签: java rule-engine

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

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

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

对此有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

但该文件不必包含太多内容:

  

rules / main / Main.xls规则引擎的主要文件。它只包含Environment表

因此,您只需将静态文件放在类路径中,然后从DB加载所有规则。