扩展路线设计器

行程Designer是 Microsoft Visual Studio (DSL) 的视觉域特定语言,支持与 Microsoft BizTalk ESB 工具包一起使用的路线的图形建模。 设计器公开各种扩展点,开发人员可以为其编写自定义扩展来启用新功能和/或新的配置选项。

创建自定义路线导出程序

行程Designer的体系结构允许创建自定义模型导出程序,以序列化和持久保存行程模型中的数据。

为消息传送服务创建自定义扩展程序

行程Designer的体系结构允许你为路线服务模型元素创建自定义扩展程序,这些扩展器可用于将属性添加到属性包供消息服务使用。

有关如何创建此类扩展程序的示例,请参阅安装和运行Designer扩展性示例

为 Orchestration-Based 行程服务创建自定义扩展程序

通过行程Designer的体系结构,可以为路线服务模型元素创建自定义扩展程序,这些扩展器可用于将属性添加到属性包,以供基于业务流程的行程服务使用。

有关如何创建此类扩展程序的示例,请参阅安装和运行Designer扩展性示例

创建自定义冲突解决程序扩展程序

通过行程Designer的体系结构,可以创建自定义扩展程序来配置自定义冲突解决程序。 这些扩展程序提供了一个图形界面,用于在解析程序连接字符串中配置名称/值对,这些名称/值对映射到特定冲突解决程序扩展程序类中的属性。

有关如何创建此类扩展程序的示例,请参阅安装和运行Designer扩展性示例

为自定义适配器属性创建清单文件

创建自定义适配器提供程序时,还必须为显示终结点配置属性的解析程序扩展程序提供适配器提供程序的设计器支持。 若要启用设计器支持,必须创建适配器提供程序清单文件。

适配器提供程序清单文件定义与特定适配器提供程序关联的属性、其类型、说明以及可在其中找到它们的程序集。 例如,这些清单文件应与行程Designer二进制 (文件放在同一文件夹中,例如,Microsoft.Practices.Itineary.DslPackage.dll) 具有唯一名称 (例如 FTPPropertyManifest.xml) 。

下面是适配器提供程序清单文件的引用实例;自定义清单文件的结构应类似。

<?xml version="1.0" encoding="utf-8" ?>  
<adapterPropertyManifest adapterName="FTP">  
     <aliases>  
          <alias name="globalPropertySchemas" value="Microsoft.BizTalk.GlobalPropertySchemas, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />  
     </aliases>  
     <properties>  
          <property name="UserName" type="FTP.UserName" description="The user name for the connection." encrypted="true" assembly="globalPropertySchemas" />  
          <property name="Password" type="FTP.Password" description="The password for the conection." encrypted="true" assembly="globalPropertySchemas" />  
          <property name="MaxConnections" type="FTP.MaxConnections" description="The maximun number of connections." assembly="globalPropertySchemas" />  
          <property name="EventArgs" type="System.EventArgs" assembly="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />  
     </properties>  
</adapterPropertyManifest>  

创建自定义筛选器扩展程序

通过行程Designer的体系结构,可以创建自定义扩展程序来配置自定义筛选器。 这些扩展器提供一个图形界面,用于在筛选器连接字符串中配置名称/值对,这些名称/值对映射到特定筛选器扩展程序类中的属性。

  • /Samples/Designer 扩展性示例/Extenders.Itinerary.OrchestrationSample/Extenders.Itinerary.OrchestrationSample/Extenders.Itinerary.OrchestrationSample

  • /Samples/Designer 扩展性示例/Extenders.Resolvers.ResolverSample/Extenders.Resolvers.ResolverSample

    创建自定义验证规则

    行程Designer引入的最后一个重要扩展是一种验证机制,允许你在外部针对域特定语言 (DSL) 指定并实现模型验证规则。 该机制“挂钩”到 DSL 验证框架中,当用户在模型的快捷菜单上单击“ 全部验证 ”或“ 全部验证 ”时激活。 这会调用 DSL 框架的 DslCommandSet 对象,该对象又调用路线Designer中的验证引擎。

    ValidationEngine 类使用企业库验证应用程序块执行模型元素验证,并将验证错误记录到 Microsoft Visual Studio IDE 中的“错误列表”窗口。 企业库配置文件中定义了应对模型中每种类型的元素执行的验证。 该文件 Ruleset.config 命名,位于所有行程Designer二进制文件所在的二进制文件夹中。 以下示例是配置文件的一个片段,包含两个验证规则, (UddiResolver 扩展程序) 命名验证程序,一个用于 ServerUrl 属性,一个用于 ServiceKey 属性。

<!--   
UddiResolver  
-->  
<type assemblyName="Microsoft.Practices.Services.Extenders.Resolvers.UDDI"  
 name="Microsoft.Practices.Services.Extenders.Resolvers.UDDI.UddiResolver">  
<ruleset name="Menu">  
<properties>  
<property name="ServerUrl">  
<validator type="Microsoft.Practices.Modeling.Validation.NotEmptyStringValidator, Microsoft.Practices.Modeling.Validation"  
          messageTemplate="The '{1}' property value should not be empty or null."  
          name="UddiResolver.ServerUrl not null validator"/>  
</property>  
<property name="ServiceKey">  
<validator type="Microsoft.Practices.Modeling.Validation.NotEmptyStringValidator, Microsoft.Practices.Modeling.Validation"  
          messageTemplate="The '{1}' property value should not be empty or null."  
          name="UddiResolver.ServiceKey not null validator"/>  
</property>  
</properties>  
</ruleset>  
</type>  

每个规则标识实现规则的验证程序。 行程Designer附带大量的验证程序课程。 它们都位于 Designer 二进制文件夹中的 Microsoft.Practices.Modeling.Validation 项目中。

使用此验证机制的最终结果是,行程Designer用户可以通过更改提供的规则和验证程序或添加自己的规则和验证程序来修改模型的验证方式。 通过执行以下两个步骤,无需打开、修改、重新生成和重新部署 DSL 即可完成此操作:

  1. 创建一个验证程序类,并将其放入 Microsoft.Practices.Modeling.Validation.dll 库所在的二进制文件夹中的库中。

  2. 将条目添加到 Rules.config 文件,以定义应应用验证器的模型元素类的属性。