Механизм правил Windows Workflow - определите, какое правило выполняется - PullRequest
1 голос
/ 14 октября 2011

НАСТРОЙКА

Мы используем механизм правил рабочего процесса 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)

У нас определено несколько таких правил, и некоторые продукты могут подпадать под несколько правил.В нашем объекте «тележка» у нас есть метод, который выполняет механизм правил.

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

Скидки работают хорошо и хорошо, и все почти отлично.

ВЫПУСК

Поскольку правила выполняются, мне нужно отслеживать правила, которые фактически используются, и предоставлять скидку> 0. Например, приведенное выше правило в конечном счете запускает

ApplyDiscount(decimal discountPercent)

метод, который привязывает объект скидки к позиции корзины.Мне нужно знать, что этот экземпляр «Применить скидку» вызывался по правилу 10% скидка на стулья Foo Chairs .Я пробовал различные методы, но не могу найти, где передается контекст каждого правила.Я смотрю на объект ActivityExecutionContext , но у меня возникают проблемы с получением контекста в рамках условий или методов действия, которые я настроил.

...