业务规则 Hello World2(BizTalk Server 示例)

业务规则 Hello World2 示例扩展了业务规则 Hello World1 示例,演示了如何对 XML 规则集进行版本控制、发布和部署到共享 SQL 规则存储,以及如何使用业务规则框架提供的 Policy 对象运行 策略 。 该示例还演示了操作中的动态策略更新。

注意

该示例假设在安装产品过程中,用户已安装了规则引擎更新服务和业务规则组件(位于“其他软件”节点下)。

注意

使用 Policy 对象将规则引擎集成到任何独立应用程序中。 Policy 对象是用于管理多个规则引擎实例、从共享 SQL 存储检索和实例化规则集以及检索策略更新并将其发布到托管应用程序的抽象对象。

有关定义的规则集和此示例构造的示例事实的基本信息,请参阅 业务规则 Hello World1

本示例的用途

该示例创建一个执行以下一系列步骤的可执行文件:

  1. 调用 CreateRuleset 方法以生成“备注”部分所述的规则集。

  2. 调用 SaveToFile 方法以演示如何将规则集保存到文件。

  3. 调用 LoadFromFile 方法以演示如何从文件加载规则集。

  4. 将规则集部署到共享 SQL 规则存储。

  5. 通过使用 Policy 对象运行规则集,并使用业务规则 Hello World1 示例中使用的相同示例事实集。

  6. 暂停,使你能够以特定方式 修改规则 集文件SampleRuleStore.xml。

  7. 再次使用 Policy 对象、现已修改的规则集,以及业务规则 Hello World1 示例中使用的同一组示例事实再次运行规则集。

  8. 通过删除规则集文件和部署的规则集记录进行清除,以便为后续的示例运行做准备。

注意

有关此 SDK 中所有示例的重要信息,请参阅 示例

本示例所在的位置

<示例路径>\业务规则\业务规则 Hello World2\

下表显示了本示例中的文件及其用途说明:

文件 说明
App.ico、AssemblyInfo.cs、BusinessRulesHelloWorld2.csproj、BusinessRulesHelloWorld2.sln 该示例某部分的项目、解决方案和相关文件,该部分创建、保存、加载、部署和执行规则集。
HelloWorld2.cs Visual C# 文件包含用于演示如何创建规则集、将规则集保存到文件、从文件加载规则集、将规则集部署到共享的 Microsoft SQL Server规则存储,然后使用 Policy 对象运行规则集的方法。
Cleanup.bat 用于取消部署程序集并从全局程序集缓存 (GAC) 删除这些程序集。 删除发送和接收端口。 根据需要删除 Microsoft Internet 信息服务 (IIS) 虚拟目录。
SampleDocumentInstance.xml 与文件 SampleSchema.xsd 中定义的架构相符的示例输入文件。
SampleSchema.xsd 定义简单架构的架构文件,该简单架构具有由 Visual C# 文件 Class1.cs 中创建的规则集引用的元素。
Setup.bat 用于生成和初始化本示例。
在 \HelloWorld2Library 文件夹中:

AssemblyInfo.cs、HelloWorld2Library.csproj、HelloWorld2Library.sln
该示例某部分的项目、解决方案和相关文件,该部分提供定义由所创建规则集引用的对象的类。
在 \HelloWorld2Library 文件夹中:

HelloWorld2LibraryClass.cs
Visual C# 文件,其中包含在创建规则的 IF 部分中引用的属性,以及可在创建规则的 THEN 部分中调用的方法。

生成并初始化业务规则 Hello World2 示例

  1. 在命令窗口中,导航到下面的文件夹:

    <示例路径>\业务规则\业务规则 Hello World2\

  2. 运行 Setup.bat 文件,该文件将执行以下操作:

    • 编译并部署本示例的 Visual Studio 项目。

    注意

    在尝试运行本示例前,您应确认在生成和初始化过程中 BizTalk Server 未报告任何错误。

    注意

    如果选择在不运行文件 Setup.bat 的情况下打开并生成此示例中的项目,则必须首先使用.NET Framework强名称实用工具 (sn.exe) 创建强名称密钥对。 使用该密钥对可以对生成的程序集签名。

    注意

    若要撤销 Setup.bat 所做的更改,请运行 Cleanup.bat。 必须在第二次运行 Setup.bat 之前运行 Cleanup.bat。

运行业务规则 Hello World2 示例

  1. 在命令窗口中,导航到下面的文件夹:

    <示例路径>\业务规则\业务规则 Hello World2\bin\Debug\

  2. 在命令窗口中,键入此示例文件的名称 (BusinessRulesHelloWorld2.exe) ,然后按 Enter。

Hello World2 输出

根据 业务规则 Hello World1 的“注释”部分所述的已创建规则集的性质,如果使用提供的示例输入文件 SampleDocumentInstance.xml 运行此示例,其值为 1 (1) 为其 ID 元素定义,则会看到以下输出:

Creating a new ruleset ...  
Saving ruleset to SampleRuleStore.xml ...  
Loading ruleset ...  
Deploying the ruleset ...  
Sleeping for 60 seconds (so that the deployed ruleset becomes effective) ...  
Grabbing the policy ...  
Executing the policy...  
MySampleBusinessObject Class -- MySampleMethod executed for object 2 with parameter 5  
MySampleBusinessObject Class -- MySampleMethod executed for object 3 with parameter 5  
The major version of the policy was: 1  
The minor version of the policy was: 0  
Press the ENTER to continue after updating the policy...  

注意

以粗体显示的输出是由示例业务对象生成的输出,由规则集引用的 HelloWorld2Library 文件夹中的文件定义。 此时,应用程序在此状态下等待。

运行示例的下一部分涉及使用业务规则编辑器更改业务规则。

使用业务规则编辑器更改业务规则

  1. 若要打开业务规则编辑器,请单击“开始”,单击“所有程序”,单击“Microsoft BizTalk Server 20xx”,然后单击“业务规则编辑器”。

    注意

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

  2. 如果在运行SQL Server的计算机上显示SQL Server对话框,请单击“确定”以连接到规则存储。

  3. “策略资源管理器”的 SampleRuleSet 节点下方,右键单击节点“版本 1.0 - 已部署”,然后单击“复制”。

  4. 右键单击“ SampleRuleSet”,然后单击“ 粘贴 (策略版本”)

  5. 可以更改规则条件和操作以满足需求。 对于此过程,请单击版本 1.1 中的 rule1, (未保存) 在右窗格中,右键单击“ 条件”,然后单击“ 添加逻辑不”。 将 逻辑 NOT 操作添加到 “不等于 ”谓词等同于使用 Equal 谓词。

  6. 右键单击节点 “版本 1.1” (未保存) ,然后单击“ 保存”。 再次右键单击,然后单击“ 发布”。 第三次右键单击,然后单击“ 部署”。

  7. 更新策略之后,在暂停的命令窗口中将让您按任意键继续,请按任意键。

    来自可执行文件 BusinessRulesHelloWorld2.exe 的输出(假设您通过添加逻辑非更改了规则)继续显示如下:

Sleeping for 60 seconds (so that the deployed ruleset becomes effective) ...         
Grabbing the policy ...         
Executing the policy...         
MySampleBusinessObject Class -- MySampleMethod executed for object 1 with parameter 5         
The major version of the policy was: 1         
The minor version of the policy was: 1         
Press ENTER to continue after updating the policy...         

请注意输出如何变化:

  • 对于 MyValue 属性等于 1 的 MySampleBusinessObject 类的实例,方法 MySampleMethod 中的输出行现在仅打印一次,而不是在 MyValue 属性不等于 1 时打印以前的规则。

  • 策略的次要版本号现在为 1。

另请参阅

业务规则(BizTalk Server 示例文件夹)