Design-Time Properties in Custom Pipeline Components

21
Design Time Properties BizTalk Pipeline Components Daniel Toomey presenter

description

Understanding Design-Time Properties for Custom Pipeline Components in BizTalk Server Based on article by Saravana Kumar, MCAD (Charter member), MCP (BizTalk 2004) Published: December 2006

Transcript of Design-Time Properties in Custom Pipeline Components

Page 1: Design-Time Properties in Custom Pipeline Components

Design Time PropertiesBizTalk Pipeline Components

Daniel Toomey

presenter

Page 2: Design-Time Properties in Custom Pipeline Components

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

Page 3: Design-Time Properties in Custom Pipeline Components

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

Page 4: Design-Time Properties in Custom Pipeline Components

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

Page 5: Design-Time Properties in Custom Pipeline Components

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.

Page 6: Design-Time Properties in Custom Pipeline Components

What Is a Pipeline Component?

• Pipeline Components do the work inside the stages

• Some stages can support multiple components, serially processed

Page 7: Design-Time Properties in Custom Pipeline Components
Page 8: Design-Time Properties in Custom Pipeline Components

Design Time Properties• Configuration settings for .NET

components• Can change at design time (VS) and/or

at run time (BTS Admin Console)

Page 9: Design-Time Properties in Custom Pipeline Components

Design Time Properties

Page 10: Design-Time Properties in Custom Pipeline Components

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

Page 11: Design-Time Properties in Custom Pipeline Components

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

Page 12: Design-Time Properties in Custom Pipeline Components

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

Page 13: Design-Time Properties in Custom Pipeline Components

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

Page 14: Design-Time Properties in Custom Pipeline Components

Using the Custom Component

1. Build the project

2. Copy DLL into:C:\Program Files\Microsoft BizTalk Server 2006\Pipeline Components

3. Add to toolbox

4. Drag onto a new BizTalk pipeline

Page 15: Design-Time Properties in Custom Pipeline Components

Post-Build Event CodeIF $(ConfigurationName) EQU Release GOTO donexcopy "$(ProjectDir)$(Outdir)$(TargetFileName)" "C:\

Program Files\Microsoft BizTalk Server 2006\Pipeline Components" /R /Y /F

IF %ERRORLEVEL% EQU 0 GOTO donenet stop "BizTalk Service BizTalk Group :

BizTalkServerApplication"iisresetxcopy "$(ProjectDir)$(Outdir)$(TargetFileName)" "C:\

Program Files\Microsoft BizTalk Server 2006\Pipeline Components" /R /Y /F

net start "BizTalk Service BizTalk Group : BizTalkServerApplication"

:done

Page 16: Design-Time Properties in Custom Pipeline Components

Per-Instance Pipeline Configuration

• Can set property values for each instance

• Set on Send / Receive port properties• Set by Administrator

Page 17: Design-Time Properties in Custom Pipeline Components

Per-Instance Pipeline Configuration

Page 18: Design-Time Properties in Custom Pipeline Components

Demo

Page 19: Design-Time Properties in Custom Pipeline Components

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

Page 20: Design-Time Properties in Custom Pipeline Components

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

Page 21: Design-Time Properties in Custom Pipeline Components

Questions?