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

“Business Rules Hello World1”示例演示如何创建一个 BizTalk 规则集,将它保存到文件 (SampleRuleSet.xml)、加载它并基于示例事实集运行它。 本示例规则集包含一个简单规则,该规则使用 XML 元素和基于 .NET 的对象(属性和成员)作为规则定义中的条件。

本示例的用途

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

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

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

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

  4. 构造运行规则集时所基于的示例事实。

  5. 基于示例事实运行规则集,生成屏幕输出。

  6. 暂停,以便检查规则集文件 SampleRuleStore.xml。

  7. 通过删除规则集文件进行清除,以便为后续的示例运行做好准备。

本示例所在的位置

<示例路径>\Business Rules\Business Rules Hello World1\

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

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

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

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

生成和初始化此示例

使用以下过程可生成并初始化“Business Rules Hello World1”示例。

构建和初始化此示例

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

    <示例路径>\Business Rules\Business Rules Hello World1\

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

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

    注意

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

    注意

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

    注意

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

运行本示例

使用以下过程可运行“Business Rules Hello World1”示例。

运行本示例的步骤

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

    <示例路径>\Business Rules\Business Rules Hello World1\bin\Debug\

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

    注意

    在运行时,此示例在 bin\Debug 文件夹中生成规则集文件 SampleRuleStore.xml。 当可执行文件暂停以等待您按 Enter 以完成运行时,您可检查此文件的内容。 按任何键以完成操作之前,请务必关闭该文件。 否则,可执行文件可能无法删除该规则集文件以为后续的示例运行做好准备。

    根据创建的规则集的性质,如果使用提供的示例输入文件 SampleDocumentInstance.xml 运行此示例,该文件的值为 1 (1) 为其 ID 元素定义,则会看到以下输出:

Creating a new ruleset ...  
Saving ruleset to SampleRuleStore.xml ...  
Loading ruleset ...  
Asserting objects ...  
Executing ...  
MySampleBusinessObject Class -- MySampleMethod executed for object 2 with parameter 5  
MySampleBusinessObject Class -- MySampleMethod executed for object 3 with parameter 5  
Press any key to finish ...  

注意

在前面的代码和后面的代码中以粗体显示的输出是由示例业务对象生成的输出,该输出由 MySampleLibrary 文件夹中的文件定义,该文件夹由规则集引用。

如果将与示例输入文件中 ID 元素关联的值 SampleDocumentInstance.xml 从 1 (1) 更改为两个 (2) ,输出将发生如下更改:

Creating a new ruleset ...  
Saving ruleset to SampleRuleStore.xml ...  
Loading ruleset ...  
Asserting objects ...  
Executing ...  
MySampleBusinessObject Class -- MySampleMethod executed for object 1 with parameter 5  
MySampleBusinessObject Class -- MySampleMethod executed for object 3 with parameter 5  
Press any key to finish ...  

对于 MySampleBusinessObject 类的任何对象的输出行,这些对象的 MyValue 属性设置为在构造过程中 (值) 与示例输入文件中的 ID 元素关联的值 SampleDocumentInstance.xml。

注释

CreateRuleset () 方法中以编程方式创建的规则显示:

IF

MySampleBusinessObject.MyValue 不等于 XML 文档中 ID 元素的值。

THEN

MySampleBusinessObject.MySampleMethod (整数参数的 int) ,在本例中硬编码为常量 5 (5) 。 此方法生成开始 MySampleBusinessObject 类 –-的输出行。

此规则依赖于以下项:

  • MySampleBusinessObject 类,其中包含名为 MyValue 的公共属性和名为 MySampleMethod 的公共方法 (,) 采用整数参数。

  • XML 架构定义语言 (XSD) 架构,用于定义包含 ID 元素的 XML 文档。

    您可根据类和架构定义规则,但在执行过程中,必须使用相关类的对象实例和相关架构的文档实例。 您将针对这些运行时实例(称为事实)来评估规则。 在此示例中,事实是 MySampleBusinessObject 对象的多个实例,这些实例使用其 MyValue 属性的不同值构造,以及包含 ID 元素值的已定义架构的单个 XML 实例。

另请参阅

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