“高级策略”示例
此示例扩展了简单策略示例。 除了简单策略示例中的住户折扣和企业折扣规则外,还添加了若干新规则。
添加了一条高价值规则,可为高价值订单提供更大的折扣。 该规则被赋予了比前两条规则更小的优先级值,因此它将覆盖折扣字段,并优先于住户折扣或企业折扣规则。
另外还添加了一条计算总计规则,可基于折扣级别计算出总计。 它显示了如何引用工作流活动上定义的方法,以及如何使用其他操作。 此规则还演示了链接行为,因为任何时候当折扣字段发生更改时都会计算该规则。 而且,还通过 CalculateTotal 方法上的 RuleWriteAttribute 显示了方法属性设置。 这样,无论何时在执行方法时,都会重新计算受影响的规则 (ErrorTotalRule)。
添加的最后一条规则是用于检测错误(本例中为总计小于 0)的规则。 如果出现这种错误,策略执行将停止。
最后,还以操作的形式向每条规则中添加了 Console.Writeline 调用,以使规则执行的可见性更高,同时还显示它可能访问所引用类型上的静态方法。 您还可以使用跟踪来查看所执行的规则(有关示例,请参见 RuleActionTrackingEvent 示例)。
此示例中使用的规则包括:
ResidentialDiscountRule:
IF OrderValue > 500 AND CustomerType = Residential
THEN Discount = 5%
BusinessDiscountRule:
IF OrderValue > 10000 AND CustomerType = Business
THEN Discount = 10%
HighValueDiscountRule:
IF OrderValue > 20000
THEN Discount = 15%
TotalRule:
IF Discount > 0
THEN CalculateTotal(OrderValue, Discount)
ELSE Total = OrderValue
ErrorTotalRule:
IF Total < 0
THEN Error = "Fired ErrorTotalRule"; Halt
也可以通过追踪和跟踪看到规则的计算和执行过程。 有关更多信息,请参见 RuleActionTrackingEvent 示例。
生成示例
通过单击本主题中的**“下载示例”**来下载该示例。
这会将示例项目提取到本地硬盘。
单击**“开始”,依次指向“程序”和“Microsoft Windows SDK”,然后单击“CMD 外壳”[CMD Shell]**。
转到示例的源目录。
在命令提示符处键入 MSBUILD <解决方案文件名>。
运行示例
- 在 SDK 命令提示窗口中,运行 AdvancedPolicy\bin\debug 文件夹(对于该示例的 VB 版本为 AdvancedPolicy \bin 文件夹)中的 .exe 文件,该文件夹位于该示例的主文件夹下。
请参见
参考
其他资源
“简单策略”示例
Tutorial: Use Rules and Conditions
Using the PolicyActivity Activity
“活动”示例
Windows Workflow Foundation 示例
版权所有 (C) 2007 Microsoft Corporation。保留所有权利。