Windows Workflow Foundation 中的策略与规则应用
1. 规则与策略的基本概念
在编程领域,大家对编写命令式代码往往驾轻就熟。命令式代码是通过编程结构来实现业务流程的 C# 代码,例如读取数据库表、将表中某些列的值相加,然后将总和写入另一个数据库表。但在 Windows Workflow Foundation (WF) 中,我们将深入研究规则,规则是控制工作流执行的机制,属于声明式代码。
声明式代码通常在应用程序执行时被解释,而非编译成程序集。ASP.NET 2.0 中的许多新特性,如数据绑定和改进的模板化控件,都采用了声明式编程方式,这使得开发者无需编写大量 C# 代码就能完成数据绑定和复杂控件渲染任务。WF 同样具备声明式能力,不过它绑定的是规则和策略,而非数据。
规则和策略究竟是什么呢?在编写涉及数据或流程的程序时,我们会将对数据或流程的理解转化为计算机可执行的代码。例如,处理支票账户的逻辑:“如果可用余额列的值小于请求的值,则抛出一个新的透支异常”,其伪代码如下:
IF (requestedValue > AvailableBalance) THEN throw new OverdraftException("Insufficient funds.")然而,实际情况往往更复杂。如果银行客户有透支保护,在主账户资金不足时可使用二级账户;或者客户没有透支保护,但有自动透支信贷额度;又或者两者都有,该如何选择呢?处理这些情况的代码会变得复杂且难以维护。
在 WF 中,我们可以构建声明式规则,并使