我想基于"然后"加载一个新的drl文件。一些规则的条件。在下面的示例中,我想要包含一个新的" checkMasterData.drl"来自另一个drl文件的getFilteredMasterData()。size()> 3时的文件
rule "Check for mouse catch"
dialect "java"
when
$notification:NotificationVO(getFilteredMasterData()!=null
,getFilteredMasterData().size()>3);
then
#include checkMasterData.drl
端
有可能吗?或者,在fireall成功完成第一个drl文件
后,我需要从java代码中执行此操作答案 0 :(得分:1)
似乎你不能包含来自另一个的drl文件,但是你可以以编程方式这样做..根据这个thread,下面的代码可以用来将2个drl文件合并到同一个ruleBase中,就像它们一样工作在同一个文件中。
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader(getClass().getResourceAsStream( "common.drl" ) ) );
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "rules1.drl" ) ) );
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage( builder.getPackage() );