<xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:b=
"http://schemas.microsoft.com/BizTalk/2003" xmlns="http://CorrelatingUsingNetSchemas.Schemas.
MessagePropertySchema" targetNamespace
="http://CorrelatingUsingNetSchemas.Schemas.
MessagePropertySchema" xmlns:xs=http://www.w3.org/2001/XMLSchema" >
<xs:annotation>
<xs:appinfo>
<b:schemaInfo schema_type="property" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" />
</xs:appinfo>
</xs:annotation>
<xs:element name="ClientID" type="xs:string">
<xs:annotation>
<xs:appinfo>
<b:fieldInfo propertyGuid="1d3dc261-f5ef-4294-a6f3-d7c3f172aea0" propSchFieldBase="MessageDataPropertyBase" />
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:schema>
Next, we need to add to our solution a .NET Class Library Project. This project must have a reference to Biztalk Project wich contains our Property Schema and a reference to Microsoft.XLANGs.BaseTypes.dll.
Inside this Project we add a class that represents our message schema. This class must be declared as a Serialized Class:
using System;
namespace CorrelatingUsingNetSchemas.NetBasedSchema
{
///
/// My .NET Class based Schema
///
[Serializable ()]
public class SchemaClass
{
}
}
For Correlation, we need to use a promoted property. The promotion of the property must be achieved using a Property Schema, NOT by Distinguished Fields.
To achieve this requisites, first we need to declare a attribute. Type of this attribute must be the type of the Property Schema Field:
// Attribute for correlate
private string _clientID;
For declare the property, we need to declare a Class Property on our Class, that manages the attribute previously declared:
// Property for correlate
public string IDClient
{
get
{
return _clientID;
}
set
{
_clientID = value;
}
}
Now, we only need to say that our property is a Biztalk Property. The type of this property is based on our Property Schema:
// Property for correlate
[Microsoft.XLANGs.BaseTypes.Property (typeof(CorrelatingUsingNetSchemas.Schemas.ClientID))]
public string IDClient
{
get
{
return _clientID;
}
set
{
_clientID = value;
}
}