Mapping in BizTalk can be quite complex. Specially when you need to map elements that have the attribute NILLABLE set to true. If you have to copy the nillable attribute BizTalk doesn’t behave as expected.
Below is a screenshot of an input document that have the nil attribute set.
Below is a screenshot of the map that I used.
For the first field I used the Mass Copy functoid and for the second field I just connected the both nodes as you would normally do. This will lead to the following results.
As you can see the NIL attribute for the field mapped with the MassCopy functoid is retained. And the NILL attribute for the field that was connected without any functoid is lost. It creates an empty element wich is something different then NIL.
In BizTalk 2006 you can just draw the line and it will map the nill if it is set. So in BizTalk 2006 there is no additional action required. But in BizTalk 2004 the Mass Copy functoid can come in handy to solve this problem for Nillable fields
Currently I am working on a projects with lot’s of schema’s. And we have had some unpredictalbe results when we tried to send messages.
We had very strange error’s like “Pipeline components not found”, Terminated send’s and stuff like that. Typically stuff you don’t expect.
After some digging around it became clear lot’s of these problems were caused by schemas with the same namespace and rootname.
You can see this very good in the HAT, but since we have a lot of schema’s i needed a copy of that data so I can do stuff with it in Excel. But unfortunalty you cannot copy stuff from the grid in the HAT.
So I got the SQL profiler up and running to see how the HAT got it’s data. And presot there is a Stored procedure you can run to get the list.
Execute this sproc in the BizTalkMGMTDB and you will get the list in the Query analyzer wich allows you to copy the data.
Ok there are some entries about this on GOOGLE but I just thought I should share this again….
You have a XSD and you have created orchestrations ‘n stuff. And finally you decide to run the “BizTalk Web Services Publishing Wizard”. It will generate a nice webservice and everything LOOKS fine.
In my current project somebody complained about the XSD-Schema contained in the WSDL beeing different from the XSD-Schema he initially got. Since I used that schema without any modifications I started to look at the WSDL more closely….
And what I saw was something I didn’t like…. The guy who was complaining was right. The “BizTalk Web Services Publishing Wizard” did publish a different schema…
Not really big differences but MinOccurs and MaxOccurs where completely mixed up. Then I went to Google and found the following.
When you run the Wizard, he generates a file that is initially not included in the project. The name of this file is : WsdlExtension.cs.
Once this file is included, you see some comments on the top. These comments describe the steps nessecary to generated a WSDL that reflects the XSD correct. Below is an example of this…..
// SOAP Extension Reflector for customizing WSDL.
// To use,
// 1. Add this file to the Web Service project.
// 2. To enable WSDL customization,
// Add the following to the Web.config file under the /configuration/system.web/webServices node.
// <add type=”XXX_Proxy.WsdlExtension, XXX_Proxy” />
// 3. Rebuild the Web Service project.
// 4. Create a xsd folder in the web service’s virtual directory.
// 5. Add .xsd files for schemas to replace in the generated WSDL.
// Schema replacement in the WSDL is done as follows:
// For each .xsd file in the xsd folder,
// if the target namespace of of .xsd file schema matches the target namespace of a schema in the WSDL,
// the schema in the WSDL is replaced with the .xsd file schema.
// 1. <soapExtensionReflectorTypes> Element
// 2. Extend the ASP.NET WebMethod Framework by Adding XML Schema Validation
Ok probably there is a simpeler way of doing this but i googled for it and couldn’t find it. So here is the story.
I needed a specific DLL that was placed in the GAC by the install of BizTalk. I needed the DLL cause I needed to ad a reference in my C# project. If anybody knows how to add a Reference to a DLL tha’s in the GAC I’ll be interested as well.
But I couldn’t find a way to do it so I needed a copy of that dll.
So you use explorer and Browse to the GAC.
But you can’t make a copy of it, You can see all the details and stuff but you cannot copy it. But if you open a Command prompt and go to the same directory stuff looks different….
And for sure when you go to the correct directory you can get the underlying DLL.
There are probably easier ways of doing this but I thought I share this method of doing it.
A lot of people know I really like dOOdads from mygeneration. It’s an easy and flexible way of generating an excellent data tier. ‘The tier is FAST and very flexible.
But now they have something new, it’s called EntitySpaces. And as with dOOdads they have a complete set of templates that goes with the new data layer.
First have a look at what it generates…..
Click on this link here : http://www.entityspaces.net/thedemo/Employees_admin.aspx
This site is completely generated, NO HAND CODING WAS DONE.
If you like that then go to their website : http://www.entityspaces.net/Portal/Default.aspx and have a look at their new product. Spend some time with it and see if you like it.
Their new data tier is even more spectacular then dOOdads, How does executing the same code against a SQL, Acces, MySql or ORACLE database sounds ?… Well Entityspaces delivers that functionality.
Some people don’t like stored procedures and think everything should be dynamic SQL. Well those people are served as well as the entityspaces provider model supports Stored procedures and dynamic SQL.
It’s quite new and features are added almost everyday. Just to tell you where they stand they are working on LINQ and Hierarchical support.
Have a look at their TEAM BLOG at regular intervals to see how they are doing…..
One of the best features of BizTalk is probably BAM. I Except Microsoft to market this in the future as a kind of Stand Alone feature. I can imagine everybody building applications would love it.
Anyway that’s just speculating …..
For anybody who want’s to know how to incorporate BAM into your own website have a look at the Excellent aricle from R. Addis… See the artickel here : http://geekswithblogs.net/synboogaloo/archive/2006/07/10/84534.aspx