Drools - 了解此示例,其中 drl 文件存储在与 kmodule 文件的 Kbase 名称属性不同的位置
Drools - Understanding this example with drl file stored in a different location than the Kbase name attribute of the kmodule file
我正在看这个例子,其中 KieBase 定义如下:
<?xml version="1.0" encoding="UTF-8"?>
<kmodule
xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="kbase1">
<ksession name="ksession1"/>
</kbase>
</kmodule>
我原以为 drl 文件会在 src/main/resources/kbase1 中。我做出这个假设是因为阅读了 Mastering JBoss Drools 6 这本书,它表明 kbase 名称是应该放置 drl 文件的位置。句子如下:
'Notice that the name attribute of the KieBase is the same as the directory structure that we are using under /src/test/resources/ directory, where the rules are stored. '
然而,在示例中,drl 文件位于以下目录中:
src/main/resources/namedkiesession.
这是文件:HAL1.drl
package org.drools.example.api.namedkiesession
import org.drools.example.api.namedkiesession.Message
global java.io.PrintStream out
rule "rule 1" salience 10 when
m : Message( )
then
out.println( m.getName() + ": " + m.getText() );
end
rule "rule 2" when
Message( text == "Hello, HAL. Do you read me, HAL?" )
then
insert( new Message("HAL", "Dave. I read you." ) );
end
如果 KieBase 名称不是实际存储 drl 文件的位置,这将如何工作?完整的源代码在这里:
https://github.com/kiegroup/drools/blob/6.0.x/drools-examples-api/pom.xml
您刚刚在书中发现了一个错误(或拼写错误)。 KieBase
的 name
是您随意选择的名称,与.drl 文件所在的目录结构无关。
<kbase>
元素的属性是 packages
属性,而不是 name
属性,如果 packages
属性未指定,则 KieBase
将包含位于 resource
目录下的任何工件(drl、bpmn、dtable 等)。
您可以在 the official Drools' documentation 中找到对 <kbase>
属性的更好解释(查找 table 4.1)。
请注意,从 7.18 版开始,packages
属性的语义发生了轻微(但基本)的变化,如 documentation.
中所述
希望对您有所帮助,
我正在看这个例子,其中 KieBase 定义如下:
<?xml version="1.0" encoding="UTF-8"?>
<kmodule
xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="kbase1">
<ksession name="ksession1"/>
</kbase>
</kmodule>
我原以为 drl 文件会在 src/main/resources/kbase1 中。我做出这个假设是因为阅读了 Mastering JBoss Drools 6 这本书,它表明 kbase 名称是应该放置 drl 文件的位置。句子如下:
'Notice that the name attribute of the KieBase is the same as the directory structure that we are using under /src/test/resources/ directory, where the rules are stored. '
然而,在示例中,drl 文件位于以下目录中: src/main/resources/namedkiesession.
这是文件:HAL1.drl
package org.drools.example.api.namedkiesession
import org.drools.example.api.namedkiesession.Message
global java.io.PrintStream out
rule "rule 1" salience 10 when
m : Message( )
then
out.println( m.getName() + ": " + m.getText() );
end
rule "rule 2" when
Message( text == "Hello, HAL. Do you read me, HAL?" )
then
insert( new Message("HAL", "Dave. I read you." ) );
end
如果 KieBase 名称不是实际存储 drl 文件的位置,这将如何工作?完整的源代码在这里:
https://github.com/kiegroup/drools/blob/6.0.x/drools-examples-api/pom.xml
您刚刚在书中发现了一个错误(或拼写错误)。 KieBase
的 name
是您随意选择的名称,与.drl 文件所在的目录结构无关。
<kbase>
元素的属性是 packages
属性,而不是 name
属性,如果 packages
属性未指定,则 KieBase
将包含位于 resource
目录下的任何工件(drl、bpmn、dtable 等)。
您可以在 the official Drools' documentation 中找到对 <kbase>
属性的更好解释(查找 table 4.1)。
请注意,从 7.18 版开始,packages
属性的语义发生了轻微(但基本)的变化,如 documentation.
希望对您有所帮助,