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

Drools正在加载所有规则

汤飞翮
2023-03-14

我在我的项目中使用drools,并假设它有100条规则。我有两个流程(通常它有开始节点-

现在我使用第一个进程流的kiesation和调用start进程,我看到它加载了所有100条规则而不是只有50条,并给我编译和运行时错误。所以请帮助我理解为什么来自不同规则流组的规则在一个流程中执行,这些规则与它的规则流组无关?我在加载条件时看到了所有这些。

共有1个答案

胥承
2023-03-14

Drools中的“工作单元”是KieBase,而不是规则流组。KieBase中的所有规则都将出现在KieSessions中,并在需要时进行评估。

希望有帮助,

 类似资料:
  • 我使用Drools 7作为规则引擎。最初,我使用以下代码从类路径加载规则,以构建无状态KieSession: 然后我决定从DB加载规则,下面是代码: 令我担心的是,KnowledgeBuilder界面位于一个内部包(“org.kie.internal”)中。 当使用“公共”API从DB加载规则时,是否有其他方法构建无状态KieSession?

  • 问题内容: 到目前为止,我还没有找到在Drools 6.0.0中将规则添加到正在运行的KieSession的最佳方法(即以最小的开销),而仍然将我的事实保留在KieSession中。在Drools 5中,当更改KBase时更新了KSession,但对于Drools 6而言却并非如此,因为我的规则未在KieBase中创建。有没有一种方法可以替换整个KieFileSystem中的整个KieModule

  • 现在,我们正试图根据业务规则的需要集成。我们希望将所有规则存储在数据库中,这些规则将在JBPM服务器启动时(或Java VM启动时)加载。因此,规则将被加载到工作内存中,并可在需要时在JBPM流程中使用。 这里有2个问题:- 1)如何完成这一工作(从数据库加载规则,并在JBPM服务器加载时将它们放入JBPM和Drools的工作内存中)? 其思想是,一旦加载了规则,就可以根据需要访问进程中的任何地方

  • 到目前为止,我还不知道在Drools 6.0.0中向正在运行的Kie会话添加规则并仍然将我的事实保存在Kie会话中的最佳方法(意味着以最小的开销)。在Drools 5中,当KBase更改时,K会话会更新,但Drools 6似乎并非如此,因为我的规则不是在KieBase中创建的。有没有一种方法可以在不更换KieFileSystem中的整个KieModules或Jars的情况下做到这一点。我认为应该有

  • 问题内容: 我有一个.DRL文件,其中有10条规则。插入事实后,可能会匹配一些规则-如何找出以编程方式匹配的规则? 问题答案: 请注意,此答案对不超过5.x的Drools版本有效。 如果您已升至6或更高,请查看@ melchoir55的修改后答案。我还没有亲自测试过,但是我相信它会起作用。 若要跟踪规则激活,可以使用AgendaEventListener。下面是一个示例,可在此处找到: https

  • 目前,我有一个很大的决策表,其中包含许多条件/操作。决策表一直有效,直到我最近添加了一个新操作。它似乎没有执行。 通过setter更新以下字段: PRM_LIB01 PRM_LIB09 PRM_LIB10 但是,未更新PRM\U LIB18。即使我切换PRM\u LIB10和PRM\u LIB18的操作,也只有PRM\u LIB10的列得到更新。 因此,基于此,我希望它也执行setPRM\u LI