📜  C-决策(1)

📅  最后修改于: 2023-12-03 15:14:05.001000             🧑  作者: Mango

C-决策

简介

C-决策库是一个面向对象的决策引擎库,主要用于规则引擎开发场合,支持多个规则库、多级规则组、多规则集合的复杂场景。

核心概念
Rule

一个 Rule 是一个单独的、可执行的规则。

其中,Rule 包含属性和行为两个部分:

属性:

  • name: 规则名称
  • description: 规则描述
  • priority: 规则优先级,用于排序执行顺序
  • condition: 规则条件,判断该规则是否生效
  • consequence: 规则结果,当规则条件满足时执行的行为

使用 C-决策库,我们直接创建 Rule 对象,其中定义规则的属性和行为。

#include <cdt.h>

Rule myRule;                    
myRule.name=<ruleName>;
myRule.description=<ruleDescription>;
myRule.priority=<rulePriority>;
myRule.condition=<ruleCondition>;
myRule.consequence=<ruleConsequence>
RuleSet

一个 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

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-决策:如何使用

下面是一个简单的示例,展示了如何使用 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-决策库,我们可以更方便、高效地管理和执行规则,实现对业务逻辑的精细控制和高效验证。