by community-syndication | Oct 25, 2006 | BizTalk Community Blogs via Syndication
For some time now I’ve had a side project brewing called MapCop. This program
is a code-analysis tool for BizTalk Maps. It works against the uncompiled .BTM
files and will ensure a variety of rules are being observed … eventually.
The project has been languishing, and tonight I forced myself to “just do it” and
get MapCop to the point it would run at least 1 rule. I’ve done exactly that.
This release, which is immensely alpha type release examines the
structure of a map to ensure that every link between two functoids has its Label property
set. Nothing superbly exciting yet, but the structure exists to do alot more.
You can download the
code and files here.
The rules are written to follow a simple interface which passes in the Map object
and allows you to examine it, like so:
class LabelLinksMapRule
: IMapRule { #region IMapRule
Members public List<MapError> AnalyzeMap(Map
map) { List<MapError> errList = new List<MapError>(); foreach(MapPage
loopPage in map.Pages)
{ foreach(MapPageLink
loopLink in loopPage.Links)
{ if (loopLink.LinkFrom.DestinationType == LinkDestinationType.Functoid && loopLink.LinkTo.DestinationType == LinkDestinationType.Functoid && loopLink.Label.Trim().Length.Equals(0))
{ MapError newError = new MapError();
newError.Page = loopPage;
newError.Severity = ErrorSeverity.High;
newError.Title = "Label
all Links between functoids";
newError.Description = "All
links between functoids should have " + "their
Label property set to ensure readability of functoid " + "parameter
boxes.";
errList.Add(newError); } } } return errList;
} #endregion }
by community-syndication | Oct 25, 2006 | BizTalk Community Blogs via Syndication
I had a tremendously frustrating experience recently configuring BizTalk Server 2006, but I walked away from the situation a little wiser. We wanted BizTalk Serveron an Application Server communicating witha seperate Database Server running SQL Server 2005. I have performed multi-server environments before, but the vast majority had been installation and configuration on a single […]
by community-syndication | Oct 25, 2006 | BizTalk Community Blogs via Syndication
For those of you who would like to know what role links are and how you can use them in everyday life, I have a very simple customer request, and an even simpler prototype to demonstrate how to implement role links.
My situation is that I process EDI (HIPAA) files, and there is a standard map that translates the file to a flat file structure. However, the output needs to go into a client specific folder for the existing process to start.
Looking at the source of all truth and knowledge here:
A role is a collection of port types that either uses a service or implements a service. A role defines how parties interact with orchestrations. For example, an orchestration might use the role of Shipper. The Shipper has one or two parties associated with it. When the orchestration decides which shipping company to use to ship an item, it compares the prices of the parties in the Shipper role.
With my limited knowledge of Role Links, I thought that this might be a way to have one orchestration tied to an variable list of send ports. I figured that if I was a Shipper, I want to decide which shipping company (in my case two different folders) and then send it off to them.
After looking at this site and this site I was still very lost as to how to implement it. So I started playing around, and decided on a very simple prototype:
- Receive a file
- Interrogate the contents of the file for who the sender is
- Set the Role Link
- Send it out with some type of indicator so I know which sender it was
Pretty easy I thought, and actually implementing it was not too hard.
- I created an empty BizTalk project
- I constructed a sample file andsince I am lazy, Imade Data a distinguished field.
- I then created an orchestration that had a Port Type defined from the schema I just created.
- I then created a Recieve Port using the FilePortType.
- I then created a new Role Link Type and named it SendingRoleLinkType
- When you expand the new link type, and right click on Role_1, it asks you to Add Port Type
- So of course I do, and I choose the existing port type, in the Port Type Wizard
- I also rename the Role_1 to Sender
- I then created a role named Destination
- I am using an existing Role Link Type already defined
- It is the Consumer role.
- I created two parties and for the HIPAA accelerator, the format is EDI:\\ISASenderID:Qualifier:GSSenderID
- These parties are defined as Party1 (EDI:\\123456789:ZZ:123456789)and Party2 (EDI:\\987654321:ZZ:9876543521)
- I then created an expression after my receive shape to assign the role link, and here is the code:
Destination(Microsoft.XLANGs.BaseTypes.DestinationParty)=
new Microsoft.XLANGs.BaseTypes.Party(@”EDI:\\”+FileMsg.Data+””,”EDI”);
Notice that in the argument 1 of Party, is the Value defined in the Party Definition, and obscurely, the Organization (EDI) is the value it is looking up against. I am pulling the partner information (FileMsg.Data)out of the file (which we will see later).
- I then created a send shape and connected it to the Destination Port Link
- I deployed the project and bound the input to a default xml pipeline
- Now the part that exposes the power of Role Links I created a send port for trading partner 1 called, oddly enough, Party 1 Destination and set the path to E:\Role Link\Party1\%SourceFileName%.%MessageID%.xml, I did the same for trading partner 2, called Party 2 Destination and set the path to E:\Role Link\Party2\%SourceFileName%.%MessageID%.xml
- In the Party definition I clicked on the send port and chose the correct send port:
- Now we need to ‘bind’ the sending to the correct variable port, how you do that is if you expand the Roles, you will see the Sender Role
- Right click this and Enlist the Party, Enlist Party1 Then you come up with a Elist Party Properties dialog where you choose which of the ports defined in step 18 to use:
- After that is completed, you can enlist the orchestration and start throwing files, oh, here is a sample input to show you the data it was pulling:
Things to take away from this little tutorial:
Role Links allow you to create alookup feature within an Orchestration to determine where to send the data, and still have all of the information available to be modified through the administration console.
The example here is for one business process, in my immediate need, for eligibility files, but later we are going to need to have a different location for claim files, while the party definition cannot change, I need to create new send ports, and then add them to the list of send ports in the party definition, and then when enlisting the role, I choose the newly created port! All VERY useful.
by community-syndication | Oct 25, 2006 | BizTalk Community Blogs via Syndication
Another book update, I shipped the Performance and Scalability chapter yesterday which I’ve hammered out in the last week. It’s come together well with three main sections: Laying the foundations, Monitoring and Common Symptoms.
Laying the foundations covers all of the things you must do before embarking on any form of performance testing, the right disk arrays, the right SQL settings, ThreadPool settings, the right number of hosts, etc. These are all things that are typically either forgotten or overlooked by customers but without them your performance will never be as good as it can be and often causes you to get nowhere near your performance targets.
Monitoring covers how you should approach performance testing and some useful tools and techniques, I also cover the performance counters you need to monitor across BizTalk, SQL and IIS during performance testing, covers what they mean, how you should analyse them and covers BizTalk Throttling in great detail.
Common symptoms as the name implies covers the things that commonly cause problems during performance testing, discusses why they happen and the steps you need to take to resolve them and improve performance.
All in all its fulfilled my aim to be a great reference to use during performance testing and to understand the mechanisms BizTalk will use to protect itself from overloading. I think (given my poor memory) that I’ll end up using it once the book is published! J
If any of you have had any problems during scalability testing I’d love to hear what they were to ensure the chapter covers all bases – contact me via the blog!
On to the next chapter, only a few to go now!
by community-syndication | Oct 25, 2006 | BizTalk Community Blogs via Syndication
Typical use of Deployment functions is to move settings across machines, development to staging and finally to production.
However another huge use of this feature is the ability to import Party/EDI settings from LOB and other such applications using the ‘import’ binding file. To enable this – user will need to create ’a’ compliant XML and import it.
Just imagine how complicated initial setup would be without this functionality – 100s or 1000s of Party/EDI settings would be required to be manually created! Wonderful!!
Deployment of EDI Properties
BizTalk server 2006 R2 EDI subsystem can be configured through EDI Global properties and Party EDI properties. Deployment of these EDI properties is integrated with BizTalk Application Deployment and is available through Administration console and BTSTask command line tool.
Exporting EDI Properties:
While exporting bindings of BizTalk artifacts in an application, group or assembly (using Administration console or BTSTask); EDI Properties of all the bounded parties are exported automatically along with other party information.
While exporting bindings from an application or assembly, deployment tools provide an option of “Global Parties”. If this “Global Parties” option is selected:
%u00b7 EDI Properties of all the parties in the group is exported along with other Party properties.
%u00b7 Global EDI Properties are exported.
Activation of this feature is enabled in a few ways: while using Export Binding dialog – “Global Parties” the option is enabled as CheckBox control ’Export Global Party Information; while using Export MSI dialog the option is enabled as Global Parties checkbox; and while using BTSTask command line tool the option is available as GlobalParties switch (BTSTask ExportBindings -Destination:value ((([-ApplicationName:value] | [-AssemblyName:value]) [-GlobalParties]) | [-GroupLevel]))
Importing EDI Properties:
EDI Properties are imported to the system while importing Binding XML file or MSI package using Administration console or BTSTask command line tool. While importing EDI Properties, bear in mind the following important points:
- Existing EDI Properties will be overwritten. EDI Properties (or any bindings) for parties of the same name that already exist in the application are overwritten. If Binding File contains EDI Global Properties, existing EDI Global Properties will be overwritten.
- You must reconfigure passwords. For security reasons, when you export a binding file, BizTalk Server removes the passwords for the bindings from the file (e.g. UNB6.1 and UNB6.2 fields are removed for EDIFACT Properties, and ISA1, ISA2, ISA3 and ISA4 fields are removed from X12 Properties). After importing the bindings, you must reconfigure these sensitive fields before processing EDI messages.
Porting EDI properties from LOB systems
If you have a Partner Management system having EDI properties for many partners, you may prefer to create the binding XML file and use the Import wizards or BTSTask command line tool.
Attached is a sample binding XML file, BindingInfo.Xml, containing Party EDI Properties and Global EDI Properties. We may publish a schema of binding file in a future Beta release; however a schema may be generated using the attached XML file.
(Content provided by Manoj – thanks Manoj!)
Namaste!
Suren
by community-syndication | Oct 25, 2006 | BizTalk Community Blogs via Syndication
You might file this under the “it has always been this way and I’m late in figuring it out” category, but I just found the three letter snippet shortcut for Workflow dependency properties and events. I didn’t see this in earlier builds and was getting tired of CTRL+K -> CTRL+X then drilling into the menus to get to Worfklow Dependency property. Especially since the EventHandler snippet always came first and the way they are worded I had to either move to the cursor keys or type 25+ characters to get it to move down to the property item.
Now I just WDP + Tab + Tab and I’m happily editing a workflow dependency property.
Or, I can WDE + Tab + Tab and edit my dependency property for an event handler.
Awesome!
by community-syndication | Oct 25, 2006 | BizTalk Community Blogs via Syndication
Check out Ghenadie’s HTML Workflow Editor – http://blogs.msdn.com/ghenap/archive/2006/10/25/netfxlive-js-based-workflow-designer.aspx
Awesome.

by community-syndication | Oct 24, 2006 | BizTalk Community Blogs via Syndication
Bo Xie (IBM)wrote an interesting article about how to use gSOAP a Web Services stack optimized for C/C++. I enjoyed reading the article even though when I disagree in some topics. I don’t think that C/C++ is always the best option when comes to build Web Services with a small memory footprint. Proper memory optimization is almost always a design + algorithms decision. And nowadays Standards like MTOM and XOP can help to alleviate those challenges. Also there are another C++ Web Services platforms that perform really well Visual C++ .NET and Systinet WASP Server for C++ are just 2 alternatives to gSOAP when comes to build C++ Web Services.
by community-syndication | Oct 24, 2006 | BizTalk Community Blogs via Syndication
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.
by community-syndication | Oct 24, 2006 | BizTalk Community Blogs via Syndication
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.