演练:向策略添加规则

本演练提供将名为 DeniedRule 的规则添加到 ProcessPurchaseOrder 策略的分步过程。

必备条件

在执行本演练之前,必须在 策略中完成演练:创建和使用词汇 演练。

本演练概述

本演练包含三个过程,如下表所述。

过程标题 过程说明
将 DeniedRule 添加到 ProcessPurchaseOrder 策略 提供有关将名为 DeniedRule 的新规则添加到 ProcessPurchaseOrder 策略的分步说明。 如果 Quantity 的值大于 500,则 DeniedRule 规则将“状态”字段的值设置为“拒绝”。
使用业务规则编辑器进行测试 提供使用业务规则编辑器测试 ProcessPurchaseOrder 策略的分步说明。
测试解决方案 提供用于测试解决方案的分步说明。

将 DeniedRule 添加到 ProcessPurchaseOrder 策略

  1. 在“ 开始 ”菜单上,打开 “业务规则编辑器”。

    注意

    在支持用户帐户控制 (UAC) 的系统上,可能需要具有管理权限才能运行该工具。 为此,请右键单击该应用程序,然后选择“ 以管理员身份运行”。

  2. 在“策略资源管理器”窗口中,展开“ 策略”,展开“ ProcessPurchaseOrder”,右键单击“ 版本 1.1”,然后单击“ 复制”。

  3. 右键单击“ ProcessPurchaseOrder”,然后单击“ 粘贴策略版本”。

  4. 右键单击“ 版本 1.2 (未保存) ”,单击“ 添加新规则”,然后将规则的名称更改为 “DeniedRule”。

  5. 如果在步骤 4 中忘记将规则名称更改为 DeniedRule,请单击“Rule1”,并在属性窗口中将名称更改为“DeniedRule”。

  6. 在 IF 窗格中,右键单击“ 条件”,指向 “谓词”,然后单击“ 大于”。

  7. 在“事实资源管理器”窗口中,单击“ 词汇 表”选项卡。

  8. 展开 “词汇表”,展开 “POVocabulary”,展开 “版本 1.0 - 已发布”,然后将 “请求数量 ”拖到 IF 窗格中 的 argument1

  9. 在 IF 窗格中拖动参数 2允许的最大项数

  10. “请求状态” 拖到“THEN”窗格。

  11. 单击空<字符串>,然后键入“拒绝”。

  12. 右键单击“ 版本 1.2” (未保存) ,然后单击“ 保存”。

  13. 右键单击“ 版本 1.2”,然后单击“ 发布”。

  14. 右键单击“ 版本 1.2”,然后单击“ 部署”。

使用业务规则编辑器进行测试

  1. 在记事本中打开 SamplePO.xml 和 SamplePO2.xml 文件,并将 “状态” 字段的值更改为 XYZ

  2. 在“策略资源管理器”窗口中,展开 “策略”,展开“ ProcessPurchaseOrder”,右键单击“ 版本 1.2”,然后单击“ 测试策略”。

  3. “XMLDocuments” 节点下,选择“ RuleTest.PO”,然后单击“ 添加实例”。

  4. 选择 “SamplePO.xml”,然后单击“ 打开”。

  5. 单击“测试”。

  6. 查看输出中的 “议程更新 ”部分,请注意,仅 将 ApprovalRule 添加到议程中。 因此,它是引发的唯一规则(执行与该规则关联的操作)。

  7. 在记事本中 打开SamplePO.xml ,注意 “状态” 字段的值设置为“ 已批准”。

  8. 在“策略资源管理器”窗口中,展开 “策略”,展开“ ProcessPurchaseOrder”,右键单击“ 版本 1.2”,然后单击“ 测试策略”。

  9. 选择 “SamplePO.xml”,单击“ 删除实例”,然后单击“ 添加实例”。

  10. 选择 “SamplePO2.xml”,然后单击“ 打开”。

  11. 单击“测试”。

  12. 查看输出中的 “议程更新 ”部分,请注意,仅 将 DeniedRule 添加到议程中。 因此,它是引发的唯一规则。

  13. 在记事本中 打开SamplePO2.xml ,请注意 “状态” 字段的值为 “拒绝”。

测试解决方案

  1. 打开 SamplePO.xml 并在记事本中 SamplePO2.xml ,并将 “状态” 字段的值更改为 XYZ

  2. SamplePO.xml 文件从 C:\BRE-Walkthroughs 目录复制到业务流程的 C:\BRE-Walkthroughs\RuleTestSol\Input 目录。

  3. 你应该在业务流程的 C:\BRE-Walkthroughs\RuleTestSol\Output 目录中看到输出文件。 打开输出 XML 文件,注意 “状态” 字段的值设置为“ 已批准”。

  4. 使用 SamplePO2.xml重复步骤 2 和 3,请注意,输出文档中 “状态” 字段的值设置为 “拒绝 ”。 这证明业务流程使用的是 ProcessPurchaseOrder 策略 1.2 版。 业务流程使用最新部署的 ProcessPurchaseOrder 策略版本,即 1.2。 为了使用该策略的 1.2 版,您无需取消部署该策略的 1.1 版。 但是,您需要等待大约 60 秒,然后再测试该解决方案。 有关详细信息,请参阅注释部分。

注释

  • 一个策略可拥有一个或多个规则。 对于策略中规则的数目,不存在逻辑限制。

  • 规则引擎使用“条件评估-冲突解决-执行操作”算法。 在 条件评估 阶段,规则引擎评估所有规则中的条件。 其条件评估结果为 true 的规则将成为用于执行的候选规则。 在 冲突解决 阶段,候选规则将按规则的优先级顺序添加到议程中。 在 “操作执行” 阶段,执行候选规则中的操作。 如果候选规则具有相同的优先级,则不存在执行这些规则的操作的明确顺序。 您应该假定它们并行执行。

  • 在此情况下,对于任何给定的示例文件,只引发其中一个规则。 在运行测试之前,请确保更改 “状态” 字段的值。

  • 在部署策略的新版本时,在测试前应该等待大约 60 秒。 规则引擎更新服务将定期轮询规则引擎数据库(默认情况下为每 60 秒轮询一次),以便查找新部署的策略。 规则引擎更新服务将用与来自规则引擎数据库的策略的最新部署版本有关的信息来更新内存中的策略对象。

后续步骤

完成本演练后,请执行 演练:修改策略 演练,其中提供了有关修改策略以批准 数量 值小于或等于 1000 (而不是 500) 的采购订单的分步说明。

另请参阅

条件评估和操作执行
议程和优先级