by community-syndication | Jun 5, 2007 | BizTalk Community Blogs via Syndication
If you have previously worked on integration projects between IBM mainframe / AS400 and Windows, then there is a good chance that you have worked with the Microsoft Host Integration Server. Microsoft Host Integration Server (HIS) is the product that allows bringing in host applications from IBM mainframe and AS400 data and application into a Services Oriented environment. Our very own Ricardo Mendes just had a Channel 9 Interview. Make sure to watch this great video will bring back old memories. J
If you’re at TechEd US, make sure to stop by our HIS booth (in the SOA and Web Services area). Ricardo is here for additional demos and questions.
Regards
Marjan Kalantar
by community-syndication | Jun 5, 2007 | BizTalk Community Blogs via Syndication
We will be holding the next Melbourne BizTalk User Group Meeting onTuesday 19th June 2007 at 5:30pm
The venue and sponsor for the meeting will beMicrosoft at Level 5, 4 Freshwater Place, Southbank Click here for a Map
The topics will be:
Anthony Bettanin, Business Development Manager, RuleBurst
RuleBurst are one of ten global partners in the Microsoft Business Process Alliance. RuleBurst have a world leading natural language rules technology based on authoring rules in Microsoft Word, Excel & Visio. RuleBurst rules can be executed in the RuleBurst inference engine (including SOA and .NET API integration options) or compiled to a Microsoft BizTalk policy to import into the Business Rule Composer for execution in BizTalk. In contrast to BizTalk rule authoring which is intended for technical rather than business users, RuleBurst empowers business users to directly author and maintain their own rules in the Microsoft Office tools they are already familiar with, while retaining the broader advantages of the BizTalk middleware platform for execution of their rules. If you work with BizTalk deployments where non-technical users would like more control over their rules, this demonstration will be of interest to you. For more background information, see the attached one page brochure or Richard Seroter”s blog for a Microsoft perspective on RuleBurst rule authoring.
Bill Chesnut, Senior Consultant, Readify
Changes to the Business Rules Engine in BizTalk 2006.
Please note we are starting the meeting at 5:30pm and there will bepizza anddrinks supplied
Please rsvp for [email protected] if you plan on attending the meeting.
by community-syndication | Jun 5, 2007 | BizTalk Community Blogs via Syndication
You have to watch this video. I can’t desribe it in words.
http://www.popularmechanics.com/technology/industry/4217348.html
by community-syndication | Jun 4, 2007 | BizTalk Community Blogs via Syndication
So today I was lucky enough to be invited on stage during the TechEd 2007 Keynote.
I got the job of carrying a box that was tagged with an RFID tag. You can watch
the video here .
I appear at 1:09:11 (not that you shouldn’t watch the whole thing ;-))
Here I am carrying a box that has an RFID label on it. Mike Woods is about to
scan the RFID tage with an RFID reader. He annouced me as being “Jon Flanders
from Jon Flanders’ delivery service” 🙂
So why am I up on stage holding a box? Have I given up dev for package delivery?
The reason I was lucky enough to be on stage with Mike Woods and Bob Muglia – is that
I wrote the RFID event handler code that was used in the software for the keynote.
It took the tag read from the device – and then enriched the data with GPS data from
a GPS deviced that was attached to the same computer that the RFID reader is attached
to. Pretty cool stuff.
You can read more about Microsoft BizTalk RFID here.
Many thanks to Cathexis – who provided the
RFID reader device

by community-syndication | Jun 4, 2007 | BizTalk Community Blogs via Syndication
The new Rule Manager (1.5.0.x) is released! There are many new features and enhancements. Here are some of the highlights:
- Rule Validation; in the interactive rule map you can let the rules engine resolve any term.
This starts an animated goal seeking process. The default waiting time is 0.5 sec. You can change this in the debug options.
- Panning and zooming of the interactive rule map.
- Creation of business rules and business terms are completely accessible during the trial period.
- Export your rule policy to Windows Workflow Foundation, and you see the rules executing on top of Microsoft’s Forward chaining rules engine. By default the rule tracing is on. You can see the rule execution in the output console of Visual Studio.
Existing users can follow the internal update wizard (except that you need the .NET Framework 3.0)
New users can start the installation wizard that is available here.
by community-syndication | Jun 4, 2007 | BizTalk Community Blogs via Syndication
There is no necessity to explain the importance of caching in any server based developments like BizTalk, ASP .NET etc. You need to plan early in your development cycle to cache resources in order to make most out of your limited server resources.
In BizTalk applications, it’s quite common to lookup a data store to pickup a value, at different stages like custom Adapters, Pipelines, Orchestration, etc. The data store could be a custom SQL database/table, a XML File, Active directory etc etc. Whatever the data store is, if you are doing the lookup for every message you process without any caching, its going to be an expensive and useless operation.
Due to the nature of BizTalk architecture, its very easy to implement a caching logic just with a static class and a static method as shown below:
public static class CacheHelper
{
private static Dictionary<string, string> _authorIds = null;
public static string GetAuthorName(string authorId)
{
if (_authorIds == null)
{
Debug.WriteLine(“Cache is empty. So populating the cache…”);
_authorIds = new Dictionary<string, string>();
lock (_authorIds)
{
_authorIds.Add(“2FC0CF1D-E107”, “Matthew Johnstone”);
_authorIds.Add(“71F5C860-80FA”, “Carl Reynolds”);
_authorIds.Add(“158FF294-1A89”, “Robert Perkins”);
_authorIds.Add(“A71AE681-9C39”, “Michael Killey”);
_authorIds.Add(“58794661-A9A3”, “Saravana Kumar”);
}
}
else
{
Debug.WriteLine(“Cache list is pre-populated. Value is going to be taken from the cache.”);
}
string authName = _authorIds[authorId];
if (authName != string.Empty)
return authName;
else
throw new Exception(“Author cannot be found with id :” + authorId);
}
}
In .NET static variables are maintained per Common Language Runtime (CLR) “AppDomain”. We can just exploit this behavior of .NET for our caching needs. In BizTalk world by default there is only one “AppDomain” per BizTalk host. So, all your custom BizTalk applications will be running under this default host (AppDomain) and they all share the static members. This means any subsequent executions will make use of the cached values.
In the above code snippet, I just added few Name-Value pair items to “authorsIds” collection, in real world scenarios we might need to populate them from a data store like SQL database. If we are doing that database lookup for every message, then its going to be unnecessary roundtrip’s to the database and wastage of server resource.
This utility class can now be used in any of your custom BizTalk solution like Adapters, Pipelines, Orchestrations etc. The following Orchestration shows its usage.
The message assignment shape got the following lines of code.
MSG_AUTHOR_OUT = MSG_AUTHOR_IN;
MSG_AUTHOR_OUT.Name = Utility.CacheHelper.GetAuthorName(MSG_AUTHOR_IN.Id);
When I Build, Deploy and run the sample, for the first message the DebugView showed the following output:
For subsequent messages (I posted 4), DebugView showed the following output:
You can make sure the cache is repopulating by restarting the BizTalk host instance (NT Service).
NOTE: If you are using isolated adapters like HTTP/SOAP the data will be cached under the IIS worker process, so to reset the cache you need to reset IIS.
This technique is simple to implement and easy to use. If you want more advanced caching like cache expiration, dependency etc then you can consider using Enterprise Library caching application block.
Download the full sample here.
Nandri!
Saravana
by Richard | Jun 4, 2007 | BizTalk Community Blogs via Syndication
Update 2007-07-05: The example project used in the post can be downloaded from here.
The operations dll (Micrsoft.BizTalk.Operations) is one of the new bits in BizTalk 2006 that at least I haven’t heard much about (most of you probably find in the C:Program FilesMicrosoft BizTalk Server 2006 folder). However it’s a library with a lot of useful functionality.
In this post I’ll focus on how it’s possible to use the library to get hold of message parts and message context from the BizTalk tracking database (usually called the BizTalkDTADb). If you’re unfamiliar with the architecture of the tracking in BizTalk this article is a good place to start.
What used to be the problem?
In BizTalk 2004 one soon got into problems when trying to read the message parts and the message context from the tracking database. The problem is that the the Xml is compressed (something that makes totally sence – Xml is a perfect candidate for compression). To my knowledge no one has found a good way to decompress the message context. There’s however a way to decompress the message parts (and only the parts) that Rob posted on in the BizTalk newsgroup. But this method doesn’t work on the compressed context of the same message that the parts belong to! One could assume that the same method could be used for both compression and decompression but I haven’t got it to work for the context of the message (read about my frustration here)
What’s wrong with WMI and MSBTS_TrackedMessageInstance?
So the option that was left to us before BizTalk 2006 for reading all the message parts as well as the message context was to use the MSBTS_TrackedMessageInstance WMI scrtipt and save everything down to file. The problem with this approach is that it’s slow and ugly! Say that we like to save a couple of thousand messages from the tracking database. When forced to save the messages to file we’ll end up with a slow and ugly solution where writing to file takes ages, then we have to read the content of the different files before cleaning up and deleting the files.
Micrsoft.BizTalk.Operations to the rescue
A quick view in Lutz Roeder’s Reflector shows us a couple of interesting methods in the operations dll. However I’ll only use the GetTrackedMessage method in this post.
I’ve written a tiny test application that uses the library to read the body part of the message (the meat of the message) and a couple of properties I’m interested in from the context of the message. It looks something like this. If your interested drop me an email and I’ll send it. The first screenshot below shows an example of reading the InterchangeID from the context of a tracked message.
This screenshot shows an example of reading the full body of a tracked message from the tracking database. Try doing this with less then 10 lines of code using the MSBTS_TrackedMessageInstance script!
There is really nothing to the application, reading a tracked message using the MessageID will return an object implementing IBaseMessage and we basically read the BodyPart property of – it really couldn’t be any easier.
<div><span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">string</span><span style="color: #000000; "> GetMessageBodyByMessageID(</span><span style="color: #0000FF; ">string</span><span style="color: #000000; "> dbServer, </span><span style="color: #0000FF; ">string</span><span style="color: #000000; "> dbName, Guid messageID)
{
TrackingDatabase dta </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> TrackingDatabase(dbServer, dbName);
BizTalkOperations operations </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> BizTalkOperations();
IBaseMessage message </span><span style="color: #000000; ">=</span><span style="color: #000000; "> operations.GetTrackedMessage(messageID, dta);
</span><span style="color: #0000FF; ">string</span><span style="color: #000000; "> body </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.Empty;
</span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">(StreamReader streamReader </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> StreamReader(message.BodyPart.Data))
{
body </span><span style="color: #000000; ">=</span><span style="color: #000000; "> streamReader.ReadToEnd();
}
</span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> body;
} </span></div>
I’d be very interested in how people use the operations library both when it comes to read and use tracked messages, but also in other ways! Use the comments to tell me and other readers how you use it your solutions!
by community-syndication | Jun 4, 2007 | BizTalk Community Blogs via Syndication
The operations dll (Micrsoft.BizTalk.Operations) is one of the new bits in BizTalk 2006 that at least I haven’t heard much about (most of you probably find in the C:\Program Files\Microsoft BizTalk Server 2006 folder). However it’s a library with a lot of useful functionality.
In this post I’ll focus on how it’s possible to use the library to get hold of […]
by community-syndication | Jun 4, 2007 | BizTalk Community Blogs via Syndication
Hi All,
For those of you, who are missing TechEd 2007 this year,need not worry now, as you would be able to view some of the TechEd sessions andlots of information on the same from
www.virtualteched.com
Alternatively, you can also get all the latest news on TechEd 2007 event at www.techedbloggers.com
Enjoy!
by community-syndication | Jun 4, 2007 | BizTalk Community Blogs via Syndication
Microsoft Patterns and Practices Group havereleased Guidance documentationfor ESB (Enterprise Service Bus) and they are available at :
http://www.codeplex.com/esb
Enjoy