Java 只有在数据库中才能打开规则?
我正在试验OpenRules和Java,我只想将所有规则存储在数据库中。如果我理解正确,我需要一个“Main.xls”来存储环境设置。现在的问题是:有没有办法完全绕过这个物理.xls文件? 最好的情况是,如果我能打个电话Java 只有在数据库中才能打开规则?,java,rule-engine,Java,Rule Engine,我正在试验OpenRules和Java,我只想将所有规则存储在数据库中。如果我理解正确,我需要一个“Main.xls”来存储环境设置。现在的问题是:有没有办法完全绕过这个物理.xls文件? 最好的情况是,如果我能打个电话 defineOpenRulesDatabase(); OpenRulesEngine engine = new OpenRulesEngine("db:myFile.xls"); engine.run(); 其中,defineOpenRulesDatabase()方法
defineOpenRulesDatabase();
OpenRulesEngine engine = new OpenRulesEngine("db:myFile.xls");
engine.run();
其中,defineOpenRulesDatabase()方法定义了文档中提到的db.properties文件中定义的所有设置
有什么想法吗?有,您可以传入Java支持的任何URL(即,URL.openStream()
将返回有用内容的任何内容)
因此,您只需在应用程序中嵌入,创建一个servlet,返回文件,然后使用servlet的URL调用OpenRulesEngine()
或者您可以从数据库下载该文件,并使用file.createTempFile()
创建一个临时文件来设置规则引擎
或者,您可以针对项目提交一个bug,并请求另一个构造函数,该构造函数允许您传入InputStream
[编辑]我想您已经了解了如何将规则放入数据库。据我所见,至少在类路径中,如果没有现有的Main.xls文件,就不可能创建规则引擎
但该文件不必包含太多内容:
rules/main/main.xls规则引擎启动的主文件。它只包含环境表
因此,您只需在类路径中放置一个静态文件,并从数据库加载所有规则。根据文档:“OpenRules使用URL伪协议表示法”,这至少也是我对它的理解。此处不可能使用jetty版本。这三种方法都存在无法包含子目录中的规则的问题。如果我得到开发者的任何回应,我会提交一个bug。。。