Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 只有在数据库中才能打开规则?_Java_Rule Engine - Fatal编程技术网

Java 只有在数据库中才能打开规则?

Java 只有在数据库中才能打开规则?,java,rule-engine,Java,Rule Engine,我正在试验OpenRules和Java,我只想将所有规则存储在数据库中。如果我理解正确,我需要一个“Main.xls”来存储环境设置。现在的问题是:有没有办法完全绕过这个物理.xls文件? 最好的情况是,如果我能打个电话 defineOpenRulesDatabase(); OpenRulesEngine engine = new OpenRulesEngine("db:myFile.xls"); engine.run(); 其中,defineOpenRulesDatabase()方法

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

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。。。