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

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

先决条件

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

本演练概述

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

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

创建 POVocabulary 词汇

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

    注意

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

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

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

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

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

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

  7. 对于 定义名称,请键入 请求数量

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

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

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

    BRE-Walkthrough-ChangeDocType2

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

    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. 拖动 允许的最大项数 ,以替换条件 (500) 条件 (RHS) 参数。

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

    注意

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

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

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

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

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

测试解决方案

  1. 在业务规则Composer,展开策略,展开 ProcessPurchaseOrder,右键单击版本 1.0 - 已部署,然后单击“取消部署”。

    注意

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

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

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

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

  5. 将 C:\BRE-Walkthroughs 目录中 的SamplePO.xml 文件复制到业务流程的 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 是命名空间的名称,PO类型的名称。

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

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

后续步骤

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

另请参阅

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