BizTalk Custom Pipelines Components – Best Practices – Defining Design-Time Properties: Description and DisplayName

Unfortunately, in most of the examples of custom pipelines components, we many times forgot to customize properly the description and the display name of the properties of the pipeline component (myself including 🙂 ).

Normally we use BizTalk Server Pipeline Component Wizard to create the custom pipeline component that generates the following code:

private string _ArchiveFilename;
public string ArchiveFilename
{
   get
   {
      return _ArchiveFilename;
   }
   set
   {
      _ArchiveFilename = value;
   }
}

When we add the component to the pipeline, there was no description of the properties at the bottom of the property window, it appears like this:

Pipeline Component Properties
Pipeline Component Properties

Properties are easy enough to add programmatically, that would integrate perfectly into C# code. But In order to have really good components, it should be easily editable during the graphic design.

This lack of percussion cause some problem when the administrator or some other person tries to configure the component because he doesn’t know exactly what the properties refer to, he only has the name of the property to understand what this is for, in some cases is insufficient.

Customizing the Designer

To customize how the property is displayed by the designer you need four basic attributes: Description, DefaultValue, Browsable.

  • Description – This is the description that the programmer sees at the very bottom of the Properties Window.
  • DefaultValue – Specifies the default value of the property when the user control is first created.
  • Browsable – If set to false, the property won’t be displayed at all in the designer. This attribute is useful if your property is to be modified only programmatically.

The Format

[properties go here]
public int MyProperty
{
   ...
}

So, to customize better the properties of the component, we have to set the:

Like this:

[Description("The filename of the archive message. This property can include macros")]
[DisplayName("Archive Filename")]
public string ArchiveFilename
{
   …
}

The differences in the result when we add the component to the pipeline are:

  • We have a description of what the property refers to;
  • We can define better the display name of the property, with spaces and special chars
Pipeline Component Properties

Design-Time Property Browser Attributes

Design-time attributes are essential for displaying your control and its members correctly at design time, as they provide valuable information to a visual design tool.

In the following code fragment, the CategoryAttribute attribute enables the property browser to display the TextAlignment property in the Alignment category. The DescriptionAttribute attribute allows the property browser to provide a brief description of the property when a user clicks on it.

AttributeDescription
BrowsableAttributeDetermines whether the property is visible in the Property Browser.
[Browsable(true)]
DescriptionAttributeDefines a small block of text to be displayed at the bottom of the property browser when the user selects a property or event.
[Description(“The color used for painting alert text.”)]
DefaultValueAttributeSpecifies the default value for a property.
[DefaultValue(typeof(Color), “White”)]
ReadOnlyAttributeSpecifies that this property cannot be edited in the Property Browser.
[ReadOnly(true)]
CategoryAttributeTells the Property Browser which group to include this property in. [Category(“Appearance”)]

 

Not Supported in pipeline components

See more in Common Attributes for Properties and Events or in System.ComponentModel

Author: Sandro Pereira

Sandro Pereira lives in Portugal and works as a consultant at DevScope. In the past years, he has been working on implementing Integration scenarios both on-premises and cloud for various clients, each with different scenarios from a technical point of view, size, and criticality, using Microsoft Azure, Microsoft BizTalk Server and different technologies like AS2, EDI, RosettaNet, SAP, TIBCO etc. He is a regular blogger, international speaker, and technical reviewer of several BizTalk books all focused on Integration. He is also the author of the book “BizTalk Mapping Patterns & Best Practices”. He has been awarded MVP since 2011 for his contributions to the integration community.

2 thoughts on “BizTalk Custom Pipelines Components – Best Practices – Defining Design-Time Properties: Description and DisplayName”

  1. Thank you, after 2 hours of googling I ended up here. This indeed solves programming in Visual Studio, no I need to find out how I can achieve the same in Biztalk, when pipeline component properties are changed on the ports.

    1. Hi Jonas, I am trying to do the same; how to make the component properties visible in biztalk admin console, in other words, in the port level. Did you find out how this can be achieved? My component has design time properties visible in pipeline editor, but when deployed and used in a port in BizTalk, I see “No properties in Component”.

Leave a Reply

Your email address will not be published. Required fields are marked *

turbo360

Back to Top