2

我想检查是否有任何组件可以让我获得基本规则引擎。引擎应该能够接收一个规则字符串,这将是基本的逻辑规则,将返回 TRUE 或 FALSE。它应该接受一个用于输入的字符串映射和一个用于比较目的的字符串映射。

示例 1:

I want to check if the Object is of type "Apple"
The text rule would say "OBJECT_TYPE=="FRUIT" & FRUIT_TYPE=="Apple""
If Input is MAP1 ==> { (OBJECT_TYPE->FRUIT),(FRUIT_TYPE->Apple) }
        MAP2 ==> NULL 
Output should be TRUE

If Input is MAP1 ==> { (OBJECT_TYPE->FRUIT),(FRUIT_TYPE->Orange) }
        MAP2 ==> NULL 
Output should be FALSE

示例 2:

I want to check if the Object is of type "Apple" and group with size
The text rule would say "OBJECT_TYPE=="FRUIT" & FRUIT_TYPE=="Apple""
If Input is MAP1 ==> { (OBJECT_TYPE->FRUIT),(FRUIT_TYPE->Apple), (SIZE->BIG) }
        MAP2 ==> {(SIZE==BIG)}
Output should be TRUE

If Input is MAP1 ==> { (OBJECT_TYPE->FRUIT),(FRUIT_TYPE->Apple), (SIZE->SMALL) }
        MAP2 ==> {(SIZE==BIG)}
Output should be FALSE

这个想法是根据逻辑规则比较 2 个映射并返回 TRUE 或 FALSE。它还应该支持算术逻辑,例如规则中的权重 > 50,因此对输入映射进行相同的检查。系统的输出可以是 TRUE、FALSE、INPUT MAP 未完全填充、规则错误等。

有谁知道某些开源是否已经提供了这种类型的功能?

4

1 回答 1

0

也许答案是否定的。您的情况太具体了,因此您可能应该编写自己的 owen 组件。以我的经验,你可以写一个语法解析器,boost.spirti 可能是一个很好的伙伴。

于 2013-08-21T10:11:46.587 回答