标签: rule-engine

如何实现规则 如果我只想执行一条规则而不是执行 Drools 规则引擎中的所有规则?

我想实现规则引擎,其中如果仅执行一个条件,则它不会检查其他指定的条件。

rule "Print out lower-case tokens"
when
    Token ( coveredText == coveredText.toLowerCase )
then
    System.out.println("Found a lower case token with text");
end


rule "Print out long tokens with more than 5 characters"
    when
        Token ( tokenText : coveredText, end - begin > 5 )
    then
        System.out.println("Found a long token with more than 5 characters \"" + tokenText + "\"");
end
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,如果 CoveredText 和它的小写字母相等,那么我不想检查另一个规则。
我怎样才能在 中实现这种性质Drools Rule Engine

rule-engine drools rule

2
推荐指数
1
解决办法
4238
查看次数

Drools规则格式仅触发一次

我正在使用drools 6引擎.假设我有一个帐户对象,其中包含一系列部分,每个部分都有一个状态标志,可以是"GOOD"或"BAD".如果我要写下面的内容:

rule "Check if account has a good subsection"
when
    $account : Account()
    SubSection (status == "GOOD") from $account.getSubSections()
then
    insertLogical(new AccountIsGood($account));
end
Run Code Online (Sandbox Code Playgroud)

AccountIsGood($account)如果至少有一个部分是好的,我希望这只是添加逻辑规则.但是,似乎这不仅仅检查一个成功的子部分并结束规则,而是继续检查所有子部分并为每个有效子部分插入逻辑规则.例如,如果一个帐户有四个有效的小节,我会获得该帐户的四个规则副本.

所以我的问题是,是否有办法重写此规则以获得所需的行为?

帐户类:

public class Account {
  private List<SubSection> subsections;

  // Getters / Setters/ other code
}
Run Code Online (Sandbox Code Playgroud)

java rule-engine drools

2
推荐指数
1
解决办法
1867
查看次数

Nools和流口水

我很高兴在Node中看到一个规则引擎,并在阅读Java文档的同时(尤其是:http ://docs.jboss.org/drools/release/6.1.0.Final/drools)在Java世界中查看了Drools。-docs / html_single / index.html#PHREAK)发现 Drools 6.0已经发展,现在使用PHREAK方法进行规则匹配。感兴趣的特定段落是:

RETE中每次成功的加入尝试都会产生一个元组(或令牌,或部分匹配),该元组将传播到子节点。因此,它被描述为面向元组的算法。对于到达的每个子节点,它将尝试与该节点的另一侧进行联接,再次,每次成功的联接尝试都将立即传播。这将产生下降递归效果。当节点网络从进入beta网络的点到所有可到达的叶节点上下左右波动时,对节点网络进行处理。

对于复杂的规则和超过一定限制的规则,以上引述说基于RETE的方法会浪费大量内存,因此它演变为PHREAK。

由于nools基于Rete算法,以上方法是否有效?是否进行过与PHREAK类似的优化?与Drools有任何比较吗?

rule-engine drools node.js

2
推荐指数
1
解决办法
4199
查看次数

Activiti和Drools ......够用了吗?

我被要求开始为一些客户端演示探索Activiti工具.该演示还将有JBoss Drools与Activiti集成. 我是这些工具和业务流程世界的新手,所以如果问题愚蠢,请原谅.

问题是你为什么需要Drools?这项工作的活动不够吗?它们都有条件元素,那么为什么你需要在drools之上激活?

rule-engine drools bpmn activiti

2
推荐指数
1
解决办法
1333
查看次数

流口水规则中是否存在多个布尔条件?

我创建了一个“何时”条件如下的规则:

when
    $map: Map(this["key1"].equals("value1")) and Map(this["key2"].equals("value2"))  
then
...
Run Code Online (Sandbox Code Playgroud)

以上条件正常。现在如何在规则中添加多个布尔条件?例如。上面的规则可以概括为:a和b,因此,如果我想创建一个规则:(a和b)或c,那么实际的drl语法是什么。我是流口水的新手,所以请帮助我介绍规则(a和b)或c的语法。

我确实创建了一个语法

when
    $map: Reindexing((Map(this["key1"].equals("value1")) and Map(this["key2"].equals("value2"))) or  Map(this["key3"].equals("value3"))) 
then
Run Code Online (Sandbox Code Playgroud)

但是我有以下异常

错误消息:消息[id = 1,level = ERROR,path = mapIterationRules.drl,line = 13,column = 0,text = [ERR 101]行13:21在规则“ first rule”中输入'('处没有可行的选择]

谢谢

java rule-engine drools

2
推荐指数
1
解决办法
8604
查看次数

基于规则的数据库引擎

我想在Oracle中为PeopleSoft Time入门应用程序设计一个基于规则的数据库引擎.我该怎么做呢?

rule-engine

1
推荐指数
1
解决办法
4722
查看次数

使用SQL SERVER构建业务规则引擎

我需要构建业务规则引擎.我使用的是SQL SERVER 2005.业务规则非常庞大,就像2000页长.

例如.

If col1 = 'xyz' then populate col2 otherwise not.
if col3 = 'abc' and col4 = 'def' then col5 = 'ghy'
Run Code Online (Sandbox Code Playgroud)

等等

所以,我认为我们不能只在程序中的if else条件下编写所有这些规则.所以,我可以创建一个决策表,并将该表上的所有条件作为记录.但我不知道该怎么做.

任何人都有任何想法,怎么做?

谢谢

sql-server rdbms rule-engine business-rules system-design

1
推荐指数
1
解决办法
1561
查看次数

Drools:使用Session与WorkingMemory触发规则

这两者在Drools中有什么区别?意思是说我们可以根据

从加载的Rules RulesBase和触发规则创建WorkingMemory,如下所示:

WorkingMemory  workingmemory = rulebase.newWorkingMemory();
workingmemory.fireAllRules();
Run Code Online (Sandbox Code Playgroud)

使用会话(有状态。无状态)来触发规则,如图所示

KnowledgeBase knowledgebase = createKnowledgeBase();
StatefulKnowledgeSession session = knowledgebase.newStatefulKnowledgeSession();
session.insert(Object);
session.fireRules();
Run Code Online (Sandbox Code Playgroud)

rule-engine drools

1
推荐指数
1
解决办法
1299
查看次数

使用IBM规则引擎

我被要求编写一个与IBM规则引擎(ILog)一起使用的概念证明(POC).

我在IBM网站上看到了很多文档,但仍未设法使用它来推进POC.

有没有人使用IBM规则引擎,可以给我关于这个规则引擎如何工作的高级解释?

rule-engine ilog

1
推荐指数
1
解决办法
5295
查看次数

hadoop的规则引擎

我正在为我的项目评估规则引擎.该项目将基于hadoop.我使用DROOLS完成了一些POC.基本上我在Mapper端使用DROOL.基于以下是我的观察和查询.

1)a)我使用DROOLS(需要大约17秒)对3百万个对象发出规则b)我使用if/else循环应用相同的逻辑,如同DRL文件中的3百万个对象,没有drools,使用简单的Java对象(带走.17秒).b约为 比a快100倍.这是正常的行为吗?有没有办法将规则编译为java字节码/类.

2)除了DROOLS之外,什么是最快的基于Java的规则引擎框架.是否有人使用普通GROOVY开发了规则引擎.任何其他框架建议,将业务规则编译为java字节代码,这将导致更快的规则评估?

3)有人对hadoop最适合的DSL/Rule框架有一些经验.

groovy hadoop rule-engine drools

1
推荐指数
1
解决办法
2949
查看次数

从规则 jess 或 drools 返回一个值(专家系统)

在 jess 中,从规则返回字符串的方法如下:

(defrule welcome-toddlers
"Give a special greeting to young children"
(person {age < 3})
=>
(printout t "Hello, little one!" crlf))
Run Code Online (Sandbox Code Playgroud)

我的问题是如何实现返回功能,这就是我想要的:

(defrule welcome-toddlers
"Give a special greeting to young children"
(person {age < 3})
=>
(return "Hello, little one!"))
Run Code Online (Sandbox Code Playgroud)

如果不可能怎么办?

java rule-engine drools expert-system jess

1
推荐指数
1
解决办法
3176
查看次数

使用 Tomcat 设置 Drool 时出现“java.lang.RuntimeException:找不到 KieModule”

我们已经使用 Tomcat 8.0 设置并部署了 Drool 7.15 应用程序。然而,问题是当我们尝试部署规则时,我们遇到了以下异常。java.lang.RuntimeException: Cannot find KieModule: com.tisl.mpl.ruleengine:rrt-kjar:1.0.0

有什么办法可以解决这个问题?同样的 jar 在 Wildfly(jBOSS) 中运行良好

2019 年 9 月 14 日 18:24:06.510 严重 [http-nio-8080-exec-8] org.kie.server.services.impl.KieServerImpl.createContainer 为模块“com.tisl.mpl”创建容器“RRTRULE”时出错。 Ruleengine:rrt-kjar:1.0.0' java.lang.RuntimeException: 找不到 KieModule: com.tisl.mpl.ruleengine:rrt-kjar:1.0.0 在 org.drools.compiler.kie.builder.impl.KieServicesImpl。 newKieContainer(KieServicesImpl.java:117) 在 org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:111) 在 org.kie.server.services.impl.KieServerImpl.createContainer(KieServerImpl.java: 214) 在 org.kie.server.remote.rest.common.resource.KieServerRestImpl.createContainer(KieServerRestImpl.java:90) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:498)在org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl) .java:168) 在 org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269) 在 org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227) 在 org.jboss.resteasy。 core.ResourceMethod.invoke(ResourceMethod.java:216) 在 org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:541) 在 org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523)在 org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125) 在 org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) 在 org.jboss.resteasy.plugins .server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) 在 org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) 在 javax.servlet.http.HttpServlet.service(HttpServlet) .java:741) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.tomcat。 websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) …

tomcat rule-engine drools

1
推荐指数
1
解决办法
6954
查看次数