BizTalk 편집기는 대체 인스턴스 메시지 형식을 지원하는 확장을 허용하도록 설계되었습니다. 실제로 XML 형식은 BizTalk 편집기에 기본 제공되는 유일한 형식입니다. Microsoft BizTalk Server에 포함된 플랫 파일 형식에 대한 지원도 BizTalk 편집기 확장으로 구현되므로 이러한 확장에서 추가할 수 있는 기능 유형의 좋은 예가 됩니다.
일반적으로 BizTalk 편집기 확장은 스키마 트리의 노드에 해당하는 XSD 요소와 연결된 XSD(XML 스키마 정의) 언어 주석으로 사용자 지정 데이터를 유지합니다. 다시 말하지만, BizTalk 편집기에서 플랫 파일 확장 프로그램에 의해 추가된 광범위한 주석 집합은 BizTalk 편집기 확장 프로그램이 스키마에서 사용자 지정 데이터를 유지할 수 있는 방법의 좋은 예입니다.
BizTalk 편집기 확장은 BizTalk 편집기의 기능을 확장하는 .NET 어셈블리입니다. 확장으로 식별하려면 어셈블리에 IExtension 인터페이스를 구현하는 클래스가 하나 있어야 하며 제품 설치 디렉터리의 Developer Tools\Schema Editor Extensions 폴더 아래에 있어야 합니다.
확장 개발자는 확장 기능을 BizTalk Editor에 노출하는 데 필요한 모든 인터페이스의 정의를 포함하는 Microsoft.BizTalk.SchemaEditor.Extensibility.dll어셈블리 참조가 있어야 합니다. 이러한 인터페이스는 Microsoft.BizTalk.SchemaEditor.Extensibility 네임스페이스 아래에 정의됩니다.
IExtension 인터페이스는 BizTalk 편집기가 속성 관리자, 사용자 지정 뷰, 스키마 유효성 검사, 네이티브 인스턴스 생성 및 네이티브 인스턴스 유효성 검사와 같은 확장 기능에 액세스하는 확장의 진입점입니다.
지정된 스키마에는 여러 확장이 연결될 수 있지만 지정된 시간에는 하나만 표준으로 설정할 수 있습니다. 스키마 노드의 Standard 속성에 설정됩니다. 현재 표준으로 설정된 확장은 네이티브 인스턴스 생성 및 유효성 검사 및 스키마 유효성 검사에 사용되는 확장입니다.
스키마 노드의 스키마 편집기 확장 속성을 편집하여 지정된 스키마와 확장을 연결할 수 있습니다. 스키마와 연결된 확장에 대한 정보는 다음 XSD 조각에 설명된 것처럼 스키마 요소의 주석 요소 내에 스키마 자체에 저장됩니다.
<?xml version="1.0" encoding="utf-16" ?>
<xs:schema xmlns="http://BizTalk_Server_Project1.Schema11"
xmlns:b="http://schemas.microsoft.com/BizTalk/2003"
targetNamespace="http://BizTalk_Server_Project1.Schema11"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:appinfo>
<schemaEditorExtension:schemaInfo namespaceAlias="b"
extensionClass="Microsoft.BizTalk.FlatFileExtension.FlatFileExtension"
standardName="Flat File"
xmlns:schemaEditorExtension="http://schemas.microsoft.com/BizTalk/2003/SchemaEditorExtensions" />
<b:schemaInfo schema_type="document" root_reference="Root"
is_receipt="no" schema_name="abc"
standard="Flat File"
count_positions_by_byte="false" />
</xs:appinfo>
</xs:annotation>
<xs:element name="Root">
...
확장 개체를 인스턴스화한 후 프레임워크는 IExtension 인터페이스의 Initialize 메서드를 호출하여 확장이 스키마 트리에 대한 정보에 액세스할 수 있도록 ITree 개체를 전달합니다. 예를 들어 확장은 ITree.RootNode 속성에 액세스하여 모든 자식 노드를 트래버스할 수 있습니다.
이 섹션에서는 BizTalk 편집기 확장이 BizTalk 편집기 환경에 통합되고 기존 BizTalk 편집기 명령에 자신을 후크할 수 있는 방법을 설명합니다.