SlideShare une entreprise Scribd logo
1  sur  21
Design Time Properties
 BizTalk Pipeline Components


     Daniel Toomey
       presenter
Source
• Understanding Design-Time Properties
  for Custom Pipeline Components in
  BizTalk Server
• Author: Saravana Kumar, MCAD
  (Charter member), MCP (BizTalk 2004)
• Published: December 2006
•   http://www.microsoft.com/downloads/details.aspx?FamilyID=8c2572a2-fb61-4016-a7a7-
    1c37518b39ff&displaylang=en
What Is a Pipeline?
• All messages in/out of BizTalk must go
  through a pipeline
• BizTalk includes 4 default pipelines:
  – Pass Through Receive / Transmit
  – XML Receive / Transmit
• Each pipeline has several stages
Receive Pipeline Stages
•   Decode: Used to decrypt/decode an incoming message. Examples:
    decrypt a secure message into plaintext; decode a MIME message
    into XML.
•   Disassemble: Used to convert a flat-file message to XML, if
    necessary. In addition, if the incoming message consists of a number
    of discrete messages bundled together within an
    envelope, disassemble components can be used to break the
    message into multiple single messages.
•   Validate: Used to validate an incoming message against the schema.
•   ResolveParty: The component will attempt to determine an identity for
    the sender
Send Pipeline Stages
• Pre-Assemble: Used to manipulate a message prior
  to serialization.
• Assemble: Takes the XML format the messaging
  engine turns out and converts it to a flat-file format if
  necessary, or adds an envelope to an outgoing
  message. This is a counter action to the
  Disassemble stage on the receive side.
• Encode: Used to encrypt/encode the message. This
  is a counter action to the Decode stage on the
  receive side.
What Is a Pipeline Component?

• Pipeline Components do the work
  inside the stages
• Some stages can support multiple
  components, serially processed
Design Time Properties
• Configuration settings for .NET
  components
• Can change at design time (VS) and/or
  at run time (BTS Admin Console)
Design Time Properties
Custom Design Time Properties
• Defining design-time properties using basic .NET
  data types
• Creating a drop-down list for a design-time property
• Complex types and serialization techniques
   – Custom types and TypeConverter
   – Collections and XML serialization
• Using the SchemaList class
IPersistPropertyBag Interface
• Key interface for design time properties
• Four methods:
  – GetClassID : allows use with unmanaged
    code
  – InitNew : initialise any necessary
    structures, caches, data, objects, etc
  – Load : initialise (read) properties from bag
  – Save : save properties into the bag
Creating a Custom Pipeline Component

• START FROM:
   – Copy from SDK sample
   – Use BTS Pipeline Component Wizard
   – Use sample from Saravana Kumar
     (PipelineCompTemplate.cs)
• STEPS:
   1. Change name of class in two places:
      •   Class definition
      •   Resource Manager definition (string)
   2. Generate a new unique class ID
Steps for Basic .NET Data Types
1. Define private field variables
2. Define public design time properties
3. Implement the Load method of the
   IPersistPropertyBag interface.
4. Implement the Save method of the
   IPersistPropertyBag interface
5. Implement the GetClassID and InitNew methods of
   the IPersistPropertyBag interface
6. Implement Execute method
Using the Custom Component

1. Build the project
2. Copy DLL into:
   C:Program FilesMicrosoft BizTalk Server 2006Pipeline Components

3. Add to toolbox
4. Drag onto a new BizTalk pipeline
Post-Build Event Code
IF $(ConfigurationName) EQU Release GOTO done
xcopy "$(ProjectDir)$(Outdir)$(TargetFileName)"
   "C:Program FilesMicrosoft BizTalk Server
   2006Pipeline Components" /R /Y /F
IF %ERRORLEVEL% EQU 0 GOTO done
net stop "BizTalk Service BizTalk Group :
   BizTalkServerApplication"
iisreset
xcopy "$(ProjectDir)$(Outdir)$(TargetFileName)"
   "C:Program FilesMicrosoft BizTalk Server
   2006Pipeline Components" /R /Y /F
net start "BizTalk Service BizTalk Group :
   BizTalkServerApplication"
:done
Per-Instance Pipeline Configuration

• Can set property values for each
  instance
• Set on Send / Receive port properties
• Set by Administrator
Per-Instance Pipeline Configuration
Demo
Tips
• Keep pipeline and pipeline component
  projects in separate solutions
• Ensure you generate a unique class ID
• Change namespace in two places
• Ensure properties are spelled correctly
  when represented as a string in
  PropertyBag methods
BTS Pipeline Component Wizard

• Built by Martijn Hoogendoorn (MVP)
• http://btsplcw.codeplex.com/
• Automates much of the process of
  creating a component template
• Need to build the solution & run the
  MSI
• Becomes a new BizTalk project type
Questions?

Contenu connexe

Tendances

What is new in .NET 4.5
What is new in .NET 4.5What is new in .NET 4.5
What is new in .NET 4.5
Robert MacLean
 
Asp.net presentation by gajanand bohra
Asp.net presentation by gajanand bohraAsp.net presentation by gajanand bohra
Asp.net presentation by gajanand bohra
Gajanand Bohra
 
1. WCF Services - Exam 70-487
1. WCF Services - Exam 70-4871. WCF Services - Exam 70-487
1. WCF Services - Exam 70-487
Bat Programmer
 

Tendances (20)

Monoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is ModularityMonoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is Modularity
 
What is new in .NET 4.5
What is new in .NET 4.5What is new in .NET 4.5
What is new in .NET 4.5
 
What's new in Visual Studio for Mac for .NET Developers
What's new in Visual Studio for Mac for .NET DevelopersWhat's new in Visual Studio for Mac for .NET Developers
What's new in Visual Studio for Mac for .NET Developers
 
ASP.NET Core 3.0 Deep Dive
ASP.NET Core 3.0 Deep DiveASP.NET Core 3.0 Deep Dive
ASP.NET Core 3.0 Deep Dive
 
Aspintro
AspintroAspintro
Aspintro
 
Introaspnet
IntroaspnetIntroaspnet
Introaspnet
 
Wso2 con eu 2016 an introduction to the wso2 integration platform by chanak...
Wso2 con eu 2016   an introduction to the wso2 integration platform by chanak...Wso2 con eu 2016   an introduction to the wso2 integration platform by chanak...
Wso2 con eu 2016 an introduction to the wso2 integration platform by chanak...
 
Firefox vs. chrome
Firefox vs. chromeFirefox vs. chrome
Firefox vs. chrome
 
Wso2 esb-maintenance-guide
Wso2 esb-maintenance-guideWso2 esb-maintenance-guide
Wso2 esb-maintenance-guide
 
Be project ppt asp.net
Be project ppt asp.netBe project ppt asp.net
Be project ppt asp.net
 
Wcf Transaction Handling
Wcf Transaction HandlingWcf Transaction Handling
Wcf Transaction Handling
 
Wso2 integration platform deep dive eu con 2016
Wso2 integration platform deep dive   eu con 2016Wso2 integration platform deep dive   eu con 2016
Wso2 integration platform deep dive eu con 2016
 
ASP.NET Basics
ASP.NET Basics ASP.NET Basics
ASP.NET Basics
 
Asp.net presentation by gajanand bohra
Asp.net presentation by gajanand bohraAsp.net presentation by gajanand bohra
Asp.net presentation by gajanand bohra
 
1. WCF Services - Exam 70-487
1. WCF Services - Exam 70-4871. WCF Services - Exam 70-487
1. WCF Services - Exam 70-487
 
ASP.NET - Introduction to Web Forms and MVC
ASP.NET - Introduction to Web Forms and MVCASP.NET - Introduction to Web Forms and MVC
ASP.NET - Introduction to Web Forms and MVC
 
What’s new in the 4.5
What’s new in the 4.5What’s new in the 4.5
What’s new in the 4.5
 
Asp Architecture
Asp ArchitectureAsp Architecture
Asp Architecture
 
Web browser architecture
Web browser architectureWeb browser architecture
Web browser architecture
 
ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1
 

En vedette

Artefactos biz talk 2006
Artefactos biz talk 2006Artefactos biz talk 2006
Artefactos biz talk 2006
Sandro Pereira
 
Biz Talk Demo slideshare
Biz Talk Demo slideshareBiz Talk Demo slideshare
Biz Talk Demo slideshare
erios
 

En vedette (10)

BizTalk Practical Course Session 1
BizTalk Practical Course Session 1BizTalk Practical Course Session 1
BizTalk Practical Course Session 1
 
Monitoring and Management of BizTalk Server - using BizTalk360
Monitoring and Management of BizTalk Server - using BizTalk360Monitoring and Management of BizTalk Server - using BizTalk360
Monitoring and Management of BizTalk Server - using BizTalk360
 
BizTalk Application Deployment
BizTalk Application DeploymentBizTalk Application Deployment
BizTalk Application Deployment
 
Artefactos biz talk 2006
Artefactos biz talk 2006Artefactos biz talk 2006
Artefactos biz talk 2006
 
Biz Talk Demo slideshare
Biz Talk Demo slideshareBiz Talk Demo slideshare
Biz Talk Demo slideshare
 
TechEd - 2008 : BizTalk RFID PPT
TechEd - 2008 :  BizTalk RFID PPTTechEd - 2008 :  BizTalk RFID PPT
TechEd - 2008 : BizTalk RFID PPT
 
Highly Available BizTalk
Highly Available BizTalkHighly Available BizTalk
Highly Available BizTalk
 
Integration Practice: How to make BizTalk Practice more profitable?
Integration Practice: How to make BizTalk Practice more profitable?Integration Practice: How to make BizTalk Practice more profitable?
Integration Practice: How to make BizTalk Practice more profitable?
 
Top 10 BizTalk Admin Tips
Top 10 BizTalk Admin TipsTop 10 BizTalk Admin Tips
Top 10 BizTalk Admin Tips
 
BizTalk Server Tips & Tricks for Developers and Admins (Deep Dive)
BizTalk Server Tips & Tricks for Developers and Admins (Deep Dive)BizTalk Server Tips & Tricks for Developers and Admins (Deep Dive)
BizTalk Server Tips & Tricks for Developers and Admins (Deep Dive)
 

Similaire à Design-Time Properties in Custom Pipeline Components

CMake: Improving Software Quality and Process
CMake: Improving Software Quality and ProcessCMake: Improving Software Quality and Process
CMake: Improving Software Quality and Process
Marcus Hanwell
 
Kubernetes @ meetic
Kubernetes @ meeticKubernetes @ meetic
Kubernetes @ meetic
Sébastien Le Gall
 

Similaire à Design-Time Properties in Custom Pipeline Components (20)

Scala at Treasure Data
Scala at Treasure DataScala at Treasure Data
Scala at Treasure Data
 
SDAccel Design Contest: Vivado
SDAccel Design Contest: VivadoSDAccel Design Contest: Vivado
SDAccel Design Contest: Vivado
 
The new repository in AEM 6
The new repository in AEM 6The new repository in AEM 6
The new repository in AEM 6
 
Build pipelines with bitbucket for Magento
Build pipelines with bitbucket for MagentoBuild pipelines with bitbucket for Magento
Build pipelines with bitbucket for Magento
 
binary analysis for botnet reverse engineering.pptx
binary analysis for botnet reverse engineering.pptxbinary analysis for botnet reverse engineering.pptx
binary analysis for botnet reverse engineering.pptx
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
 
CMake: Improving Software Quality and Process
CMake: Improving Software Quality and ProcessCMake: Improving Software Quality and Process
CMake: Improving Software Quality and Process
 
HOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLDHOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLD
 
Best Practices for Running Kafka on Docker Containers
Best Practices for Running Kafka on Docker ContainersBest Practices for Running Kafka on Docker Containers
Best Practices for Running Kafka on Docker Containers
 
ASP.NET MVC Workshop for Women in Technology
ASP.NET MVC Workshop for Women in TechnologyASP.NET MVC Workshop for Women in Technology
ASP.NET MVC Workshop for Women in Technology
 
Meetup developing building and_deploying databases with SSDT
Meetup developing building and_deploying databases with SSDTMeetup developing building and_deploying databases with SSDT
Meetup developing building and_deploying databases with SSDT
 
Domino Server Health - Monitoring and Managing
 Domino Server Health - Monitoring and Managing Domino Server Health - Monitoring and Managing
Domino Server Health - Monitoring and Managing
 
Cmake kitware
Cmake kitwareCmake kitware
Cmake kitware
 
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
 
Continuous Delivery at Wix
Continuous Delivery at WixContinuous Delivery at Wix
Continuous Delivery at Wix
 
Microservices, Kafka Streams and KafkaEsque
Microservices, Kafka Streams and KafkaEsqueMicroservices, Kafka Streams and KafkaEsque
Microservices, Kafka Streams and KafkaEsque
 
SaaS + CMS: Tricode's Technical Roadtrip
SaaS + CMS: Tricode's Technical RoadtripSaaS + CMS: Tricode's Technical Roadtrip
SaaS + CMS: Tricode's Technical Roadtrip
 
Magnolia conference 2014: Tricode, Technical road to Tricode SAAS, powered by...
Magnolia conference 2014: Tricode, Technical road to Tricode SAAS, powered by...Magnolia conference 2014: Tricode, Technical road to Tricode SAAS, powered by...
Magnolia conference 2014: Tricode, Technical road to Tricode SAAS, powered by...
 
Kubernetes @ meetic
Kubernetes @ meeticKubernetes @ meetic
Kubernetes @ meetic
 
SOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesSOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class Libraries
 

Plus de Daniel Toomey

Plus de Daniel Toomey (20)

Microsoft Azure News - May 2024 - BAUG'24
Microsoft Azure News - May 2024 - BAUG'24Microsoft Azure News - May 2024 - BAUG'24
Microsoft Azure News - May 2024 - BAUG'24
 
Azure Logic Apps and Copilot.pptx .
Azure Logic Apps and Copilot.pptx      .Azure Logic Apps and Copilot.pptx      .
Azure Logic Apps and Copilot.pptx .
 
Microsoft Azure News - April 2024 .
Microsoft Azure News - April 2024      .Microsoft Azure News - April 2024      .
Microsoft Azure News - April 2024 .
 
Microsoft Azure News - Feb 2024
Microsoft Azure News - Feb 2024Microsoft Azure News - Feb 2024
Microsoft Azure News - Feb 2024
 
Microsoft Azure News - Dec 2023
Microsoft Azure News - Dec 2023Microsoft Azure News - Dec 2023
Microsoft Azure News - Dec 2023
 
Microsoft Azure News - Nov 2023
Microsoft Azure News - Nov 2023Microsoft Azure News - Nov 2023
Microsoft Azure News - Nov 2023
 
Microsoft AzureNews - Oct 2023
Microsoft AzureNews - Oct 2023Microsoft AzureNews - Oct 2023
Microsoft AzureNews - Oct 2023
 
Microsoft Azure New - Sep 2023
Microsoft Azure New - Sep 2023Microsoft Azure New - Sep 2023
Microsoft Azure New - Sep 2023
 
Microsoft Azure News - Aug 2023
Microsoft Azure News - Aug 2023Microsoft Azure News - Aug 2023
Microsoft Azure News - Aug 2023
 
Private DNS Infrastructure Support in Hybrid Scenarios
Private DNS Infrastructure Support in Hybrid ScenariosPrivate DNS Infrastructure Support in Hybrid Scenarios
Private DNS Infrastructure Support in Hybrid Scenarios
 
Microsoft Azure News - Jul 2023
Microsoft Azure News - Jul 2023Microsoft Azure News - Jul 2023
Microsoft Azure News - Jul 2023
 
Microsoft Azure News - Jun 2023
Microsoft Azure News - Jun 2023Microsoft Azure News - Jun 2023
Microsoft Azure News - Jun 2023
 
Microsoft Azure News - May 2023
Microsoft Azure News - May 2023Microsoft Azure News - May 2023
Microsoft Azure News - May 2023
 
Microsoft Azure News - Apr 2023
Microsoft Azure News - Apr 2023Microsoft Azure News - Apr 2023
Microsoft Azure News - Apr 2023
 
Microsoft Azure News - Mar 2023
Microsoft Azure News - Mar 2023Microsoft Azure News - Mar 2023
Microsoft Azure News - Mar 2023
 
Microsoft Azure News - Feb 2023
Microsoft Azure News - Feb 2023Microsoft Azure News - Feb 2023
Microsoft Azure News - Feb 2023
 
Microsoft Azure News - Jan 2023
Microsoft Azure News - Jan 2023Microsoft Azure News - Jan 2023
Microsoft Azure News - Jan 2023
 
Microsoft Azure News - Dec 2022
Microsoft Azure News - Dec 2022Microsoft Azure News - Dec 2022
Microsoft Azure News - Dec 2022
 
Microsoft Azure News - Nov 2022
Microsoft Azure News - Nov 2022Microsoft Azure News - Nov 2022
Microsoft Azure News - Nov 2022
 
Microsoft Azure News - Oct 2022
Microsoft Azure News - Oct 2022Microsoft Azure News - Oct 2022
Microsoft Azure News - Oct 2022
 

Dernier

Dernier (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

Design-Time Properties in Custom Pipeline Components

  • 1. Design Time Properties BizTalk Pipeline Components Daniel Toomey presenter
  • 2. Source • Understanding Design-Time Properties for Custom Pipeline Components in BizTalk Server • Author: Saravana Kumar, MCAD (Charter member), MCP (BizTalk 2004) • Published: December 2006 • http://www.microsoft.com/downloads/details.aspx?FamilyID=8c2572a2-fb61-4016-a7a7- 1c37518b39ff&displaylang=en
  • 3. What Is a Pipeline? • All messages in/out of BizTalk must go through a pipeline • BizTalk includes 4 default pipelines: – Pass Through Receive / Transmit – XML Receive / Transmit • Each pipeline has several stages
  • 4. Receive Pipeline Stages • Decode: Used to decrypt/decode an incoming message. Examples: decrypt a secure message into plaintext; decode a MIME message into XML. • Disassemble: Used to convert a flat-file message to XML, if necessary. In addition, if the incoming message consists of a number of discrete messages bundled together within an envelope, disassemble components can be used to break the message into multiple single messages. • Validate: Used to validate an incoming message against the schema. • ResolveParty: The component will attempt to determine an identity for the sender
  • 5. Send Pipeline Stages • Pre-Assemble: Used to manipulate a message prior to serialization. • Assemble: Takes the XML format the messaging engine turns out and converts it to a flat-file format if necessary, or adds an envelope to an outgoing message. This is a counter action to the Disassemble stage on the receive side. • Encode: Used to encrypt/encode the message. This is a counter action to the Decode stage on the receive side.
  • 6. What Is a Pipeline Component? • Pipeline Components do the work inside the stages • Some stages can support multiple components, serially processed
  • 7.
  • 8. Design Time Properties • Configuration settings for .NET components • Can change at design time (VS) and/or at run time (BTS Admin Console)
  • 10. Custom Design Time Properties • Defining design-time properties using basic .NET data types • Creating a drop-down list for a design-time property • Complex types and serialization techniques – Custom types and TypeConverter – Collections and XML serialization • Using the SchemaList class
  • 11. IPersistPropertyBag Interface • Key interface for design time properties • Four methods: – GetClassID : allows use with unmanaged code – InitNew : initialise any necessary structures, caches, data, objects, etc – Load : initialise (read) properties from bag – Save : save properties into the bag
  • 12. Creating a Custom Pipeline Component • START FROM: – Copy from SDK sample – Use BTS Pipeline Component Wizard – Use sample from Saravana Kumar (PipelineCompTemplate.cs) • STEPS: 1. Change name of class in two places: • Class definition • Resource Manager definition (string) 2. Generate a new unique class ID
  • 13. Steps for Basic .NET Data Types 1. Define private field variables 2. Define public design time properties 3. Implement the Load method of the IPersistPropertyBag interface. 4. Implement the Save method of the IPersistPropertyBag interface 5. Implement the GetClassID and InitNew methods of the IPersistPropertyBag interface 6. Implement Execute method
  • 14. Using the Custom Component 1. Build the project 2. Copy DLL into: C:Program FilesMicrosoft BizTalk Server 2006Pipeline Components 3. Add to toolbox 4. Drag onto a new BizTalk pipeline
  • 15. Post-Build Event Code IF $(ConfigurationName) EQU Release GOTO done xcopy "$(ProjectDir)$(Outdir)$(TargetFileName)" "C:Program FilesMicrosoft BizTalk Server 2006Pipeline Components" /R /Y /F IF %ERRORLEVEL% EQU 0 GOTO done net stop "BizTalk Service BizTalk Group : BizTalkServerApplication" iisreset xcopy "$(ProjectDir)$(Outdir)$(TargetFileName)" "C:Program FilesMicrosoft BizTalk Server 2006Pipeline Components" /R /Y /F net start "BizTalk Service BizTalk Group : BizTalkServerApplication" :done
  • 16. Per-Instance Pipeline Configuration • Can set property values for each instance • Set on Send / Receive port properties • Set by Administrator
  • 18. Demo
  • 19. Tips • Keep pipeline and pipeline component projects in separate solutions • Ensure you generate a unique class ID • Change namespace in two places • Ensure properties are spelled correctly when represented as a string in PropertyBag methods
  • 20. BTS Pipeline Component Wizard • Built by Martijn Hoogendoorn (MVP) • http://btsplcw.codeplex.com/ • Automates much of the process of creating a component template • Need to build the solution & run the MSI • Becomes a new BizTalk project type