规则集中的规则计算
规则技术在 Windows Workflow Foundation 中以两种主要方式展现:
作为活动的条件。
作为 PolicyActivity 活动中的正向链接规则集。
本节稍后的部分将讨论正向链接,但是简而言之,它是指一种能力,这种能力使一个规则的操作可以导致其他相关规则被重新计算。
开发人员使用规则条件而不是代码条件的主要原因是,规则条件已成为模型的一部分,并且可在执行工作流实例时进行运行时动态更新。 规则条件的第二个优点是,在其成为模型的一部分之后,可在该模型的基础之上生成更多复杂的工具,以提供额外的创作体验、依赖关系管理、跨条件分析等等。
PolicyActivity 活动封装了 RuleSet 的定义和执行。 RuleSet 是具有一组执行语义的规则的集合。 而规则就是对工作流成员进行操作的 If-Then-Else 表达式。
规则计算
RuleSet 中的每条规则都有默认值为“0”的优先级值。 可以将 RuleSet 中的规则视为一个有序集合,该集合按优先级值排序。 Windows Workflow Foundation 规则计算器逐条计算规则,并根据规则条件的计算结果执行该规则的操作。
计算机制从概念上可描述为:
从活动规则的列表开始。
查找优先级最高的规则。
计算该规则,然后相应地执行其 Then/Else 操作。
如果某条规则的操作更新某个字段或属性,并且该字段或属性由列表中前面的一条或多条规则(这些规则具有更高的优先级)的条件所使用,则重新计算前面的这些规则。
备注
只有那些有着特定依赖关系的规则才会被重新计算。
继续执行该过程,直至 RuleSet 中的所有规则都已计算(或者执行了 Halt)。
在下面的概念性示例中,假定有下面的规则集,其中“A”、“B”等等表示工作流中的数据。
Rule 4 (Priority = 4)
IF A = 15
THEN B = 5
Rule 3 (Priority = 3)
IF C = 5
THEN B = 10
Rule 2 (Priority 2)
IF D = 2
THEN A = 15
Rule 1 (Priority 1)
IF B = 5
THEN E = 7
假定有以下输入数据:
A =0
B = 0
C = 5
D = 2
E = 0
计算过程将按如下方式继续:
计算规则 4;计算结果为 false,因为它没有 Else 操作,所以不执行任何操作。
规则 3 的计算结果为 true,因此执行其操作,设置 B = 10。规则 4 不依赖于 B 的值;因此,计算过程继续执行至规则 2。
规则 2 的计算结果为 true,因此执行其操作,设置 A = 15。
规则 3 和 2 不会重新计算,因为它们的条件不依赖于 A 的值。但是,由于规则 4 在其条件中使用了 A 的值,因此它将被重新计算。 它的计算结果为 true,因此执行其操作,设置 B = 5。规则 4、3 和 2 不依赖于 B 的值,因此,计算过程继续执行至规则 1。
规则 1 的计算结果为 true,因此执行其操作,设置 E = 7。
现在,结果数据集如下所示:
A = 15
B = 5
C = 5
D = 2
E = 7
请参见
参考
RuleSet
PolicyActivity
RuleSet
概念
版权所有 (C) 2007 Microsoft Corporation。保留所有权利。