BizTalk<Extended> is an open-source project that will take your BizTalk development to the next level.
BizTalk<Extended> offers the following features:
- Typed interaction with the message context
- Generic pipeline component
If you want to include BizTalk<Extended> in your project, you can install it directly from NuGet.
To install BizTalk<Extended>, run the following command in the Package Manager Console:
PM> Install-Package BizTalk.Extended.Pipelines.General
PM> Install-Package BizTalk.Extended.Pipelines.Extensions
PM> Install-Package BizTalk.Extended.Orchestrations.Extensions
Fixed strings in code are evil and should be avoided at all times when possible to prevent typos or breaking changes when a namespace changes, especially when interacting with the message context.
We provide you the tools to specify the type of your property and handle it all for you. You can use your own custom property schemas or existing BizTalk schemas.
To interact with these BizTalk schemas you'll need to reference Microsoft.BizTalk.GlobalPropertySchemas.dll
that contains all the types.
You can find it here:
C:\Program Files (x86)\Microsoft BizTalk Server 2013 R2\Microsoft.BizTalk.GlobalPropertySchemas.dll
You can write values to the context in no time! By using the WriteContextProperty
you can specify to which element of your property schema you want to write and what value.
In this example we'll write the Send value to the Action
element in the WCF
schema.
message.WriteContextProperty<WCF.Action>("Send");
Promoting is just as easy, just use the PromoteContextProperty
instead!
message.PromoteContextProperty<WCF.Action>("Send");
It also works with your custom property schemas. Here we will write Codito as CompanyName
in our Customer
schema.
message.PromoteContextProperty<Customer.CompanyName>("Codito");
When we look at the tracking you see that it automagically retrieves the namespace and writes the value to the context
You're not limited to strings, you can also pass in enumerations and we'll handle it!
message.PromoteContextProperty<Customer.SupportPlan>(SupportPlan.FirstLine);
You can read values from the context as well - You simply specify the property you're interested in and what type of value you are expecting it to be.
string action = message.ReadContextProperty<WCF.Action, string>();
By default all properties are mandatory. This means that when a context property is not found in the context a ContextPropertyNotFoundException
will be thrown containing the Name & Namespace of the property.
However, if you only want to read an property if it is present you can mark it as optional. This allows you to read the value if it's present and otherwise receive null
and no exception will be thrown.
string action = message.ReadContextProperty<WCF.Action, string>(isMandatory: false);
Remark - Value-types will return their default value when the specified property is not present. If you want to receive a
null
you'll need to mark the expected type as a nullable type i.e.int?
.
For a full list of the planned features, have a look at the feature
-issues here.
In order to use this library you should meet these requirements:
- BizTalk 2013 R2 or higher
- Visual Studio 2013 or higher
- .Net Framework 4.5 or higher
This project is licensed under the MIT license.