Two new ESB Toolkit videos now live (incl a really cool BizTalk demo)

As part of the recent BizTalk Server 2009 “First Look” tour I did in the US Southwest district, I developed a demo application that brought together some of the techniques I have used on client projects over the years, and the new ESB Toolkit 2.0. I did so in what I think is a very approachable and easy-to-understand way.

I recorded two of the demos, and they are now available at MSDN.

In my opinion, the most important of these is the “Order Demo” video. It showcases how we can leverage the Microsoft stack to easily assemble comprehensive solutions that meet business needs. That’s marketing speak for “cool stuff that’s a pattern you can use to do things things you need to do”. This is about 20 or so minutes long, and I would encourage all BizTalk architects/developers to check it out, as it may show you capabilities many don’t know they have. You can even show this one to your manager and they’ll get it! the video is available at http://msdn.microsoft.com/en-us/biztalk/cc998440.aspx.

The second video walks through the itinerary designer experience, showing how itineraries can be built and deployed, and rolls in UDDI and design-time resolution. The video is available at http://msdn.microsoft.com/en-us/biztalk/dd320596.aspx.

I’m planning to do a blog post around the BAM portion of the Order Demo. I came up with a way to implement that which I have never used before, and I’m guessing many people haven’t thought of it either. As SharePoint usage expands around the world, techniques like this become an increasingly powerful tool.

Excel CSV to string[]

While building a Excel CSV to Claim application for a client I needed to take a comma delimited record and place it into a string array.

The challenge is that there is a wrap character only for the fields that have the delimiter in the data.

Example:

012346,012346001,SMITH ,SCOTT,J
012345,012345001,”WILLIAMS, III ”,HENRY ,R
012344,012344001,DAHL ,MICHELLE ,T

I could not find an easy way to parse this into an array, this is what I came up with:

public string[] Split(string expression, string delimiter, string qualifier, bool ignoreCase)
{
    string _Statement = String.Format("{0}(?=(?:[^{1}]*{1}[^{1}]*{1})*(?![^{1}]*{1}))",Regex.Escape(delimiter), Regex.Escape(qualifier));

    RegexOptions _Options = RegexOptions.Compiled | RegexOptions.Multiline;
    if (ignoreCase) _Options = _Options | RegexOptions.IgnoreCase;

    Regex _Expression = new Regex(_Statement, _Options);
    ArrayList finalresult=new ArrayList();
    foreach (string result in _Expression.Split(expression))
    {
        string tempData=result.Replace(qualifier, "");
        finalresult.Add(tempData.Trim());
    }
    string[] strArray = finalresult.ToArray(Type.GetType("System.String")) as string[];
    return strArray;
}

I am sure it can be done better, yes, I know, two passes through isn’t quite the best to remove the “ from the quoted field, and I could have done it a little better to remove the spaces, but it does what I needed, and the client was not paying for how fast it runs, he was paying me for how fast I could code it!

Don’t tell me “Can’t”

This was being sent around our office today that I thought I’d just have to share
with you.

My first thought was ’photoshop’.but one of the South African born Girls here swears
black and blue that this is normal.

Everything about this picture is wrongat any point the goat could say “forget thisI
don’t have the right shoes on”
(he would probably bleat it out to his mates)

Just goes to show.we’re limited only by our own minds

Thought for “Micks Day”

Version 5 of pipeline components library

Hi all

I have just released version 5 of my pipeline components library.

It has the following additions:

  • SuspendAfterMap. In BizTalk 2009 (which is the only supported BizTalk version for
    this pipeline component) there has been added support for recoverable interchanges
    for errors occurring during mapping on receive ports after disassembling. This is
    achieved by setting a specific promoted property to “true”. I have created a pipeline
    component that will do this for you.
  • WriteProperties. This pipeline component serves almost NO purpose at all, except I
    used it for debugging to see what properties existed on a message going through BizTalk.
    It will write out all context of a message to the eventlog, one event at a time.

It has the following new features:

  • Promote. The pipeline component used for promoting a value based on an XPath expression
    and thereby enabling you to promote a specific instance of a reoccurring element has
    been enhanced by a “constant”. So instead of having to set the value of some property
    to the result of an XPath expression you can just enter a constant instead. If you
    enter both a constant and an XPath expression the constant wins. This new feature
    is quite handy if you need to set the value of for instance MIME.FileName to a specific
    value or any other property for that matter.

You can find the newest versions at http://eebiztalkpipelinecom.codeplex.com/



eliasen

Version 9.1 of functoids library

Hi all

I have just released version 9.1 of my functoid library. Actually, nothing much new
has appeared. I had accidentally left out the functoid I described at http://blog.eliasen.dk/2009/03/08/SolvingTheIfThenElseProblemInAMapPartIII.aspx from
version 9, so now it is reintroduced – and it has also been added to the documentation.

Find the newest version of the functoids library at http://eebiztalkfunctoids.codeplex.com –
thanks.



eliasen

ESBT Toolkit How To Video #6: Performance Metrics using Built in BAM

Welcome to #6 in my series of ESB Toolkit How To Videos. If you have not seen the previous videos, I encourage you to do so. The previous ones can be found here


1) Basic Itinerary Routing and UDDI Integration


2) Composite Itinerary and Dynamic Mapping


3) Itinerary Resolution in the Bus


4) Dynamic Itinerary Resolution in the Bus


5) Including Custom Orchestrations in the Itinerary Designer


There is a great (but sadly under appreciated and under discussed) feature in the ESB Toolkit that I want to focus on today. Back at last years SOA conference, I spent some time talking with Dmitri Ossipov (who lead the development of the ESBT) and he showed me some of the new features he was adding into the toolkit. The one that caught my eye immediately was the built in BAM tracking. The ESB Toolkit has the built in ability to automatically log tracking and performance information for your itineraries as they are processed by the ESB components. If you have enabled “Tracking” in your itineraries, then the ESBT automatically logs information to a BAM table in SQL Server every time any of the itineraries services execute. This data includes data about which service executed, which itinerary and version it was part of, what time it executed, what specific instance it was part of as well as the status of the overall itinerary. This data is a gold mine for those of you looking to track the overall performance of your ESB and related services. It can be used to view all kinds of invaluable information about which itineraries are being used, how well they are performing, which ones are too slow, which ones are failing, which individual services are under performing etc.


Now while the ESBT will automatically capture all of this information you, it doesn’t come with any kind of user friendly mechanism for viewing, analyzing or interacting with this data. In this video, I’ll show you how to easily setup a number of BAM Views that will allow you to quickly assess performance stats about your itineraries. I build these views out in Excel and that allows me to use standard pivot tables and charts to view the data and I slice it up. I have also created views that allow me to tracking the performance of specific itineraries across different versions and across time. This is great info to have if you want to understand if recent changes to an itinerary have resulted in better or worse performance than you previously had.


The following image shows one of the views that I setup to show me what the average, worst and best performance times were for my itineraries. This is pretty useful information to have as I can quickly identify performance issues in my itineraries. You can easily see that the “ComposedDemo” takes quite slow when compared to the “DemoService” itinerary. I can even drill down in the specifics of a single itinerary and find out if a specific ESB service is causing the overall poor performance. 



Now, unlike my previous videos, where I just showed you how to build out a specific solution, I’m going to actually provide you with the components I’ve built. I’ve attached the Excel file that contains my BAM Views and you should be able to easily deploy these into your system and access the charts and tables that I show in the video. You will just need to have the ESBT installed as well as the BizTalk BAM components installed and configured.


In order to avoid make an hour long video, I do not go very deep into what BAM is or how you work it. If you are not familiar with BizTalk’s BAM feature, there may be some elements of this video that are not 100% clear. However, if you have a basic understanding of what BAM is, then I hope this video will offer some great value.


The video can be accessed here:


The BAM Excel Project can be accessed here:


Cheers and keep on BizTalking


Peter