约束类型

本主题适用于 Windows Workflow Foundation 4。

本实例演示将约束应用于工作流的两种不同方法:一种方法是从活动内部应用(生成),另一种方法是从活动外部应用(策略)。在此方案中,某个活动作者(来自于第三方软件公司)想要验证两个参数之间的关系。在此例中,成本应小于或等于价格。这是一个常规的验证生成约束。

然后,一个店主想要为此常规活动中添加一些验证。对于他而言,他想要让大多数产品的价格为 9.99 美元或者更少。因此,他在 CreateProduct 活动之上使用一个策略约束。

在此示例中:

活动作者(生成)必须:

  • 创建一个约束 (PriceGreaterThanCost)。这是存放全部验证逻辑的位置。

  • 重写 OnGetConstraints 并将约束 (PriceGreaterThanCost) 添加到约束集 IList 中。

工作流作者(策略)必须:

  • 使用要验证的活动实例来创建一个工作流 (CreateProduct)。

  • 创建一个约束 (MaxPrice)。

  • 创建一个 ValidatorSettings 实例 (validatorSettings),并将约束 (MaxPrice) 添加到集合 AdditionalConstraints 中。在此处,工作流作者可以将策略约束添加到任何活动,例如一个序列或并行活动。

  • 调用 Validate,它将返回 ConstraintViolation 对象的 ValidationResults 的集合。

  • (可选)输出 ConstraintViolation 对象。

设置、生成和运行示例

  1. 在 Visual Studio 2010 中打开 ConstraintTypes.sln 示例解决方案。

  2. 生成和运行解决方案。

Dd759025.Important(zh-cn,VS.100).gif 注意:
您的计算机上可能已安装这些示例。在继续操作之前,请先检查以下(默认)目录:

<安装驱动器>:\WF_WCF_Samples

如果此目录不存在,请访问针对 .NET Framework 4 的 Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 示例(可能为英文网页),下载所有 Windows Communication Foundation (WCF) 和 WF 示例。此示例位于以下目录:

<安装驱动器>:\WF_WCF_Samples\WF\Scenario\Validation\ConstraintLibrary