Drools 消失声明,将Kie工件添加到Kie文件系统

Drools 消失声明,将Kie工件添加到Kie文件系统,drools,drools-fusion,Drools,Drools Fusion,我们使用文件系统动态管理Drools规则。当我有一个新的规则时,我会使用KieSystem将它添加到KieServices中,但我会覆盖我的规则,而不是附加它们。一旦我插入另一个规则,我在以前的规则中创建的声明就不再存在了 在这次测试之后,我对代码进行了建模 简单例子 口水参考 必须有一种方法来附加这些规则,否则就不会有这种方法来更改它们了?我正在寻找的效果可以使用中确定的技术来实现 如果我正确地遵循IncrementalComplationTest,那么在我看来,我需要找到一种方法来检索现

我们使用文件系统动态管理Drools规则。当我有一个新的规则时,我会使用KieSystem将它添加到KieServices中,但我会覆盖我的规则,而不是附加它们。一旦我插入另一个规则,我在以前的规则中创建的声明就不再存在了

  • 在这次测试之后,我对代码进行了建模
  • 简单例子
  • 口水参考
必须有一种方法来附加这些规则,否则就不会有这种方法来更改它们了?我正在寻找的效果可以使用中确定的技术来实现

如果我正确地遵循IncrementalComplationTest,那么在我看来,我需要找到一种方法来检索现有规则,并以AddRemoveUleTest的方式将它们用新规则附加到新的jar中。我不想回到数据库去获取现有的规则。怎么做


如果我继续使用这个更笨拙、但与maven兼容的方法,我需要找出哪种方法是向会话动态添加规则的更好方法?据我所知,我们使用添加版本的Kie工件作为maven实践,而AddRemoveUleStest方法不使用这种实践。请参见

此处和中引用的集成测试都是测试,并不是真正用于实现Drools应用程序的示例。请注意,导入包括org.kie.internal下面的包,所有这些包都不包括在API的稳定部分中,也不包括在Drools安装附带的Javadoc集中。你进入未知领域,危险就在前方。一般的建议是不要将应用程序基于该代码。感谢您的评论和对这个问题的考虑,劳恩。我删除了另一个问题,这样我们就不会在两个地方有相同的评论。我还在想是否有答案。就实践而言,有很多人在使用动态规则构建,我并不是一觉醒来就决定要使用内部库构建一个实现,这种技术是由来自RedHat的org.drools board上的重量级人物推荐的。Uncharted很好,所有这些库都是在大型代码reorg中提出的。简言之,在DRL级别修改规则集是一项CM活动,应该使用CM工具来处理。在这样的修改之后重建是一个构建步骤,最好使用完整(新)集再次完成。我不知道Drools如何自动切换到一个新的规则库和一个新的会话,但我宁愿不依赖一个可能符合或不符合应用程序要求的过程。如果你发现一个文件承诺某个程序会这样做,你喜欢它:当然。否则:小心。
KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
builder.add( ResourceFactory.newReaderResource( new StringReader( ruleBuilder.getRule() ) ), ResourceType.DRL);
if(builder.hasErrors()){
    _log.error( builder.getErrors().toString() );
    return;
}

//This is where the magic happens.  How equivalent with versioned deployable artifacts?  
base.addKnowledgePackages(builder.getKnowledgePackages());