“高级策略”示例

Download sample

此示例扩展了简单策略示例。 除了简单策略示例中的住户折扣和企业折扣规则外,还添加了若干新规则。

添加了一条高价值规则,可为高价值订单提供更大的折扣。 该规则被赋予了比前两条规则更小的优先级值,因此它将覆盖折扣字段,并优先于住户折扣或企业折扣规则。

另外还添加了一条计算总计规则,可基于折扣级别计算出总计。 它显示了如何引用工作流活动上定义的方法,以及如何使用其他操作。 此规则还演示了链接行为,因为任何时候当折扣字段发生更改时都会计算该规则。 而且,还通过 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 示例

生成示例

  1. 通过单击本主题中的**“下载示例”**来下载该示例。

    这会将示例项目提取到本地硬盘。

  2. 单击**“开始”,依次指向“程序”“Microsoft Windows SDK”,然后单击“CMD 外壳”[CMD Shell]**。

  3. 转到示例的源目录。

  4. 在命令提示符处键入 MSBUILD <解决方案文件名>

运行示例

  • 在 SDK 命令提示窗口中,运行 AdvancedPolicy\bin\debug 文件夹(对于该示例的 VB 版本为 AdvancedPolicy \bin 文件夹)中的 .exe 文件,该文件夹位于该示例的主文件夹下。

请参见

参考

RuleSet
PolicyActivity

其他资源

“简单策略”示例
Tutorial: Use Rules and Conditions
Using the PolicyActivity Activity
“活动”示例
Windows Workflow Foundation 示例

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。