Ben Runchey’s Integration Dev Blog

a.k.a Ben’s spot to put stuff he does not want to forget

What I Learned Yesterday 9

Been a while since I have apparently “learned anything” so there is much to cover

  • MSMQ is becoming more popular as Windows gets further and further into the enterprise and while I have some experience with it, I am by no means a complete expert.  This blog here does give a ton of information about MSMQ and all it entails.  While the title of this blog is “MSMQ from the Plumber’s mate”.  I think the name of the individual is John Breakwell.  I plan on reading this blog quite a bit.
  • On the topic of BizTalk Application deployment
    • The BizTalk Explorer Object model appears to provide the best intuitive access to programmatically manipulate BizTalk artifacts.  While the WMI classes are there, they are kind of archaine to work with.  This object model is pretty sweet.  Lots of good examples found in the SDK\Samples\Admin\ExplorerOM directory.
    • Automated deployment – while I was thinking about writing a script that would be a generic build – deploy – export msi type script for Biztalk, it is working out that these things become beasts onto themselves if you try to make them too generic.  Not to mention when you are giving the script to a person who really does not know that much about BizTalk, they are NOT going to be able to follow it.   So I am thinking about putting together more of a tool kit that contains a template showing how to use the BTSDeploy tool in conjunction with the Settings File Generator from Tom Abraham to ease Biztalk deployments. 
  • XSLT – Lots of stuff learned here.  I have used this sparingly in the past, but have been into it pretty good in the last few weeks.
    • Converting uppercase to lower case and vice-versa had me stumped, but found this handy article here which solved my problem. 
    • Grouping and sorting – while lots of examples show how to do this, doing it w/ multiple fields was not as easy to find.  This article here from Tech Republic shows how to get it done.  Check out the section titled “Multiple Criteria”.
    • When accessing elements in an XSL and the source document has a namespace that you have aliased with a prefix, don’t forget to use the prefix when accessing those sub elements. 
  • SaaS hosting
    • Google just released their application Google Apps the other day.  I have to day this looks pretty sweet having a whole hosted location up in the clouds to run an application from. Did I mention it is free (up to a point)!  While I think this does alot for moving forward the concept of a platform at a great price (free), and I think it will make all of those sexy social computing concepts much easier to build, it still misses some of the needs of the business apps market.  The reason I say this is the database support is based on a “Table” approach rather than a relational database approach.  While I understand why they don’t want to host a RDBMS in the sky it is still easier to write reports off these than off xml or tables. 
    • I think SalesForce is going to get crushed by this offering by Google.  How can these guys who from what I can tell are not really having much success with their platform convince people just starting out that they are worth paying for?
    • I am thinking that the tools that MS seems to be putting together are going to provide a platform based on .NET, BizTalk Services and SharePoint Services that will be a pretty good competitor to this.  Again this is going to come down to price and if MS wants to make a go of this making it free for smaller shops is definitely going to help them out.
    • Where is Yahoo in all of this?  Oh yeah they are busy telling people how great they are.  Well guys show us!

April 8, 2008 Posted by | Uncategorized | , | 1 Comment

What I Learned Yesterday 6

  • To enable edit and contiue I had to uninstall the Windows SDK debugging tools.  Apparently this had a profiler running which did not allow for me to do the edit and continue in vs 2005.   Life is much better now.  I had actually never used this in 2005 previously.
  • BizTalk CrossReferencing API – looks like this is the way to solve those pesky file counters that some people like to use to avoid duplicate files or as a reference point. Again since I feel like all I do is regurgitate things that other people have already writted good blog posts on I will just do some simple link forwarding on this one.  The first one is by a guy named Eric (not sure about his last name) and can be found here.  While the other one is by Brian Loesgen and can be found here.   
  • Using the Looping functoid and the Table looping functoid together does not always work so well.  Please see my sample post to follow shortly on why these two don’t work together.
  • BizBert has put together a great group of articles about the BizTalk Mapper.  Lots of information about functoids, performance, etc. You can find it here.

February 28, 2008 Posted by | BizTalk, Visual Studio 2005, What I Learned Yesterday | , , | Leave a comment

Finding out the mapper can do what I want it to do

This is a follow up post to my previous post talking about how I used some XSLT with an interim schema to get some mapping done.  In my travels around the internet since then I have found a post from Jeff Lynch about how to use the mapper to map “Small Loops“.  Well this was exactly what I was trying to get done in my previous post.  Simply put the looping functoid can get done what I need.  No more interim schema!

 here is the new and improved map

Notice how I linked the PONum, ShippingDate attributes to the Looping functoid seperately from the Item element.  Once I slowed down long enough to think about what the XSLT this would generate it made sense.  Each element or attribute plugged into the left side of the Looping functoid will have it’s own loop created for it.  That is the key here.   I have also updated the source code for this guy.

 I have to say, I like this solution much better!

February 19, 2008 Posted by | BizTalk | | 1 Comment

What I learned yesterday 5

  • Free file sharing – I remember back in 2000 when everything was going to be on the internet but the bandwidth just wasn’t there to support using the internet for everything like file storage, pictures, etc.  But now that bandwidth is not a problem, I am really enjoying the free tools and applications available.  Right now I am using to store my files that I cannot easily upload for my blog or to just easily have access to things I use at various client sites, but might not have for one reason or another. 
  • More SharePoint web services fun (or rather confusion) – The FileRef field should not be encoded when you are trying to update/delete a file using the UpdateListItems web method of the List web service.  Thanks to Geoffry Samper for his post here .
  • Repeatable deployments in BizTalk.  – Looks like Brian Loesgen and Paul Petrov have each individually done a certain part of what I was planning to do with a bit of my free time using BTSTask.  Hopefully I can take these ideas and build on them for my own diabolical needs.
  • Pretty cool panoramic of the inside of an Airbus 380 cockpit
  • Rockford Lhotka has an article which I agree with here .  Actually he has many articles I agree with in his Lhotka’s Labyrinth column in Visual Studio Magazine.

January 31, 2008 Posted by | What I Learned Yesterday | , | Leave a comment

What I Learned Yesterday 4

Bit of knowledge for you terminal services users.  If a machine is just wacko and you cannot quite get things to clean up when it comes to the number of terminal server connections  use mstsc /console at the command line to run the remote desktop tool.  This switch will ignore the max number of administrative connections to a server.

A pretty cool Biztalk documentation utility for finding out how all of those really great posters map back to the help file can be found at the BizTalk server team blog here.  Check this one out!.

While the use of the WSS adapter within BizTalk makes life a lot easier, installing it in your environment when your SharePoint site is on another server is a different story.  It is not that this is hard, but it is not really clear.  So I had to put together a document help out a SharePoint admin at a client of mine so that we could get the adapter web service installed on the SharePoint server.  Find the document here

The solution I am currently working on uses a few document libraries within SharePoint to  keep track of what status a file is in.  We tried to use Views exclusively, but the problem here was getting the security right.  And since we wanted to allow for custom views still, it was too big of a pain.  So we created different document libraries and assigned rights at the document library level, it made things much easier.  The next need was to get all of the necessary Columns and views set up correctly across these three Document Libraries in an automated fashion.  So I created this little application which takes in an XML file to drive the process using the SharePoint object model.  You can download it here.  While this is not the world’s greatest utility, it works and can be used as a basis for future needs. 

Also while working with Sharepoint Object model to create a view within a Document Library that only includes the files set the “Scope” property of the SPView object you are working with to “SPViewScope.Recursive”.  While I think this is understandable, why is it that the API for doing things always seems to have a few areas where they just cannot name things the same (or even remotely the same in this case) as what you see through the UI.  In the UI this is the “Folders” area of the view

I have been doing software for a while now (last 11 years), and I am a big fan of breaking down bigger problems into its smaller core parts, solving each, and then reassembling them to create the solution.  This is for one main reason, smaller is usually simpler.  Smaller teams, smaller problem domain, etc.  While eventually we have to pay the piper and assemble our small parts into the grand solution, even this can be broken into a few core parts.  I found a good arguement for small teams here that I have to agree with.

Upgrading BizTalk 2006 to BizTalk 2006 R2 nuance:  to get the WCF adapters and EDI/AS2 options installed you have to run the installation AGAIN after upgrading.  The upgrade only upgrades your existing configuration.  The additional install will allow you to add the WCF and EDI/AS2 options to your configuration.  Again this makes sense, but is not really clear from reading the documentation.

January 25, 2008 Posted by | What I Learned Yesterday | , | Leave a comment

What I Learned Yesterday 3

  • I have never really spent any time trying to figure out the trusted vs. untrusted host concept in BizTalk.  Then finally the other day I was moving an application from my virtual machine to one that a client of mine was using.  In the process when trying to apply the binding file, my hosts were all marked as trusted, while his hosts were not marked as trusted.  Just to make sure we were not getting into something that would create a problem I did a little research and found this great article by Richard Seroter about when the “trusted” flag comes into play.  It appears it plays an important role when you want to pass through the credentials of the calling application/user to the destination system.
  • Been spending a lot of time with SharePoint recently mostly on the integration side in pushing documents to SharePoint using the BizTalk SharePoint services adapter.  But I also had a need to delete some files, create directories and sub directories within Document Libraries.  All of the things that I cannot easily do with the SharePoint Adapter.  Or if I can, it is not easily figured out. So I am using the WSS Web Servicesto do all of the things that the Adapter does allow me to do.  Doing a search on “sharepoint services web services” brings up a whole host of articles people have written in the past, so I won’t go into it.  The really interesting thing about these are how you can tell their age from the signatures.  Rather than having a good strongly-typed object to pass into a method, all of the methods take either a string, or an int, or just an xml document which must adhere to a structure. The documentation covers all of this, but it is definitely easier coding to a strongly-typed object than an xml document.  Misspellings can become a real pain.  Also, for queries CAML is used, which while understandable is really again quite archaic
  • Continuing to work with BTS Task and found out a gotcha about the “Overwrite” flag in the AddResource option.  In order for you to overwrite the files you need to have all of the hosts that are referencing them turned off, or at least not have the file loaded into memory just yet.  That killed about 30 minutes as I tried to figure out why it would not let me overwrite a file.
  • Windows Sharepoint Services Adapter for BizTalk.  Remember there are two parts to this guy.  One the adapter runtime which must be installed on the biztalk server itself.  The other is the WebService side.  If you look at the site you install the adapter into there is an application named BTSharePointAdapterWS within it which runs inside of a different app pool than the site this application is in.  The moral of the story is that any SharePoint server you want to send a message to using the adapter must have this web service installed.  I will put up a post on this a bit later describing what to do.

January 16, 2008 Posted by | What I Learned Yesterday | , , | Leave a comment

What I Learned Yesterday 1

 – Beware the BizTalk 2006 R2 Trial edition.  Ran into a situation where the trial edition was installed and had expired.  I was unaware that it was the R2 trial edition, since in the the list of adapters none of the WCF adapters where present.  So I thought I would just reinstall the Enterprise version of 2006.  This created lots of problems with WMI and ruined my Virtual Image.  Good thing there was a backup of the image.  So uninstalled it first off the image the second time around and everything looks good so far.

– Installing a custom Biztalk application.  While I really like Scott Colestock’s Deployment Framework for BizTalk, not all of the places I do work at are quick to embrace it.  I think because sometimes it is like killing a fly with a sledgehammer for smaller applications.  So as an alternative I have been spending some time with BTSTask and just creating a batch file to execute which adds my additional resources and binding files.  This in conjunction with the Deploy command in visual studio creates a rather easy way to get a BizTalk application to export a valid .msi file.

–  I was out the other day and found out about a cool appliation from the MSDN Architecture Center for reading the Architecture Journal, which can be downloaded here.  While I could go into detail here about all of the interesting and handy features it has Richard Seroter has already done this on his blog here.

– Last piece is the about book that I am almost done reading Pro WF by Bruce Bukovics is really well put together in my opinion.  It is not really about building one application so much as it is about disecting all of the pieces that make up WF.  For a BizTalker such as myself I really enjoyed it because I can see how many of the components translate directly to things I deal with every day in BizTalk orchestrations such as compensation, dehydration, tracking, etc.  Now I just have to get my “I owe you lunch application” updated to use it. 

January 2, 2008 Posted by | BizTalk, What I Learned Yesterday | , | Leave a comment