演练:在策略中创建和使用词汇

本演练提供创建词汇并在 ProcessPurchaseOrder 策略中使用词汇的分步过程。

必备条件

在执行本演练之前,必须完成 演练:创建简单业务策略 演练。 不过,我们建议你完成本文档中在本演练之前列出的所有演练。

本演练概述

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

过程标题 过程 descritpion
创建 POVocabulary 词汇 提供有关创建 POVocabulary 词汇表的分步说明,其中包含三个定义:请求数量、允许的最大项目数和请求状态。
在 ProcessPurchaseOrder 策略中使用 POVocabulary 提供有关使用 POVocabulary 创建 ProcessPurchaseOrder 策略新版本的分步说明。
测试解决方案 提供用于测试解决方案的分步说明。

创建 POVocabulary 词汇

  1. 在“ 开始 ”菜单上,打开 “业务规则编辑器”。 如果已打开业务规则编辑器,请按 F5 刷新。

    注意

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

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

  3. 右键单击“ 词汇”,单击“ 添加新词汇”,然后键入 POVocabulary 作为词汇的名称。

  4. 如果未在步骤 3 中将词汇的名称更改为 POVocabulary,请在属性窗口中将词汇的名称更改为 POVocabulary

  5. 右键单击“ 版本 1.0 (未在 POVocabulary 中保存) ”,然后单击“ 添加新定义”。

  6. 在“词汇定义向导”中,选择“ XML 文档元素”或“属性”,然后单击“ 下一步”。

  7. 对于 “定义名称”,请键入 “请求的数量”。

  8. 单击“浏览”,然后选择在演练:创建简单业务策略中创建的 PO.xsd 文件。

  9. “选择绑定 ”对话框中,展开“ PurchaseOrder”,展开“ ”,然后双击“ 数量”。

  10. 确保 文档类型 设置为 RuleTest.PO。 如果不是,请将文档类型更改为 RuleTest.PO。 此步骤非常重要。

    BRE-Walkthrough-ChangeDocType2

  11. “选择操作 ”组中将 选择操作 指定为 “执行获取操作”。

    BRE-Walkthrough-SelectGet

  12. 单击“完成”。

  13. 右键单击“ 版本 1.0” (未) 保存 ,然后单击“ 添加新定义”。

  14. 选择“ XML 文档元素或属性”,然后单击“ 下一步”。

  15. 对于 “定义名称”,请键入 “请求状态”。

  16. 单击“ 浏览”,然后选择 PO.xsd 文件。

  17. “选择绑定 ”对话框中,展开“ PurchaseOrder”,然后双击“ 状态”。

  18. 文档类型 更改为 RuleTest.PO。 此步骤非常重要。

  19. 确保选中“ 执行设置操作 ”选项,然后单击“ 下一步”。

  20. 单击“完成”。

  21. 右键单击“ 版本 1.0” (未) 保存 ,然后单击“ 添加新定义”。

  22. 确保选中 “常量值”、“值范围”或“值集 ”,然后单击“ 下一步”。

  23. 对于 “定义名称”,请键入 “允许的最大项数”。

  24. 确保选中“ 常量值”定义类型 ,然后单击“ 下一步”。

  25. 键入 500 作为值,然后单击“ 完成”。

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

  27. 右键单击“ 版本 1.0 (未保存) ”,然后单击“ 发布”。

在 ProcessPurchaseOrder 策略中使用 POVocabulary

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

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

  3. 在版本 1.1 中单击“ApprovalRule” (未保存)

  4. 在“事实资源管理器”窗口中,展开 “词汇”,展开“ POVocabulary”,展开“ 版本 1.0”,然后将 “请求数量 ”拖动到 IF 窗格,以替换 LessThanOrEqual 谓词 (LHS) 参数的左侧。

    BRE-Walkthrough-DragReqQty

    BRE-Walkthrough-ReqQty

  5. 拖动 “允许的最大项目数 ”以替换条件的右侧 (RHS) 参数 (500) 。

  6. 在“THEN”窗格中选择现有操作,右键单击,然后单击“ 删除操作”。

    注意

    你还可以在选择该操作后按 Delete 键,以便删除该操作。

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

  8. 单击 <空字符串> ,然后键入 “已批准”。

  9. 在“策略资源管理器”窗口中右键单击“ 版本 1.1 (未保存) ”,然后单击“ 保存”。

  10. 在“策略资源管理器”窗口中右键单击“ 版本 1.1 (未保存) ”,然后单击“ 发布”。

测试解决方案

  1. 在“业务规则编辑器”中,依次展开“ 策略”和“ ProcessPurchaseOrder”,右键单击“ 版本 1.0 - 已部署”,然后单击“ 取消部署”。

    注意

    此步骤是可选的,因为业务流程始终挑选策略的最新部署的版本,在执行步骤 2 后该最新版本是 1.1。

  2. 右键单击“ 版本 1.1- 已发布”,然后单击“ 部署”。

  3. 等待大约 60 秒。 如果存在对其缓存的策略的任何更新,策略引擎更新服务将每 60 秒刷新其缓存。 是否执行步骤 1 并不重要,因为业务流程始终挑选策略的最新部署的版本,在此处是 1.1。

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

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

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

  7. 使用 SamplePO2.xml重复步骤 5 和 6,请注意输出文档中 “状态” 字段的值与输入文档中 (XYZ) 相同。

    注意

    “状态”字段的值 (XYZ) 保持不变,因为规则引擎不会执行 ApprovalRule 规则中的操作,因为条件的计算结果为 false

注释

  • 在你保存词汇后,仍可以修改它。 但在你发布词汇后,就不能修改了。

  • 如果你需要修改某一定义、添加新定义或删除某一定义,则应创建词汇的新版本。

  • 只能将已发布的词汇用于策略。

  • 在“创建 POVocabulary 词汇表”过程中,将文档类型更改为 RuleTest.PO。 若要查看此更改的结果,请在 Visual Studio 的 解决方案资源管理器中单击 PO.xsd。 请注意,在属性窗口,RuleTest 是命名空间的名称,POType 的名称。

  • 在本演练中,你只使用了 XML 文档作为该策略的事实。 在创建策略时,你还可以使用 .NET 事实和数据库事实。

  • 在词汇定义向导的第二页上 选择“执行”设置“操作 时,可以在后面的页面上指定 显示格式字符串 。 例如,可以在“创建词汇”过程的步骤 20 中单击“完成”之前,将显示格式字符串从“请求状态{0}”更改为“请求状态{0}”。

后续步骤

完成本演练后,请执行 演练:将规则添加到策略 演练,其中提供了将新规则添加到 ProcessPurchaseOrder 策略的分步说明。

另请参阅

词汇
如何开发词汇
条件评估和操作执行
议程和优先级