Windows工作流规则引擎 - 确定正在执行的规则

时间:2011-10-14 11:57:39

标签: c# workflow-foundation-4 workflow-activity rule-engine

SETUP

我们正在使用Windows工作流规则引擎来实施折扣系统。我们的规则设置如下:

Rule Name: 10% Discount on Foo Chairs
Priority: 0
Reevaluation: Never
Active: True
Condition: this.MatchesSKUs("SKU1", "SKU2")
Then Actions: this.ForMatchingSkus.ApplyDiscount(.10m)

我们定义了几个这样的规则,某些产品可能属于多个规则。在我们的“cart”对象中,我们有一个执行规则引擎的方法。

var discountEngine = new DiscountEngine(discountRuleSetEnabled);
var execution = new RuleExecution(validation, discountEngine);
discountEngine.ruleExecution = execution;
if (discountRuleSet.RuleSet != null)
{ discountRuleSet.RuleSet.Execute(execution); }

折扣运作良好且良好,一切都几乎罚款。

ISSUE

随着规则的执行,我需要跟踪实际使用的规则并提供折扣>例如,上面的规则最终运行

ApplyDiscount(decimal discountPercent)

方法,用于将折扣对象固定到购物车订单项。我需要知道这个“应用折扣”的实例是通过 10%Foo Chairs折扣规则来调用的。我尝试了各种方法但无法找到每个规则的上下文传递的位置。我一直在查看 ActivityExecutionContext 对象,但是我无法在我设置的条件或操作方法中获取上下文。

0 个答案:

没有答案