【问题标题】:WF Rules - Chaining for IndexersWF 规则 - 链接索引器
【发布时间】:2012-08-17 09:55:03
【问题描述】:

实体-属性模式用于我们的应用程序结构(即)属性以键值对表示并通过索引器访问。

计划使用工作流规则引擎来配置此结构中的规则。但是在任何地方都找不到链接机制应用程序示例。如果使用索引器属性,是否需要知道如何在规则中应用链接?

问候,

Mani.M

【问题讨论】:

  • 链接是什么意思?
  • Chaining 基于属性更新建立规则的执行流程。例如。在消费者实体中,如果配置了两个规则。一个计算工资,另一个计算奖金。工资计算应先于奖金。它将通过链接 wrokflow 规则引擎的功能来建立。
  • 只想对索引器应用相同的内容。需要知道如何应用它。
  • 这么有效,您只是想指定规则执行的顺序?

标签: workflow-foundation chaining rule indexer


【解决方案1】:

所以你可以做的是在将规则添加到RuleSet 之前设置规则的Priority,这样WF 就可以正确地对规则进行排序。您需要创建自己的RuleSet 以简化此操作,下面是您可能想做的示例。

public class MyRuleSet
{
    // this is the WF rule set
    private RuleSet ruleSet = new RuleSet();

    private const int maxRuleSetSize = 1000;

    public void AddRule(Rule rule)
    {
        rule.Priority = maxRuleSetSize - (this.ruleSet.Rules.Count + 1);
        this.ruleSet.Rules.Add(rule);
    }
}

然后,当您准备好执行规则时,您需要使用新的 RuleSet 构建 RuleSet,以便它们按照添加的顺序执行。

var ruleSet = new MyRuleSet();
ruleSet.AddRule(new Rule1());
ruleSet.AddRule(new Rule2());
...

然后你需要执行RuleSet

【讨论】:

  • 对不起...这是手动设置规则优先级..通常,对于特定实体,可以随时添加规则,用户不知道现有规则。如果在不同时间添加规则,则设置添加规则的优先级不起作用......如果这是解决方案,则不需要在规则引擎中内置链接。这是规则引擎的特点之一...请正确答案...
  • @user1606558 - 不幸的是,WF 规则引擎的工作方式是线性执行RuleSet,所以答案可能是它对你不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
  • 1970-01-01
  • 2023-03-18
  • 2019-01-24
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多