.NET Framework 4.5 中的外部化策略活动
Rules-ExternalizedPolicy4 示例演示 ExternalizedPolicy4 活动如何使用 WF 3.5 中附带的规则引擎在 .NET Framework 4.6.1 Windows Workflow Foundation (WF 4.5) 中直接执行现有的 NET Framework 3.5 Windows Workflow Foundation (WF 3.5) RuleSet。 通过使用此活动,可以打开并执行任何现有 WF 3.5 RuleSet。 有关 WF 3.5 规则引擎的详细信息(此信息已作为 Windows Workflow Foundation 的一部分包含),请参阅 Windows Workflow Foundation 规则引擎简介。 有关将规则迁移到 .NET Framework 4.6.1 中的 WF 的详细信息,请参阅迁移指南。
此示例中的项目
项目名称 | 描述 | 主要文件 |
---|---|---|
ExternalizedPolicy4 | 包含 ExternalizedPolicy4 活动及其 WF 4.5 设计器。 | ExternalizedPolicy4.cs:活动定义。 ExternalizedPolicy4Designer.xaml:ExternalizedPolicy4 活动的自定义设计器。 它使用来自 WF 3.5 规则引擎的规则编辑器 (RuleSetDialog)。 |
ImperativeCodeClientSample | 一个示例客户端应用程序,它使用命令性 C# 代码(未使用设计器)配置和运行使用 ExternalizedPolicy4 应用程序的工作流。 | ApplyDiscount.rules:带有 WF 规则定义的文件。 Order.cs:表示客户订单的类型。 规则适用于此类型的对象。 Program.cs:配置和运行具有 Policy4 活动的工作流以将 ApplyDiscount.rules 中定义的规则应用于 Order 对象的实例。 App.config:带有规则文件的路径的配置文件。 |
DesignerClientSample | 一个示例客户端应用程序,它在 WF 设计器中配置和运行使用 ExternalPolicy4 应用程序的工作流。 | Sequence1.xaml:使用 Policy4 活动执行规则计算的顺序工作流。 Program.cs:运行 Sequence1.xaml 中定义的工作流的实例。 |
ExternalizedPolicy4 活动
ExternalizedPolicy4 活动是一个 NativeActivity,它允许在 WF 4.5 工作流中执行 WF 3.5 RuleSet 对象。 下面的示例是活动的公共对象模型的简化定义。
public class ExternalizedPolicy4Activity<TResult>: CodeActivity
{
public string RulesFilePath
public string RuleSetName
[RequiredArgument]
public InArgument<T> TargetObject
[RequiredArgument]
public OutArgument<T> ResultObject
public OutArgument<ValidationErrorCollection> ValidationErrors
}
属性 | 说明 |
---|---|
RuleSetFilePath | 执行活动时要计算的 .NET Framework 3.5 RuleSet 文件的路径。 |
RuleSetName | 要在 .rules 文件中使用的 RuleSet 的名称。 |
TargetObject | 对其计算 Rule 中的 RuleSet 对象的对象。 |
ResultObject | 应用规则后的结果对象(例如,对 Input 自变量应用规则并将结果存储在 Result 自变量中)。 |
ValidationError | 在执行前对目标对象验证 RuleSet 时由 WF 3.5 规则引擎返回的验证错误的列表。 |
ExternalizedPolicy4 活动设计器
利用 ExternalizedPolicy4 设计器,可以将活动配置为使用现有 RuleSet 而不编写代码。 仅设置 .rules 文件所在的路径并指定要使用的 RuleSet 名称。 还可以使用此设计器修改 RuleSet。 生成解决方案之后,可以在工具箱中的“Microsoft.Samples.Activities.Rules”部分找到此功能。 可以利用此设计器选择 .rules 文件和 RuleSet。 单击“编辑 RuleSet”按钮时,将显示 WF 3.5 RuleSetDialog。 此对话框是重新承载的 WF 3.5 规则编辑器,它可用于查看和编辑 ExternalizedPolicy4 活动执行的规则。
Policy4 和 ExternalPolicy4
Policy 活动允许你在 WF 4.5 工作流中创建和执行 .NET Framework 3.5 RuleSet。 RuleSet 是 Policy4 活动 XAML 定义中的序列化内联。 ExternalizedPolicy4 示例演示如何使用现有外部 RuleSet(包含在 .rules 文件中)。
使用此示例
无需进行特殊设置即可运行此示例。 在 Visual Studio 中打开解决方案,然后按 F5 运行应用程序。
此示例包含两个客户端应用程序,即 ImperativeCodeClientSample 和 DesignerClientSample。 ImperativeCodeClientSample 客户端演示如何使用 C# 命令性代码来配置和运行 ExternalizedPolicy4 活动。 DesignerClientSample 演示如何使用设计器配置和运行 ExternalizedPolicy4 活动。
运行 ImperativeCodeClientSample 应用程序
使用 Visual Studio 打开 Policy4sample.sln 解决方案文件。
在“解决方案资源管理器”中,右击“ImperativeCodeClientSample”项目,然后选择“设为启动项目”。
若要运行项目,请按 Ctrl+F5。
运行 DesignerClientSample 应用程序
使用 Visual Studio 打开 Policy4sample.sln 解决方案文件。
在“解决方案资源管理器”中,右击“DesignerClientSample”项目,然后选择“设为启动项目”。
按 Ctrl+Shift+B 编译项目。
按 Ctrl+F5 运行项目。