当前位置: 首页 > 知识库问答 >
问题:

Drools-并非所有操作都在规则触发时执行

乌鸿宝
2023-03-14

目前,我有一个很大的决策表,其中包含许多条件/操作。决策表一直有效,直到我最近添加了一个新操作。它似乎没有执行。

通过setter更新以下字段:

  • PRM_LIB01
  • PRM_LIB09
  • PRM_LIB10

但是,未更新PRM\U LIB18。即使我切换PRM\u LIB10和PRM\u LIB18的操作,也只有PRM\u LIB10的列得到更新。

因此,基于此,我希望它也执行setPRM\u LIB18(“GC”),但这不会发生。

然后我尝试查看Drools实际生成的类文件,以查看是否一切正常,但我无法正确查看生成的字节码。

我真的不知道为什么它不起作用。有人知道吗,或者我如何调试操作的实际调用,看看为什么它没有执行?

共有1个答案

湛财
2023-03-14

这不太可能。您如何确定此操作未执行?是否有其他规则也可能修改PRM_LIB18?

为了快速调试,添加另一个包含修改对象打印输出的操作列——至少是修改后的字段。

如果您仍然没有头绪,请尝试此代码并报告完整/截断为基本输出。

private void testSpreadsheet(){
  File dtf = new File( dtPath );
  InputStream is;
  try {
    is = new FileInputStream( dtf );
    SpreadsheetCompiler ssComp = new SpreadsheetCompiler();
    String s = ssComp.compile( is, InputType.XLS );
    System.out.println( "=== Begin generated DRL ===" );
    System.out.println( s );
    System.out.println( "=== End generated DRL ===" );
  } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
}
 类似资料:
  • 我在我的项目中使用drools,并假设它有100条规则。我有两个流程(通常它有开始节点- 现在我使用第一个进程流的kiesation和调用start进程,我看到它加载了所有100条规则而不是只有50条,并给我编译和运行时错误。所以请帮助我理解为什么来自不同规则流组的规则在一个流程中执行,这些规则与它的规则流组无关?我在加载条件时看到了所有这些。

  • 我是个流口水的新手。我创建了以下对象: 和a*。包含规则的drl文件: 在Postman中,我试图用以下主体调用规则: 我得到了以下答案: 问题是,我的值为空,而不是我期望作为响应的对象。server.log是空的,我看不出有什么问题。请你帮我。 非常感谢你。

  • 假设我有一个议程组“daily”,它有两组drools规则集A有规则“default-1”,“default-2”,“default-3”,集B有规则“custom-1”,“custom-2”,“custom-3” 当议程组“daily”变得集中,并且当前事实与自定义模式匹配时,我只希望“custom-1”和/或“custom-2”和/或“custom-3”触发;否则,只有“Default-1”和

  • 这两个在Drools中有什么区别??意味着我们可以根据 从加载的规则库和触发规则创建WorkingMemory,如下所示: vs公司 使用会话(有状态的。无状态)触发规则,如图所示

  • 我在同一个drl文件中有两个Drools规则,如下所示: 我的想法是用第一条规则处理所有处于临界状态的事件。然后使用第二个规则,如果任何阀门有警报,这是由“如果临界”规则设置的,发送一个短信。 你知道吗?用口水可能吗?

  • 我对口水很陌生,从基础开始。这是一个设置; > 有一些规则文件 不同文件中的规则属于不同的议程组 所有规则都基于同一事实 在我的单元测试中,我获得了一个特定的“议程组”,设置焦点(