Book Review: Microsoft BizTalk 2010 Line of Business Systems Integration
One benefit of my recent experience on a BA flight was that I got plenty of time to read through “Microsoft BizTalk 2010 Line of Business Systems Integration”. I’d promised the publisher weeks ago that I would take a look and publish some comments, but August has been such a busy month for me, and they have had to be patient. I should point out that, for the sake of transparency, that with another BizTalk book about to be released (next week) which I helped co-author, I have an urgent and obvious need to make good on this promise before I start to blog on other stuff.
BTS10LoBI is a really welcome addition to the corpus of BizTalk Server books and fills a conspicuous gap in the market. BizTalk Server offers a wide-ranging library of adapters. The ’native’ (built-in) adapters understandably get a lot of attention, as do the WCF adapters, but other adapters, such as the LoB adapters and HIS adapters, are often overlooked. I came to the book with the mistaken assumption that its chief focus was on the BizTalk Adapter Pack. This is a pack of adapters built with the WCF-based LoB SDK. In fact, the book follows a much broader path. It is a book about LoB integration in a general sense, and not about one specific suite of adapters. Indeed, it is not simply about adapters. It focuses on integration with various LoB systems, and explains how adapters and other tools are used to achieve this.
This makes for a more interesting read. For example, one, possibly unintended, consequence (given that it represents collaboration between five different authors) is that it illustrates very effectively the spectrum of approaches and techniques that end up being employed in real-world integration. In some cases developers use adapters that offer focused support for metadata harvesting and other features, exploited through tools such as the ’Consume Adapter Service’ UI. In other cases, they use native adapters with hand-crafted schemas, or they create fa%u00e7ade services. The book covers additional scenarios where third-party LoB tools and cloud services (specifically SalesForce) are used in conjunction with BizTalk Server. Coupled with lots of practical examples, the book serves to provide insight into the ’feel’ of real-world integration which is so often a messy and multi-faceted experience.
The book does not cover the BizTalk Adapter Pack comprehensively. There is no chapter on the Oracle adapters (not a significant issue because they are very similar to the SQL Server adapter) or the Siebel adapter. On the other hand, it provides two chapters on the SAP adapter looking at both IDOC and RFC/BAPI approaches. I particularly welcome the inclusion of chapters on integration with both Dynamics CRM 2011 and Dynamics AX 2009. I learned a lot about Dynamics CRM which I haven’t had occasion personally to integrate with in its latest version. The chapter on SalesForce mentions, but does not describe in any detail, the TwoConnect SalesForce adapter which we have used very effectively on previous projects. Rather, it concentrates on direct HTTP/SOAP interaction with SalesForce.com and, very usefully, advocates the use of Azure AppFabric for secure exchange of data across the internet.
The book provides two chapters on integration with SharePoint 2010. The first explores the use of the native adapter to communicate with form and document libraries, and provides illustrated examples of working with InfoPath forms. It would have been reasonable to stop there, but instead, the second chapter goes on to describe how to integrate more fulsomely with SharePoint via its web service interface, and specifically how to interact with SharePoint lists.
Increasingly, the BizTalk community is waking up to the implications of Windows Azure and AppFabric. This is an important step for developers to take. Future versions of BizTalk Server will essentially join and extend the on-premise AppFabric world. As Microsoft progressively melds their on/off premise worlds, BizTalk developers will increasingly have to grapple with integration of cloud based services, and integration of on-premise services via the cloud. The book is careful to address this emerging field through the inclusion of a chapter on integration via the Azure AppFabric service bus. As I mentioned above, this is applied specifically to SalesForce integration in a later chapter. The AppFabric Service Bus is a rapidly-evolving part of the Azure platform, and is set to introduce a raft on new features in the coming months which will greatly extend the possibilities. Eventually we will see cloud-based integration services appear in this space. So, the inclusion of this chapter points out the direction of major future evolution of Microsoft’s capabilities and offerings in the integration space.
The book is not shy about providing guidance on practical problems and potential areas of confusion that developers may encounter. The content is clearly based on real-world experience and benefits from ’war stories’. The value of such content cannot be underestimated, and can save developers hours of pain and frustration when tackling new problems. All in all, I thoroughly welcome this book. My thanks to the authors, Kent Waere, Richard Seroter, Sergei Moukhnitski, Thiago Almeida and Carl Darski.
2º Evento de Aniversário da Comunidade NetPonto (2 anos!) | 24 de Setembro de 2011 – Lisboa
For the BizTalk Portuguese Community, I will present a session about maps: “BizTalk Mapper: How maps work in BizTalk Server 2010“ in the next NetPonto community event that will occur on September 24 in Lisbon. No dia 24 de Setembro (pr%u00f3ximo S%u00e1bado) a Comunidade NetPonto comemora o seu segundo anivers%u00e1rio, e convida todos os seus […]
Blog Post by: Sandro Pereira
First-Look:Installing & Configuration of BizTalk Server 2010 on Windows 8 Developer Preview
Last week during the BUILD conference a developer preview of Both Windows 8 and Windows Server 8 was released. Once released I’ve decided to give it a go and install and perform a basic configuration (without BAM / EDI) of… Read more ›
Blog Post by: Ren%u00e9 Brauwers
First-Look:Installing & Configuration of BizTalk Server 2010 on Windows 8 Developer Preview
Last week during the BUILD conference a developer preview of Both Windows 8 and Windows Server 8 was released. Once released I’ve decided to give it a go and install and perform a basic configuration (without BAM / EDI) of BizTalk Server 2010 on Windows 8 (note: not Windows Server 8).
Below a list of issues I encountered and how to resolve these issues.
Prerequisites
Obtain the Windows 8 developer preview build
Obtain Microsoft BizTalk Server 2010
Ensure that you have a dedicated server available with SQL Server 2008R2.
Hook up your Windows 8 to machine to your Active Directory (this way you can use your AD BizTalk service accounts etc.)
Environment
Encountered Issues while installing
Well to be perfectly honest the only issue I encountered during installation of BizTalk Server 2010 was the fact that I got about 10+ windows update screens which all prompted me to go and install the .Net Framework 3.5.1 Features; well I closed all the windows except for one and let windows update continue.
Note: For the BizTalk pre-requisites I simple pointed to the cab file , which I already downloaded previously.
Encountered Issues while configuring
Configuring BizTalk Server 2010 was a bit more of a challenge although everything up to ‘Configuring the BizTalk Server Runtime’ went off without any problems.
However once it was time to configure the runtime it gave me a an exception informing me that the server could not communicate with the SSO and that it might have to do with the Distributed Transaction Coordinator; Well this was not the issue, as I had configured it on both servers (on the SQL Server box and on the BizTalk Box).
So next stop was looking into the windows services and then especially the Enterprise Single Sign On Service; well the service was up and running. So I stopped and started it and tried to configure the BizTalk Server Runtime once again; however I still got the same error.
Next stop going back to the windows services and this time
I tried an elevated account on the Enterprise Single Sign On Service; but hey you guessed it; still got the same error.
So; not giving up I went back to the Enterprise Single Sign On service and put everything back to it’s original state (that is use the dedicated sso service account). Well once I tried to start the service again it suddenly gave me an error indicating that there were some RPC issues… Hmmm, so I went and had a look at that particular service and noticed that it was up and running. Restarting it did not throw any other exceptions and that’s when I noticed that the service ‘RpcLocator Service’ was not running. Bingo! Enabling this service resolved the SSO issue and I was able to further configure BizTalk Server 2010.
Conclusion
BizTalk 2010 can be installed and configured on the Windows 8 Developer Preview Release; however before installing and configuring ensure that
You’ve configured the Distributed Transaction Coordinator on both the SQL Server Box as well as the Windows 8 Box
Ensure that the ‘RpcLocator Service’ is up and running.
Please note: So far I’ve only installed and configured BizTalk 2010 on Windows 8. I’ve not actually played around with sample applications etc.
Screenshots:
BizTalk Administrator ‘Pinned’ to Metro
BizTalk Server Configuration
BizTalk Administrator Console
Cheers
René
Broken British Airways
BizTalk Server 2010 Training in Adelaide- Week of the 24th of October
We have a 5 day BizTalk Server 2010 Developer course scheduled for the 24th – 28th of October in Adelaide.
The BizTalk Server 2010 Developer Training is an update version of the existing BizTalk training that now includes WCF send and receive adapter, a BizTalk Patterns module (correlation, sequential convoy and parallel convoy) and optional EDI components. The course is targeted at beginning BizTalk developer or developers that want to bring their skills up to 2010.
Any question or discuss your BizTalk training needs please contact me
AppFabric Walkthrough: Simple Brokered Messaging
WCF LOB Adapter, dealing with TypeMetadata and xsd:Include
Say for example if you want to expose an operation called "AddOperation" which takes 2 input parameters of type "double" and returns a "double" value.
If you are building a standard WCF services, you would have defined the interface as shown below.
[OperationContract]
double AddOperation(double a, double b)
But in order to do the same thing in WCF LOB adapter, you would have done something like this
//Param 1
OperationParameter n1 = new OperationParameter("a"
, OperationParameterDirection.In
, QualifiedType.DoubleType, false);
n1.IsOptional = false;
opMetadata.Parameters.Add(n1);
//Param 2
OperationParameter n2 = new OperationParameter("b"
, OperationParameterDirection.In
, QualifiedType.DoubleType, false);
n2.IsOptional = false;
opMetadata.Parameters.Add(n2);
//Result
opMetadata.OperationResult = new OperationResult(QualifiedType.DoubleType, false);
break;
The reason for the complexity is mainly due the dynamic nature of the WCF LOB adapters, often times you’ll be constructing the operation request and response types based on your underlying LOB applications requirement.
WCF LOB Adapter SDK comes with rich set of Metadata object model to cater for various situations. That includes
- Operation/Type Metadata Object Model is used for contract generation
- ParameterizedOperationMetadata class can be used for most common operation representations (as shown above)
- StructuredTypeMetadata can be used for most common types representations
- Metadata object model is extensible by allowing the adapter developer to provide own XML Schema representations for its members using ExportXmlSchema methods.
The last option ExportXmlSchema is the one you’ll use when the underlying LOB systems already defined XSD schemas and you just want to reuse it. Example
[OperationContract]
CustomerResponse GetCustomer(RetailCustomer customer)
The EchoAdapter sample and some of the great articles from Sonu Arora’s WCF LOB adapter series all explain about the simple scenario where a types is self contained within a single XSD file. But in reality you’ll be using multiple XSD files together either with xsd:include or xsd:import. I can see an open thread here at msdn forum without a resolution.
When you try to deal with schemas that include other schemas, you’ll typically see the following error
Error while retrieving or generating the WSDL. Adapter message: The ‘urn:schemas-XXXXX:b2b:WorkItemNo’ element is not declared.
The solution to that problem is quite straight forward. In the ExportXmlSchema method, you loop through the included schemas before doing your regular one. In the below example the code in bold is a common schema, and the code below that is what you’ll normally have.
public override void ExportXmlSchema(XmlSchemaExportContext schemaExportContext, MetadataLookup metadataLookup, TimeSpan timeout) { if (schemaExportContext == null) { throw new AdapterException("Schema export context is null."); } //Read Common Schemas Stream commonXsdFile = Assembly.GetExecutingAssembly().GetManifestResourceStream(COMMOM_METADATA_FILE_NAME); using (XmlReader reader = XmlReader.Create(commonXsdFile)) { XmlSchema schema = XmlSchema.Read(reader, null); if (!IsComplexTypeAlreadyDefined(schemaExportContext.SchemaSet, schema)) { schemaExportContext.SchemaSet.Add(schema); if (!schemaExportContext.NamespacePrefixSet.ContainsKey(this.TypeNamespace)) { schemaExportContext.NamespacePrefixSet.Add(this.TypeNamespace , getUniqueNamespacePrefix(schemaExportContext, 0)); } } } // Read in XML Schema file or create XmlSchema object yourself Stream predefinedXsdFile = Assembly.GetExecutingAssembly().GetManifestResourceStream(CONST_METADATA_FILE_NAME); using (XmlReader reader = XmlReader.Create(predefinedXsdFile)) { XmlSchema schema = XmlSchema.Read(reader, null); if (!IsComplexTypeAlreadyDefined(schemaExportContext.SchemaSet, schema)) { schemaExportContext.SchemaSet.Add(schema); if (!schemaExportContext.NamespacePrefixSet.ContainsKey(this.TypeNamespace)) { schemaExportContext.NamespacePrefixSet.Add(this.TypeNamespace , getUniqueNamespacePrefix(schemaExportContext, 0)); } } //reader.Close(); } }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Nandri
Saravana Kumar
Five BizTalk Server 2010 Books you must have
Microsoft BizTalk Server 2010 Unleashed Authors Brian Loesgen, Charles Young, Jan Eliasen, Scott Colestock, Anush Kumar and Jon Flanders Book Description Microsoft BizTalk Server 2010 Unleashed is the 100% new, 100% practical developer’s guide to Microsoft’s most powerful version of BizTalk Server. Written by an expert team of Microsoft insiders and BizTalk MVPs, it reflects […]
Blog Post by: Sandro Pereira