Skip to content

Latest commit

 

History

History
63 lines (55 loc) · 2.05 KB

messages-represented-as-xsd-schemas.md

File metadata and controls

63 lines (55 loc) · 2.05 KB
description title ms.custom ms.date ms.service ms.reviewer ms.suite ms.topic
Learn more about: Messages Represented as XSD Schemas
Messages Represented as XSD Schemas
06/08/2017
biztalk-server
article

Messages Represented as XSD Schemas

A template XML instance of the XSD message type is defined at design time and then stored on disk. At run time, a .NET component picks up the XML from disk and returns it as an XmlDocument. The orchestration code can assign this XmlDocument result to the message instance declared in the orchestration.

The Message Assignment shape has a single line of code:

MsgOut = CreateMsgHelper.Helper.GetXmlDocumentTemplate();  

The Helper Component that creates the XmlDocument has a single static method:

private static XmlDocument _template = null;  
private static object _sync = new object();  
private static String LOCATION = @"C:\MyTemplateLocation\MyMsgTemplate.xml";  
  
public static XmlDocument GetXmlDocumentTemplate()  
{  
   XmlDocument doc = _template;  
   if (doc == null)  
   {  
      // Load the doc template from disk.  
      doc = new XmlDocument();  
      XmlTextReader reader = new XmlTextReader(LOCATION);  
      doc.Load(reader);  
  
      // Synchronize assignment to _template.  
      lock (_sync)  
      {  
         XmlDocument doc2 = _template;  
         if (doc2 == null)  
         {  
            _template = doc;  
         }  
         else  
         {  
            // Another thread beat us to it.  
            doc = doc2;  
         }  
      }  
   }  
  
   // Need to explicitly create a clone so that we are not  
   // referencing the same object statically held by this class.  
   doc = (XmlDocument) doc.CloneNode(true);  
   return doc;  
}  

See Also

Messages Represented as .NET Classes
Messages Represented as XLANGMessage
Constructing Messages in User Code