的 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 对象,但是我无法在我设置的条件或操作方法中获取上下文。