扩展路线设计器

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

创建自定义路线导出程序

行程设计器的体系结构允许创建自定义模型导出程序,以序列化和保留行程模型中的数据。

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

通过路线设计器的体系结构,可以为“行程服务”模型元素创建自定义扩展程序,这些元素可用于向属性包添加属性供消息服务使用。

有关如何创建此类扩展程序的示例,请参阅 “安装和运行设计器扩展性示例”。

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

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

有关如何创建此类扩展程序的示例,请参阅 “安装和运行设计器扩展性示例”。

创建自定义解析器扩展

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

有关如何创建此类扩展程序的示例,请参阅 “安装和运行设计器扩展性示例”。

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

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

适配器提供程序清单文件定义与特定适配器提供程序关联的属性、其类型、说明以及可在其中找到它们的程序集。 这些清单文件应放置在与路线设计器二进制文件(例如,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>  

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

路线设计器的体系结构允许你为自定义筛选器的配置创建自定义扩展程序。 这些扩展程序提供了一个图形界面,用于在筛选器连接字符串中配置名称-值对,该字符串映射到特定筛选器扩展程序类中的属性。

  • /Samples/Designer Extensibility Samples/Extenders.Itinerary.OrchestrationSample/Extenders.Itinerary.OrchestrationSample/Extenders.Itinerary.OrchestrationSample

  • /Samples/Designer Extensibility Samples/Extenders.Resolvers.ResolverSample/Extenders.Resolvers.ResolverSample

    创建自定义验证规则

    行程设计器引入的最后一个重要扩展是一种验证机制,可用于在外部使用特定于域的语言(DSL),指定并实现模型验证规则。 机制集成到DSL验证框架中,当用户单击模型快捷菜单上的校验全部校验时激活。 这会调用 DSL 框架的 DslCommandSet 对象,而该对象又调用路线设计器中的验证引擎。

    ValidationEngine 类使用企业库验证应用程序块执行模型元素验证,并将验证错误记录到 Microsoft Visual Studio IDE 中的“错误列表”窗口。 应在企业库配置文件中定义模型中的每种元素类型的验证。 该文件命名为 Ruleset.config,位于所有行程设计器二进制文件所在的二进制文件夹中。 以下示例是配置文件的片段,包含 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>  

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

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

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

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