A world apart from the everday ...

Assert.IsTrue(Entries.Count == 0);
Oslo ...

No, not the city in Norway even though that is a beautiful place it's far too cold to get my tail feathers in a flutter ....

I am talking about the "Oslo" initiative that Microsoft announced some time back.

Since it was announced it has caused more hooha than anything else Microsoft has announced since possibly the introduction of Windows!

So what is it?!?!?

Darn fine question .... Up until not many have been able to give me a definitive answer and often the messages being received by Joe Public are confusing and sometimes even contradictory!

Well thankfully Steven Martin, senior director of product management in Microsoft's Connected Systems Division (CSD) has shed some light on this topic at the recent Worldwide Partner Summit;

Check it out here ... Oslo: Road to Microsoft's Cloud

Probably the most clear description of what the imitative is aiming to achieve!

I particularly like this paragraph:

Martin said the future of application development at Microsoft involves modeling and services and will feature analysis and design tools, next-generation declarative languages, process-aware engines and platforms, and self-aware system management. The Microsoft products and tools involved in this will include BizTalk Server 5, BizTalk Services 1, Visual Studio 10, Microsoft System Center 5 and the .NET Framework 4 -- all upcoming versions of core Microsoft technology.

Seems the farm is safe so to speak ....

Big Smile

I look forward to exciting times ahead!

Posted: Jul 17 2008, 11:58 AM by Ryan CrawCour | with 1 comment(s)
Filed under: ,
TechEd Africa 2008

So ... this will be my 9th year in a row (if i can count 2000 .... 2008) that I have been to TechEd Africa, never missed a single one!

I always find something new to learn about; network with some cool people; and usually have an absolute PARTY!

I am always amazed that year-in year-out Microsoft can put on such an amazing event. The organisation is always so slick and each year it just seems to get bigger and bigger!

This year, well, this year might be a little different for me anyways; A) it's the first time it's NOT at Sun City but in Durban and B) last but not least because this time round I get the somewhat dubious honour of presenting a session or two (or 3 or 4 or ...) !

Can you say ....

 

PRESSURE!!

STRESS!!

 

I will be flying solo with these two breakout sessions; (SOA304) - Enterprise Service Bus As an Operating Environment for Services and (SOA301) - A Technical Drilldown into Microsoft ESB Guidance 


And then if that were not enough, I will also be co-presenting the following breakout sessions with Markus Landler, Microsoft Field PM for EMEA from Germany, (SOA201) Microsoft BizTalk RFID in Real World Deployments: Connecting Movements in the Physical World to Enterprise Applications  and (SOA302) - Everything You Wanted to Know about Real Work Value in RFID, Including the Kitchen Sink!

If I survive these sessions you will find me recovering in my hotel room hiding in the speaker room hanging out with all you cool people out in the community lounges and in some of the "Ask The Experts" sessions or in some of the "Demo Lounges".

All this work doesn't mean that I will be missing out on some serious R&R and a few good cold ones, oh no way!

I'll just have to sleep for a week after TechEd!

So if you find yourself at TechEd this year do pop around and say hi.


 

Posted: Jul 08 2008, 07:16 PM by Ryan CrawCour | with 3 comment(s)
Filed under:
BizTalk Server and unit testing ...

The next instalment of the South African BizTalk User Group meetings will be happening tomorrow evening (9 July 2008) at the Microsoft Campus in Bryanston starting at 18:00.

If you have always wanted to know how to unit test your BizTalk solutions because you're an avid fan of TDD, then make sure you don't miss this! Nabeel Prior from Microsoft will be walking us through this very topic and how to use BizUnit and the BizUnit designer.

So short and sweet, but I am sure you will agree that it should be extremely interesting and add a bunch of value to your BizTalk projects. I know I am looking forward to it.

Remember to keep an eye on the BizTalk User Group site (here) so you don't miss out on the exciting stuff happening in the local community ....

There are RSS feeds all over the site so you can make sure that the latest content wings it's way down to your favourite RSS Reader; like the feed for User Group Meeting announcements which can be found here

That's it for now!

Hope to see you tomorrow evening.

The Bloggers Guide to BizTalk is back ......

For those of you that have been working with BizTalk for any amount of time I am sure you are well aware of the "The Bloggers Guide to BizTalk" and if so you will no doubt also be aware that there hasn't been one of since v1.8 (June 2006) ... if like me you were getting serious withdrawal symptoms fear not .... IT IS BACK!

What is this thing that has me all excited you ask ...

The aim of The Bloggers Guide to BizTalk is to provide the best of the online content produced by the BizTalk blogging community in an easily accessible format.

All the content in the guide has been created by BizTalk developers who wish to share their knowledge and ideas with others in the developer community.

The subjects of these contributions and the level of their complexity are varied, so there is information available for those who are new to BizTalk, as well as for advanced developers.

The posts are usually taken directly from the contributors blog, so the writing style of the contributions vary, and there is no guarantee that all the information is free of errors. Any feedback as to corrections can be made by commenting on the original article at the authors blog.


All contributions to the guide are gratefully received, and new contributors are always welcome.

 

Check out the latest version (1.9) here

BizTalk VTS Summit '08

I must just say a BIG thanks to Microsoft for sending me to the annual BizTalk Virtual Technical Specialist Summit; held this year on a cruise liner out of Miami!

I met a bunch of new people from all over the world; including Brian Loesgen (co-author of the BizTalk ESB Guidance), John Brockmeyer (author of the incredible whitepaper on optimising your BizTalk solution), Erik Leaseburg (founder of the BizTalk Rangers team). Be warned though, some of these guys can induce instant brain haemorrhage! But it was really great to meet them and put faces to the blog poster I read all the time.

I learnt a bunch, had an incredible amount of fun, and yes ... believe it or not, worked real hard!

I look forward to VTS Summit '09!

But for now it's back to reality and life in cold SA ....

BizTalk user group has an online home ....

At last!

The South African BizTalk community has an online home. Head on over to www.biztalkug.co.za where you will be able to find anything and everything related to BizTalk in South Africa.

Go ahead, sign up ... you know you wanna!

PS. a big big big thanks to all that helped to get this site up & running. Nabeel, big up to you man! Thanks! To Telligent for sponsoring us a license to Community Server, thanks very much!

 

I am currently in Miami for the BizTalk VTS conference but as soon as I get back I will start planning for the next meeting. If anybody has any suggestions for topics you want covered please let me know by posting on the forums on the user group site.

Other ways to deal with suspended messages...

Rudolf Henning recently wrote an interesting post in his blog entitled "Listing BizTalk suspended filenames";

Typically I don't respond directly to people's posts, but heck that's what blogging is supposed to be for - to express my opinions and insights on particular subjects; and this seemed like a good candidate for a response ...

So here we goes my best attempt....

 

Rudolf opens his post with the following:

"One of the real limitations of BizTalk server (design issue) is the lack of details for when things go wrong"

Now I am not sure what he means by this but I disagree with this statement.

BizTalk provides EXCELLENT support for when things go wrong. The tools are all there you just need to go looking in the right places.

New to BizTalk Server 2006 is the excellent BizTalk Administrator Console. This is really your one stop shop for your BizTalk environment. In previous versions of the product this functionality was seriously lacking and we needed to rely heavily on HAT and on the brilliant tools provided by the community; such as the "BizTalk 2004 Administration Management Tool" written by our very own local boy, Paul Somers. But thankfully this is now a thing of the past, I have not yet come across and administrative type requirement that I could not do with the Administration Console. The Admin Console is the cockpit or flight deck of your BizTalk environment providing you with detailed insights into all your applications, active messages, suspended messages, etc. It allows you to access the body of all messages and view the promoted properties etc.

That's all fair and well if you're sitting watching the Admin Console all the time; but what if you're not that masochistic and you prefer to be doing other things with your spare time than hitting F5. Well, fear not ! BizTalk has great support for a number of operational management applications, including SCOM. With the BizTalk pack loaded you have access to all sorts of metrics and events that you can build actions on. You want to know when a message is suspended, no problem. You want to know when a send port could not deliver a message, no problem. Whatever you want it's there for you, and if by some miracle it isn't you can always write your own stuff for SCOM.

Rudolf mentions that he'd like the original filename of a file message that was suspended and shows how to retrieve this info from the message box; nice idea but I have a few issues with this. Firstly, i try NEVER to dig around in the MessageBox. This things is central to the entire way BizTalk works and any work inside this is more than likely not supported by Microsoft and is not guaranteed to work the same way in future versions. It's like popping the bonnet of your Ferrari and fiddling around with the complicated wiring and plumbing of the engine ... um, no thanks!

What if you have a BizTalk deployment that has multiple messageboxes? Do you need to know where to go look for your messages?

What is the sole purpose of the messagebox? It's a central temporary store where messages are published for subscribers to consume.

So how long does a message stay in the messagebox? Depending on your exact setup, only very briefly. Messages are delivered, consumed and they're gone. Well ok, not exactly true ... The body of the message is discarded and the context is moved off to the tracking database. Even the tracking db is not a permanent store for messages, because it is best practice to prune this thing else it can grow really really big quickly. So assuming your messages don't get suspended they don't stay in the messagebox very long.

Ok, Rudolf is talking purely about suspended messages, so what happens to these? Well if they're Suspended (Resumable) then the body of the message is held in the messagebox and his solution works quite nicely. But surely there is a better way of doing this instead of digging around in the BizTalk internal organs. Well, I believe there is ...

What about enabling failed routing and creating an orchestration that subscribes to failed messages. This orchestration can then access the original filename from the context, has access to the body of the message and can something with it; Like returning it to sender for correction, or emailing an information worker, or dropping it into a Sharepoint list ready for human intervention? The possibilities are endless and the nice thing about this solution is that you will not clutter up the Administration Console with all these suspended messages lying about ....

Without knowing the complete problem being faced by Rudolf I cannot say whether my solution would suffice or not, but the point that I am trying to make is that BizTalk, like anything, is merely a tool and it is up to you to decide how best to use it's (extensive) set of features in your specific scenario.

 

It is great to see local guys blogging on BizTalk topics ... it means the product is finally starting to find purchase in the local marketplace and is starting to rise up to where it is destined to be .... </salespitch> Wink

 

I'd love to hear your thoughts / comments / flames / other suggestions on how to accomplish the same thing.

Disclaimer: Please note; this is in NO WAY an attack on Rudolf (I don't even know the guy) or the way he is doing things, just merely my insights into what he wrote, the problem he faced and an attempt to come up with a potential alternative.

MVP Interop Event

Willy-Peter is doing a sterling job in organizing the upcoming MVP Interop session which will show that the us M$'ers are not completely ignorant and unaware of the other technologies out there and will show just how easy it is to integrate different technologies together.

MVP_Horizontal_FullColor_340d8fe4-0d9c-4cba-8148-9d4e1a96d4fb    Interop2008-Coin-Heads_5d68df81-eef5-4c07-853d-cd7463c0c077

For further details of the event check out Willy's post here

As Ruari said at last night's planning session it is no longer about the technology but more about the mind-set ...

So let's get our minds right and let's INTEROP!

BizTalk Deep Dive

So this week I am attending a deep dive course presented by John Callaway from Quicklearn.

I must say the sesison is very informative and even though I have been using BizTalk for almost 8 years now I am still picking up lots of little pieces of fun things that I never knew about before. Little things that will make my life as a BizTalk developer much, much easier.

This is the kind of content that us local BizTalk developers have been starved for; for such a long time. Thanks to Microsoft for bringing these guys out here ... now that you've wet our tastebuds can we have more

I will aggregate these bits and pieces, tips and tricks, into a session which I will present at the next BizTalk user group meeting, So if you missed out ... don't worry you can either catch the notes from the session on Willy's blog as he is posting regular titbits from the inside, or you can attend the next session and you'll gain a lot of this deep insight for gratis!

*grin*

ps. it is VERY good to see this session is jam packed with eager beavers ready to learn! i see the potential for a very bright future for BizTalk in South Africa.

now all i have to do is get back on to REAL [Stick out tongue] development projects where i get to use this stuff daily and not stuck on the stuff i am doing now ....

ciao for now

Posted: May 14 2008, 08:26 AM by Ryan CrawCour | with 1 comment(s)
Filed under:
The 3rd BizTalk User Group Meeting...

It's nearly that time again ... jeesh how time flies when you're having so much fun.

The next instalment in the saga of the Johannesburg BizTalk User Group will be happening on the 7th of May at the Microsoft campus in Bryanston at 18:00.

Topics planned for this session include;

  • EAI Patterns and their application in a BizTalk environment with an introduction to the BizTalk pattern wizard by Jon Flanders; which can be found here.
  • Business Rules Engine, best practices, tips and tricks from the field
  • Q&A ... so bring your questions and let's see if we can come up with the answers together.

Check out www.biztalkug.co.za. Yes I know the site is UGLY, out of date and in need of a serious overhauling, but hopefully if the universe plays along, and the sky does not fall on my head again, we'll have a new fully featured functional site up and running by beginning of next week. I love deadlines; mostly I love the sound they make when the go wooshing by :D. But seriously watch this space ...

So anybody who actively uses BizTalk server, is interested in BizTalk, or has heard about it and is wondering how it can revolutionise the way they integrate systems is welcome to pop in and share a cold beverage with us! We're not as bad as you may have heard....

Just please drop me an email and let me know you are planning on attending; the last thing we'd want is for you to get there and find we've run out of beverages or the ultra geeky, but really cool BizTalk T-Shirts... Whilst you're at it, please feel free to include requests / suggestions / demands / offers of free overseas trips etc. and we'll try get on top of it as soon as possible!

Ciao for now

One rotten apple can so easily spoil the bunch...

So with the MVP summit currently under way in Redmond I am once again reminded of the different caliber local MVPs out there.

Some of the guys are brilliant and do fabulous work in the communities for their respective areas of speciality. They blog constantly with interesting posts, tips and tricks that they've picked up from their daily experiences using the technologies. They host community events, deep dives, training sessions; often free to the community. Even now as we speak, whilst they're off hot knobbing with the big brains out there at the MVP summit they constantly blog, letting us know what is happening and where they can let us know about the new exciting things we can be expecting down the road. These guys are clearly passionate about their areas of speciality and do what they can to share their knowledge and enthusiasm with the rest of the community.

I am talking about Willy-Peter Schaub for Team System and Zlatan for Sharepoint  in particular... well done guys; you do a great job! These guys host user groups, blog regularly with very valuable information, host training sessions etc. It is in part due to their constant knowledge sharing in respective areas that I have personally found a new interest in these technologies.

And then...

Then you get those on the opposite poles to the category mentioned above...

Well, what can we say about them? These are the guys that year after year get voted into their roles yet you NEVER hear about them. In fact one particular case I did not know we even had a local MVP until one of the foreign MVPs I had been interacting with often suggested I contact the local guy ... what we have a local MVP? Jeesh blow me over ... These guys head off to MVP summit year after year yet never seem to share any of the knowledge gained with the guys back home. You never see them presenting at events, you never hear of them doing anything in the communities and even their blog sites are dead with not a single post in the last 6+ months. I shall refrain from mentioning individuals from this group in a public space like this, for obvious reasons but I am sure we have all had our dealings with them.

quoted from http://mvp.support.microsoft.com

Microsoft Most Valuable Professionals (MVPs) are exceptional technical community leaders from around the world who are awarded for voluntarily sharing their high quality, real world expertise in offline and online technical communities

So they are meant to be leaders in the community; imagine that...

quoted from http://mvp.support.microsoft.com

MVPs tend to be early adopters of new technology and actively communicate their experiences to millions of other technology users. Through their extensive community activity, MVPs help others solve problems and discover new capabilities, helping people get the maximum value from their technology.

They're meant to volunteer their time and knowledge helping out other professionals!?!

Yeah granted it's not an easy job! We all understand that you yourself are holding down a regular day job; but I guess that's the price you gotta pay for fame and fortune. Some are doing it really well, and others seem to not even try. In fact some are down right negative when it comes to their involvement with community events and user groups.

So what I want to know is how year after year some of these guys get voted in?

quoted from http://mvp.support.microsoft.com/gp/mvpawardintro

In order to receive the Microsoft MVP Award, MVP nominees undergo a rigorous review process. Technical community members, current MVPs, and Microsoft personnel may nominate candidates. A panel that includes MVP team members and product group teams evaluate each nominee's technical expertise and voluntary community contributions for the past year. The panel considers the quality, quantity, and level of impact of the MVP nominee's contributions. Active MVPs receive the same level of scrutiny as other candidates each year.

So that is how it is meant, but how does the nomination process and voting system really work?

Do you think I am being harsh and unfair? I would love to hear from the current SA MVPs or those in the know....

Should a few rotten apples be allowed to spoil the bunch?

PS. There are other great local MVPs (past and present); so if I did not mention you specifically then for that I apologise; but you know who you are.

And for the rest ... If the shoe fits...

Posted: Apr 16 2008, 06:31 PM by Ryan CrawCour | with 8 comment(s)
Filed under:
The 2nd BizTalk User Group meeting ....

Well, it's done, it's happened and now it's time to look forward to the next one!

Yup, the 2nd meeting of the newly formed BizTalk User Group was held this week, 5 March 2008, at Microsoft's offices in Bryanston. Thanks again to Frikkie for arranging the venue and organising the fantastic refreshments!

What else do we need? Some BizTalk perhaps, well there was loads of that too...

We started off the evening watching a video clip from on10.net about how Blue C Sushi are using the new RFID technologies available in BizTalk 2006 R2 to power their business and improve their customer experience whilst reducing wastage and costs at the same time. Finally, a practical use for RFID!

This was followed by a Deep Dive into debugging your messaging solutions presented by Pieter van der Merwe from The Enabler Group. Pieter highlighted the use of some really cool techniques and tools for pinpointing some nastiness that are often not exactly visible.

After the break it was my turn to do a short and sweet high level introduction into WCF & BizTalk 2006 R2. I covered a simple scenario to illustrate how to consume a WCF service in a messaging only scenario and then proceeded to build the world's most complicated calculator Big Smile by exposing a BizTalk orchestration that performed various simple operations on a set of numbers passed in and returned the result. I then demonstrated how to expose this as a WCF service using the publishing wizard.

All in all I think the meeting was a success. Nice to see some faces from the first meet back for version 2 ... must mean we're doing something right!

I will be posting a link to the PowerPoint slides and the sample code from the demos on to the group's site www.biztalkug.co.za in a short while and will probably update this post with the links too, so watch this space.

We are going to try and hold these session on the 1st Wednesday evening of every month, which makes the next get together of like minded souls 2nd April 2008. Invites will follow shortly...

The Jhb BizTalk User Group has a home ...

The Jhb (hopefully one day this will read the "South African") BizTalk User Group has a home ...

www.biztalkug.co.za

Sorry about the horrible initial landing page, but this is the best we could come up with in the 10 seconds we had between running around like Manto who has lost her garlic and JZ who doesn't know where the LifeBuoy soap is!

If you would like to be kept in the loop just hit the mailto: link and you will be added to a distribution list. This is only temporary until the full blown site is up and running.

When you "register" for the upcoming BizTalk User Group meeting on the 5th of March at 18:00 (hint hint) feel free to include any suggestions on topics that you would like discussed, or any questions (try to keep them BizTalk related Stick out tongue please) you would like answered and we will see what we can do.

Until later then; I've got piles of stuff to pour through over to try and put together some kind of agenda for the next session.

Ciao for now

PS. I am considering running the site on either Sharepoint or Community Server, anybody got any words of advice regarding this? Anybody know of any other platforms to run a community site on? Hoping to keep the costs as low as possible, so that we have more budget for beverages Big Smile

Posted: Feb 12 2008, 02:21 PM by Ryan CrawCour | with 1 comment(s)
Filed under:
The Daily WTF

There used to be the best website, called the Daily WTF, out there where as a developer you could submit the most ridiculous gems of "code" you happen to stumble across in your everyday existence...

Reading through the various posts and comments used to provide me with some light hearted relief knowing that we walk amongst some very "special" people that call themselves developers.

The site appears to no longer exist or has change guise. Something about it's not PC to ridicule bad developers and the horrible code they write. Something about the fact that as developers we should take the time to understand their point of view and instead of shaming the code for the waste of 1's and 0's that it is we should make a concerted effort to mentor these people so that they could learn .... I say to hell with that!

Today I received a pure gem of an example and had the site still be around it would've won the award for "best" submission of the day without a doubt.

To protect the guilty, for fear of legal action, names have been left out and actual data has been changed, but the concept remains.

I am consuming a web service published by an external partner. Being a follower of contract first development I go get the Wsdl and from this I generate the XSD. This is my contract, my interface, that I am going to work against.

The XSD states that approximately 100 odd fields of various types including enums are all required. xs:nillable = false. Meaning that before my Xml that I construct can be considered as valid it has to supply data of the appropriate type for each and every field. Nice. Except I don't have all the data.

I then requested that they update their schema to make fields that are optional exactly that optional.

The response I got would've been the submission to daily WTF.

Wait for it, this is classic ...

Just use "" for strings and pick any value from the list of allowed values for the enums.

My god!

Ok now bare in mind that this is for a financial system, so the integrity of the data is key here, else can you spell L A W S U I T ...

So I mention to the other developer that guessing values is a really bad idea and the response from this was

"Why?  Just consume the service in Visual Studio and let it default the values you don't supply."

So for shits and giggles sakes I did as he suggested. I built a simple Console application, consumed his service and watched in "amazement" how Visual Studio proceeded to create a bunch of classes for me. I then set only the firstname and surname properties of his contact object.

Before passing this object to the web service I added a little code to serialise this object to Xml. This is in a nutshell what the kind folks from Redmond are doing behind the scenes anyway, just to see what would actually be submitted to the service.

The result was a laugh; I got a contact with the correct name because this is what I supplied but the fun came with how VS defaulted all the lookups to the first value from the enum.

So I had a white male who was another contact's mother, who lived in Zimbabwe yet had nationality as Domestic and citizenship as South African. It also defaulted numeric values to 0, so we had his age as 0, but dates were set to 1901.01.01, so his birthdate element was set to some other date not matching up to his age at all.

Here's a news flash buddy, firstly not all of us use Visual Studio to consume web services; Ever heard of SOAP? Know what SOAP is other than the stuff you wash (hopefully) with. The default stuff that Visual Studio generates might be ok for simple services and you could probably get away with it 75% of the time, but you really need to have a remedial grasp of what is happening behind the scenes.

This is one of the major problems I have with how easy Visual Studio and .NET is making things, it allows a person who has no fundamental grasp of the concepts to generate code via a "paint by numbers" approach. In a similar manner I see developers today going mad with allocating memory (managed and unmanaged) and not disposing stuff because they assume .NET will cleanup after them because they did not take the time to understand the basic concepts of what is happening behind the scenes. But this is the subject of a whole other rant best left for another post.

Decorating all the methods of an existing system with the [WebMethod] attribute and returning your ADO.NET datasets does not a service orientated system make.

I wouldn't be surprised if this guy was a VB developer too Stick out tongue

Posted: Feb 04 2008, 02:40 PM by Ryan CrawCour | with 2 comment(s)
Filed under: ,
Bizarre errors... [fatal error X1001: unknown system exception]

In an earlier post (here) I discussed a truly bizarre error received when trying to compile an orchestration. Well at least on that occasion it gave me SOME information, it might've been cryptic but at least I has somewhere to start chasing the ghost ...

Today I got what must rank as the most obscure and useless error message I have ever received during BizTalk development, or any development for that matter.

Let me explain ...

See if you can spot what caused the exception before getting to my explanation of it. Once you see the explanation it's like Doh! [done in best Holmer Simpson voice]

So I've been working on this "little" orchestration for some time now which is exposed as a web service indirectly through it's schemas, as per accepted best practices for exposing web services. No biggie there.

I've also defined a standard Service Response message that my services return which looks a little like this:

<ServiceResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <MessageDateTime>2001-12-17T09:30:47.0Z</MessageDateTime>
   <Error>true</Error>
   <Messages>
     <Message>Some error message goes here</Message>
     <Message>Some other message</Message>
   </Messages>
</ServiceResponse>

Great,

So then I proceeded to build a simple helper class in .NET so I could build up one of these beauties dynamically inside my orchestration. This helper class looked like this:

For brevity I've removed the fluff and only left stuff that is applicable to this post

namespace MessageHelpers
{
    public partial class ServiceResponse
    {
        private System.DateTime messageDateTimeField;
        private bool errorField;
        private ServiceResponseMessageList messagesField = new ServiceResponseMessageList();

        [XmlArrayItem(ElementName = "Message", IsNullable=true)]
        public ServiceResponseMessageList Messages
        {
            get { return this.messagesField; }
            set { this.messagesField = value; }
        }

        public XmlDocument ToXmlDocument()
        {
            XmlDocument doc = new XmlDocument();

            XmlSerializer serializer = new XmlSerializer(typeof(ServiceResponse));
            StringBuilder sb = new StringBuilder();
            serializer.Serialize(new StringWriter(sb, CultureInfo.InvariantCulture), this);
            doc.LoadXml(sb.ToString());

            return doc;
        }
    }

    public class ServiceResponseMessageList : IList<string>
    {
        public override string ToString()
        {
            StringBuilder builder = new StringBuilder();
            foreach (string item in this)
            {
                builder.AppendLine(item);
            }

            return builder.ToString();
        }
    }
}

So this is simple enough ...

Wrote my tests, tested it and it all worked really nicely.

I then added a local variable to my orchestration of type ServiceResponseMessageList with the intention of doing something like shown below in a message assignment shape to build up my response message

untitled

Happiness ... or so I thought.

I hit Ctrl + B and Visual Studio cranked away for ages and eventually threw the following:

------ Build started: Project: AMH.Integration.Integer.BizTalk.Orchestrations, Configuration: Deployment .NET ------
Updating references...
Performing main compilation...
fatal error X1001: unknown system exception

 

There's the beauty in all it's glory!

fatal error X1001

Unkown system exception

Man Alive!

Have you spotted it yet? It's actually quite obvious, once you know where to look.

Got it? Given up?

Well we all know that BizTalk 2006 doesn't know about System.Collections.Generics right ...

Ok there's a massive hint Big Smile

The ServiceResponseMessageList class inherits from a List<string>. Hmmm. Doh!

Adding a variable of this type to my orchestration is what caused this subtle piece of brilliance to appear.

Look, I know it was my fault entirely for writing ridiculous code, but why oh why can we not have decent, descriptive and informative error messages ? Is this too much to ask ?

A decent descriptive error message along the lines of

"adding a variable of type X that inherits from System.Collections.Generics is not supported"

would've saved me a few hours of ripping out my non-existent hair!

Posted: Jan 29 2008, 02:50 PM by Ryan CrawCour | with 2 comment(s)
Filed under:
More Posts Next page »