📅  最后修改于: 2023-12-03 15:14:05.001000             🧑  作者: Mango
C-决策库是一个面向对象的决策引擎库,主要用于规则引擎开发场合,支持多个规则库、多级规则组、多规则集合的复杂场景。
一个 Rule 是一个单独的、可执行的规则。
其中,Rule 包含属性和行为两个部分:
属性:
使用 C-决策库,我们直接创建 Rule 对象,其中定义规则的属性和行为。
#include <cdt.h>
Rule myRule;
myRule.name=<ruleName>;
myRule.description=<ruleDescription>;
myRule.priority=<rulePriority>;
myRule.condition=<ruleCondition>;
myRule.consequence=<ruleConsequence>
一个 RuleSet 是一组规则的集合,通常具有特定的目标和语义。
使用 C-决策库,一个 RuleSet 中包含多个 Rule 对象,这些 Rule 对象的执行顺序由 RuleSet 的属性来排序决定。
#include <cdt.h>
RuleSet myRuleSet;
myRuleSet.name=<ruleSetName>;
myRuleSet.description=<ruleSetDescription>;
myRuleSet.rules=<ruleSetRules>;
myRuleSet.priority=<ruleSetPriority>;
// 添加规则到 RuleSet 中
myRuleSet.addRule(<ruleName1>);
myRuleSet.addRule(<ruleName2>);
RuleGroup 是 RuleSet 的子集合,用于更精细的规则控制。
一个 RuleGroup 可以包含多个 RuleSet 或者 RuleGroup。
在 RuleSet 之中,每个 RuleGroup 都代表一组可执行的 Rule 对象集合。
使用 C-决策库,我们可以创建 RuleGroup 对象来分组管理 RuleSet 或 RuleGroup,定义其优先级和执行逻辑,方便后续维护和规则重用。
#include <cdt.h>
RuleGroup myRuleGroup;
myRuleGroup.name=<ruleGroupName>;
myRuleGroup.description=<ruleGroupDescription>;
myRuleGroup.Type=<ruleGroupType>;
myRuleGroup.priority=<ruleGroupPriority>;
myRuleGroup.ruleSets=<ruleGroupRuleSets>;
// 添加 RuleSet 或 RuleGroup 到 RuleGroup 中
myRuleGroup.addRuleSet(<ruleSetName1>);
myRuleGroup.addRuleGroup(<ruleGroupName1>);
下面是一个简单的示例,展示了如何使用 C-决策库来创建一个 RuleSet 和 Rule,包括设置属性和行为、构建规则集和执行规则集中的规则。
#include <cdt.h>
void main()
{
// 创建 Rule 对象
Rule myRule;
myRule.name=<ruleName>;
myRule.description=<ruleDescription>;
myRule.priority=<rulePriority>;
myRule.condition=<ruleCondition>;
myRule.consequence=<ruleConsequence>;
// 创建 RuleSet 对象
RuleSet myRuleSet;
myRuleSet.name=<ruleSetName>;
myRuleSet.description=<ruleSetDescription>;
myRuleSet.priority=<ruleSetPriority>;
// 添加 Rule 到 RuleSet 中
myRuleSet.addRule(myRule);
// 执行 RuleSet 中的 Rule
myRuleSet.executeRules();
return 0;
}
C-决策库是一个灵活、可定制、易于使用的规则引擎库。通过 C-决策库,我们可以更方便、高效地管理和执行规则,实现对业务逻辑的精细控制和高效验证。