c++ - 比较 2 个字符串映射的通用 C++ 规则引擎

标签 c++ rule-engine

我想检查是否有任何组件可以为我提供基本规则引擎。引擎应该能够接受规则字符串,这将是基本的逻辑规则,它将返回 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 未完全填充、规则错误等。

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

最佳答案

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

关于c++ - 比较 2 个字符串映射的通用 C++ 规则引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18354150/

相关文章:

c++ - cmake + 痛饮 + 依赖项

c++ - 防止在复制构造函数中切片

C++ 无法翻转 ppm 图像

c++ - 使用 DCMTK (C++) 压缩 DICOM 文件

float 组的 C++ vector 构建问题

java - 为什么我们不能用 Java 文件而不是 .drl 文件来编写业务规则?

java - 执行我的 drools 规则后如何返回多个 Assets ?

java - 如何访问 drools 中自定义对象的映射

java - 超能力规则语言: context nesting

node.js - 如何在node.js中实现用户定义的规则?