My Tech Ed Presentations

by Matt Milner 14. May 2007 06:01
I'm excited to be presenting at the upcoming Tech Ed 2007 event in Orlando next month.  I'm doing two different sessions for the Connected Systems Division (SOA track); one on BizTalk R2 and one on Windows Workflow.  If you are heading to Tech Ed, I hope you'll join me if the topics interest you (which presumably they do or you wouldn't be reading this blog!). 
 
SOA317 - Building Connected Systems on the Microsoft .NET Framework Using the Windows Communication Foundation Adapter in BizTalk Server 2006 R2
Tuesday, 8:30 AM
Deep Dive Chalk talk to follow at 10:15 in the Blue Theater
 
SOA223 - Custom Activities with Microsoft Windows Workflow Foundation: A Developer's Primer
Monday, 4:45 PM
 

Tags:

BizTalk Server | General Musings | Windows Workflow Foundation

BizTalk, BizTalk, MVP and more BizTalk (March Open Enrollment)

by Matt Milner 7. February 2007 09:24
I've been crazy busy lately with BizTalk Server.  First, I'm happy to announce that Microsoft has recognized me as an MVP for BizTalk Server (and I got nominated for the Connected Systems group as well)!  I'm very pleased and look forward to doing as much as I can in the community this year to earn the reward. 
 
As for teaching BizTalk, I'm doing three deliveries of our Applied BizTalk Server for internal Microsoft groups, two of which are India.  So, I've just returned from Hyderabad and I'm heading back in a week and a half.  It is wreaking havoc on my internal clock, but the groups are great and I had a lot of fun teaching the class.  Awesome questions and great discussions as many of these people are working with BizTalk daily and already have some areas they wanted to understand more about. 
 
It was also fun to visit Hyderabad.  I've been to Bangalore once a year ago, so it was interesting to compare.  Microsoft has an impressive facility there and they are continuing to build.  A very exciting time for the city and the people from what I could tell.  I'm looking forward to my return trip and some more excellent Indian food (the Biryani was an especially good local specialty available right in the MS dining hall).  I also got some lessons in Cricket. I knew nothing going in, and I'm still mostly in the dark but at least not completely in the dark.  I have several pieces of information to help me know how it is different from baseball, as opposed to just knowing that it is different, which is where I started. 
 
I'm also frantically "playing" with some early bits of BizTalk R2.  I've got some upcoming talks where I am going to be showing BTS with WCF, WF and other technologies under the Connected Systems umbrella. So, I have some demos to get working so I don't get booed off the stage. :)  More on these talks in another post. 
 
Finally, I am doing an open enrollment BizTalk course here in Minneapolis in March.  If you want to get the best training on BizTalk Server (modest aren't I) then sign up on the course information page. I'd like to guarantee that the temperature won't be below 0 when you come, but who knows.  :)  Either way, it will be a fun informative week.   
 
 

Tags:

BizTalk Server | General Musings

Sample Activity - Call BizTalk Rules

by Matt Milner 2. November 2006 18:56
I have been looking at scenarios involving Workflow and BizTalk and figured a good place to start was with Rules integration.  If you have rules already defined in the BizTalk BRE, then you should be able to take advantage of them from a Workflow instead of trying to translate all of those rules into the WF rules engine. 
 
The BRE activity allows you to reuse your investment in the BizTalk BRE be configuring and executing policies from your workflow.  It contains a custom activity designer that queries information about the policy/facts and builds a dynamic set of properties so that you can configure the facts right on the activity and use databinding. 
 
This is definitely a sample but works with my simple tests.  I have not added support for data connection or data row/table facts, but it should be easy enough for someone to add those into the designer. 
 
Hopefully this will be useful for some of you.  Any feedback is welcome. 
 
Grab the code here.
 

Tags:

BizTalk Server | Windows Workflow Foundation

BizTalk Server 2004 SP 2 is released

by Matt Milner 30. October 2006 02:59
Get the details here:  http://support.microsoft.com/kb/924330/
 
My favorite fix is that the per instance pipeline configuration works as advertised/expected.  This was something a client of mine really needed as we had a pipeline template that we used with many different customers.  However, we had different configuration for each customer.  Essentially, we had file naming standards and different encryption key identifiers that we needed to configured.  Without this fix, we would have had to use a different pipeline definition for each port.  With the fix, we just updated our binding files to include the configuration of the pipeline components and we could reuse the same template over and over again.  Awesome, and of course, included in the 2006 version.

Tags:

BizTalk Server

Great series of posts on direct bound ports in BizTalk Server

by Matt Milner 24. October 2006 04:58
Kevin Lam has put together a great set of posts describing the direct binding options in BizTalk Server when using messaging shapes in Orchestration.  This is one of those powerful features of BizTalk that gets underutilized because people don't understand it, or even know about it.  It is also one of the areas where people get into real trouble because you need to understand it well in order to use it without getting yourself into trouble. 
 
 

Tags:

BizTalk Server

Info on changes in the BRE between BizTalk 2004 and 2006

by Matt Milner 24. October 2006 04:47
I found this posting the other day and was surprised to find some things in here that I didn't realize had changed.  Not that I should be surprised, it's hard to keep up with a big product like BizTalk.  :) 
 
Interesting points include a new registry entry that allows you to invoke statics without having to assert the class into the runtime; support for generics; and allowing object traversal.  Unfortunately, the latter item is only available in code, which is a huge bummer since I find this to be one of the most frustrating things with the BRE composer. 
 
There are several other interesting tidbits so be sure to check it out if you do anything with the BRE in BizTalk.
 
 

Tags:

BizTalk Server

WSE Adapters for BizTalk Server 2006

by Matt Milner 17. May 2006 02:53
The service pack for the WSE 2.0 adapter is now available and now works with 2006 or 2004. Grab it today to start adding WSE enabled web services to your integration options. 
 
Also, the fine folks at TwoConnect have created a WSE 3 adapter for BizTalk Server 2006.  Given that Microsoft will not be creating an adapter for WSE 3, this is a great option if you need to support WSE 3.0 in your BizTalk solution today. 

Tags:

BizTalk Server

Understanding the FactHandle in a FactRetriever

by Matt Milner 4. January 2006 15:23
One of the most confusing things, other than that pesky document type problem, that developers I work with run into with the business rules engine in BizTalk is understanding the role of the fact handle when implementing a fact retriever. 
 
A FactHandler, for those that are not familiar, is a class that one implements in order to supply long term facts to the Business Rule Engine in BizTalk Server.  Common items returned include database connections or tables, or xml content from a database or file.  The business rule engine calls the fact handler on each invocation of any policy it is configured on to get these facts.  It is the job of the fact retriever to make sure that it provides up to date information as appropriate and caches data or variables where necessary. 
 
It would seem, from the name of the variable, "factHandle", and the way it is passed to the single function in the IFactRetriever interface, that this object is actually the fact(s) being returned by the fact handler.  In reality, however, this object is actually the item that helps the fact retriever be smart about caching and retrieving data.  The act of getting facts into the rule engine occurs by Asserting items into the engine within the fact retriever method. 
 
The fact handle is the object that your fact retriever creates the first time it is called.  This object is then passed back in to your fact retriever each time the retriever is called so that it can use this information to determine if it needs to refetch data or just allow the business rule engine to use the data it returned last time.  A simple, yet effective example, is to return a DateTime struct on the first request and then, on subsequent calls, check it against a configured timeout to determine if you should fetch data again. 
 
The code below shows both the UpdateFacts method as well as a helper method to determine if the facts are out of date. 
 
public object UpdateFacts(RuleSetInfo ruleSetInfo, RuleEngine engine, object factsHandleIn)
{
  object factsHandleOut = null;
  if(factsHandleIn == null || FactsAreOutOfDate(factsHandleIn))
  {
    //Assert facts into the engine at this point using the "engine" parameter
 
    //If this is the first time here, or we are out of date
    //then update the facts handle to the current time
    factsHandleOut = DateTime.Now;
  }
else
{
  factsHandleOut = factsHandleIn;
}
  return factsHandleOut;
}
 
 
private bool FactsAreOutOfDate(object factsHandle)
{
  DateTime lastUpdateTime;
  if(factsHandle == null)
     return true;
  if(factsHandle is DateTime)
  {
    lastUpdateTime = (DateTime)factsHandle;
    return (TimeSpan.Compare(DateTime.Now.Subtract(lastUpdateTime),
                    TimeSpan.FromDays(1)) > 0);
  }
  else
    return true;
}
 
In the first method, we test for the fact handle to be null or to be out of date.  We do a simple check to see if the facts are more than a day old.  If they are, then we return true so that we know to reassert the facts. Back in the UpdateFacts method, we either return the original facts handle if we don't want to make any changes, or we return the current time if we are asserting new facts and want to reset our "timer". 
 
This is obviously a simple example and might be extended by using a class or struct to wrap multiple DateTime structs representing different facts. That is, we might not want to treat all of the facts with the same policy, so we can have timeouts for different facts.  A database connection we might not refresh, but a datatable we might refresh every few hours. 
 
Hopefully, this information will be helpful to people trying to work with the business rules engine in BizTalk. 
 

Tags:

BizTalk Server

Windows Workflow Foundation- What about BizTalk?

by Matt Milner 14. September 2005 12:42

So, with the big announcement about the upcoming release of Windows Workflow Foundation (WWF - gotta love that acronym; I was surprised not to see Hulk Hogan here presenting), many BizTalk developers have already started asking what this means for BizTalk Server. 

The simple answer is that BizTalk 2008 (or whatever the official name becomes, but not 2006) will host the workflow runtime for its orchestration capabilities and will extend workflow with all of the great things you've come to expect from BizTalk.  BizTalk Server will be your enterprise solution for scalable, reliable message based integration, business process management and SOA applications and services.  BizTalk will be providing MANY important features on top of the basic workflow foundation that you will want for your EAI, B2B, and SOA apps, like pipelines, adapters, management, infrastructure, security, etc.  So, before you run off and say, "With WCF ("Indigo") and WWF, I can build my own BizTalk"; think twice, or maybe five times.  The BizTalk team has years of experience and customer data points for building the manageability, scalability and reliability that an application of this type demands and they will continue to deliver a product that goes far beyond the capabilities of the WWF. 

However, the great news is, skill sets in WWF, which will likely reach more developers, will be greatly applicable to BizTalk Server 2008 development.  And, because the workflow foundation is extensible, it is likely that BizTalk developers will get their biggest wishes answered in two ways.  1) BizTalk Server 2008 will almost definitely include VS.Net debugging for orchestrations as this is already built into WWF. 2) BizTalk 2008 will easily have the ability to allow developers to create and use custom actions, and we'll have to watch for the product team to include. 

All that being said, and my passion for BizTalk being obvious, WWF is hugely powerful framework on its own and will allow developers to create amazing applications while improving their productivity.  The activity model will also help in the ever present goal of making reusable components.  So, I'm very excited about WWF, and glad we can now talk about it publicly.  Look for more information here on my blog and the Pluralsight web site for upcoming announcements related to WWF, WCF and BizTalk. 

 

Tags:

BizTalk Server | Windows Workflow Foundation

Tech Ed 2005

by Matt Milner 15. June 2005 03:38
For me, Tech Ed 2005 was a great experience.  I got to spend some great time with several of the guys from Pluralsight and enjoyed presenting both my cabana session on orchestration port bindings in BizTalk and the instructor led lab on the business rule engine. 
 
For those that asked, the lab manual and starter solutions are here.  I'll work on getting the finished solutions loaded here soon as well, but most of the work is in the business rule creation anyway and that is covered in the lab manual. 
 
Also, I have uploaded the solution I used in my cabana talk so people can take a look and get a sense of the different binding and correlation options available when using orchestration ports.  I've included information describing the solution which includes direct, dynamic, and correlated ports as well as role links.  The solutions is not a real world scenario, but shows off the different options for binding ports. 
 
Enjoy the samples and I hope they are helpful!

Tags:

BizTalk Server | General Musings