사용자 지정 펑토이드(BizTalk Server 샘플)
사용자 지정 펑토이드 샘플에서는 BizTalk 맵 편집기에 사용자 지정 펑토이드를 쓰는 방법을 보여 줍니다. Visual Studio 도구 상자에 펑토이드를 추가할 수 있습니다. BizTalk 맵 편집기에 포커스가 있으면 펑토이드가 도구 상자에 표시됩니다.
사용자 지정 펑토이드는 BizTalk 맵 편집기 어셈블리 내에 상주하고 있어야 인식됩니다. C# 또는 Visual Basic과 같은 모든 .NET 호환 언어를 사용하여 사용자 지정 펑토이드를 쓸 수 있습니다.
또한 사용자 지정 펑토이드는 클래스에서 파생되어야 하며 이를 재정의 Microsoft.BizTalk.BaseFunctoids
하여 일부 메서드에 대한 구현을 제공해야 합니다. (클래스는 BaseFunctoid
BizTalk Server 포함된 Microsoft.BizTalk.BaseFunctoids.dll 어셈블리에 정의됩니다.
이 샘플의 용도
Custom 펑토이드 샘플은 각각 클래스에서 파생되고 여러 메서드를 재정의 BaseFunctoid
하는 여러 펑토이드를 구현합니다.
사용자 지정 펑토이드를 구현할 때는 해당 코드를 인라인으로 노출할 수 있습니다. 인라인 코드는 펑토이드에 대한 계산을 수행합니다. BizTalk 맵 편집기 컴파일러는 펑토이드에서 인라인 코드를 추출하여 프로젝트 빌드 시 컴파일된 XSLT에 포함합니다.
사용자 지정 펑토이드가 인라인 코드에 노출되지 않으면 BizTalk 맵 편집기는 해당 펑토이드가 상주하고 있는 어셈블리를 호출하는 XSLT를 생성합니다. 이 경우 XSLT 엔진이 사용자 지정 펑토이드 어셈블리를 찾을 수 있도록 GAC(전역 어셈블리 캐시)에서 해당 어셈블리를 사용할 수 있는지 확인해야 합니다. 사용자 지정 펑토이드에는 고유한 GUID 특성도 있어야 합니다. BizTalk 맵 편집기는 이 GUID를 사용하여 로드할 어셈블리를 식별합니다.
중요
사용자 지정 펑토이드 샘플 코드를 다시 사용하여 직접 쓴 펑토이드를 구현하는 경우에는 GUID 특성을 고유하게 변경해야 합니다.
이 샘플이 있는 위치
<Samples Path>\XmlTools\CustomFunctoid
다음 표는 이 샘플의 파일을 보여 주고 각각의 용도에 대해 설명합니다.
파일 | Description |
---|---|
AssemblyInfo.cs | 어셈블리 정보 C# 소스 코드입니다. |
CBuildArray.bmp | 도구 상자 비트맵입니다. |
CConcat.bmp | 도구 상자 비트맵입니다. |
CExtractArray.bmp | 도구 상자 비트맵입니다. |
Cleanup.bat | 어셈블리의 배포를 취소한 다음 GAC(전역 어셈블리 캐시)에서 어셈블리를 제거하고 CustomFunctoid.dll을 삭제하는 데 사용됩니다. |
CLongestString.bmp | 도구 상자 비트맵입니다. |
CMultiply.bmp | 도구 상자 비트맵입니다. |
CustomFunctoid.cs | 사용자 지정 펑토이드 C# 소스 코드입니다. |
CustomFunctoid.csproj | 사용자 지정 펑토이드 C# 프로젝트입니다. |
CustomFunctoid.sln | 사용자 지정 펑토이드 솔루션입니다. |
CustomFunctoidResources.resx | 사용자 지정 펑토이드 리소스입니다. |
Setup.bat | 샘플을 빌드, 배포 및 시작하는 데 사용됩니다. |
이 샘플 빌드 및 초기화
사용자 지정 펑토이드 샘플을 빌드 및 초기화하려면 다음 절차를 사용합니다.
이 샘플을 빌드 및 초기화하려면 다음을 수행하십시오.
명령 창에서 디렉터리(cd)를 다음 폴더로 변경합니다.
<샘플 경로>\XmlTools\CustomFunctoid
다음 작업을 수행하는 Setup.bat 파일을 실행합니다.
샘플 프로젝트를 빌드합니다.
생성된 어셈블리를 Developer Tools\Mapper Extensions 디렉터리에 복사합니다.
생성된 어셈블리를 GAC에 추가합니다.
참고
이 샘플을 실행하기 전에 빌드 및 초기화 프로세스 동안 보고된 오류가 없는지 확인해야 합니다.
이 샘플 실행
사용자 지정 펑토이드 샘플을 실행하려면 다음 절차를 사용합니다.
이 샘플을 실행하려면
Visual Studio BizTalk 프로젝트에서 도구 메뉴를 클릭하고 도구 상자 항목 선택을 선택합니다.
도구 상자 항목 선택 대화 상자에서 BizTalk Mapper 펑토이드 탭을 선택합니다.
다시 설정을 클릭한 다음 확인을 클릭합니다.
참고
사용자 지정 펑토이드가 인라인 코드를 표시하지 않는 경우 해당 어셈블리를 GAC에서 사용할 수 있는지 확인합니다.
파일 메뉴에서 끝내기를 선택하여 Visual Studio를 닫습니다.
Visual Studio 명령 프롬프트를 시작합니다.
명령 프롬프트에서 devenv /setup을 입력합니다.
Microsoft Visual Studio를 시작합니다.
사용자 지정 펑토이드(사용자 지정 연결 펑토이드, 가장 긴 문자열, 빌드 배열 펑토이드 및 배열 펑토이드 추출)가 도구 상자의 문자열 펑토이드 탭에 나타나고 누적 펑토이드 누적 펑토이드가 누적 펑토이드 탭에 나타납니다.
이 샘플 제거
사용자 지정 펑토이드 샘플을 제거하려면 다음 절차를 사용합니다.
이 샘플을 제거하려면
Visual Studio 도구 상자에서 펑토이드를 제거합니다.
경고
Cleanup.bat를 실행한 후에도 Visual Studio의 내부 캐싱 등으로 인해 오래된 사용자 지정 펑토이드가 도구 상자에 여전히 나타날 경우 아래 절차를 따릅니다.
Visual Studio BizTalk 프로젝트에서 도구 메뉴를 클릭하고 도구 상자 항목 선택을 선택합니다.
도구 상자 항목 선택 대화 상자에서 BizTalk Mapper 펑토이드 탭을 선택합니다.
목록에서 사용자 지정 펑토이드(Custom Concatenate 펑토이드, Longest String, Build array 펑토이드, Extract array 펑토이드 및 Cumulative Multiply)를 찾습니다. 해당 검사 상자를 클릭하여 펑토이드를 제거한 다음 확인을 클릭합니다.
위 절차를 수행해도 문제가 해결되지 않으면 아래 절차를 따릅니다.
Visual Studio BizTalk 프로젝트에서 맵을 편집하는 동안 도구 상자 탭을 클릭하여 도구 상자 팔레트를 표시합니다.
도구 상자를 마우스 오른쪽 단추로 클릭하고 항목 선택을 선택합니다.
항목 선택 대화 상자에서 다시 설정을 클릭한 다음 확인을 클릭합니다.
Visual Studio의 모든 인스턴스를 닫습니다.
위 절차를 수행해도 문제가 해결되지 않으면 아래 절차를 따릅니다.
관리자 권한으로 Visual Studio 명령 프롬프트 를 시작합니다.
실행 중인 Visual Studio 인스턴스를 모두 닫습니다.
다음 명령을 실행합니다.
devenv /resetsettings
devenv /setup
도구 상자에서 원하지 않는 펑토이드를 수동으로 선택할 수 있습니다. 그런 다음 펑토이드를 마우스 오른쪽 단추로 클릭하고 삭제를 클릭합니다.
위 절차를 수행해도 문제가 해결되지 않으면 아래 절차를 따릅니다.
Visual Studio BizTalk 프로젝트에서 맵을 편집하는 동안 도구 상자 탭을 클릭하여 도구 상자 팔레트를 표시합니다.
누적 펑토이드 그룹을 클릭합니다.
제거할 펑토이드를 마우스 오른쪽 단추로 클릭한 다음 삭제 를 선택하거나 삭제 키를 누릅니다.
String 펑토이드 그룹을 클릭합니다.
제거할 펑토이드를 마우스 오른쪽 단추로 클릭한 다음 삭제를 선택하거나 삭제 키를 누릅니다.
명령 창에서 디렉터리(cd)를 다음 폴더로 변경합니다.
<샘플 경로>\XmlTools\CustomFunctoid
다음 작업을 수행하는 Cleanup.bat 파일을 실행합니다.
Developer Tools\Mapper Extensions 디렉터리에서 어셈블리를 삭제합니다.
GAC에서 어셈블리를 제거합니다.
이 샘플에서 사용된 클래스 또는 메서드
Microsoft.BizTalk.BaseFunctoids.BaseFunctoid