Beispiele für benutzerdefinierte Konfigurationsschemas für Adapter
In diesem Abschnitt finden Sie folgende Beispiele für das Anpassen von Konfigurationsschemas für Adapter:
Beispiel 1 zeigt eine vollständige benutzerdefinierte XSD-Schemadatei, die eine Adaptereigenschaftenseite mit den Erweiterungen baf:designer und baf:description darstellt.
Beispiel 2 verwendet auch die Erweiterungen baf:designer und baf:description, um zu veranschaulich, wie ein benutzerdefiniertes Eigenschaftswertfenster für die BatchSize-Eigenschaft erstellt wird, die nur Werte zwischen 1 und 99 einschließlich akzeptiert.
Beispiel 3 zeigt, wie baf:Password auf 8 Zeichen beschränkt wird. In der Standardeinstellung sind 22 Zeichen zulässig.
Beispiel 4 zeigt, wie Musterabgleichseinschränkungen für Eigenschaftswerte implementiert werden, da XSD-Muster nicht unterstützt werden.
Beispiel 1
Dieses Beispiel beinhaltet ein vollständiges benutzerdefiniertes XSD-Schema. Es wird eine Eigenschaftenseite des Adapters mit den Erweiterungen baf:designer und baf:description dargestellt.
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:baf="BiztalkAdapterFramework.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:import namespace="BiztalkAdapterFramework.xsd" />
<xs:element name="Send">
<xs:complexType>
<xs:sequence>
<xs:element name="directory" type="xs:string" />
<xs:annotation>
<xs:appinfo>
<baf:designer>
<baf:description>Enter the directory that will receive sent files..
</baf:description>
</baf:designer>
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element name="fileName" type="" />
<xs:element name="sendBatchSize" type="xs:int" />
<xs:element name="fileCopyMode" type="CopyMode" />
<xs:element name="uri" type="xs:string" >
<xs:annotation>
<xs:appinfo>
<baf:designer>
<baf:browsable show="false" />
</baf:designer>
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="CopyMode">
<xs:restriction base="xs:string">
<xs:enumeration value="Append">
<xs:annotation>
<xs:documentation>= 0</xs:documentation>
</xs:annotation>
<xs:enumeration value="Create">
<xs:annotation>
<xs:documentation>= 1</xs:documentation>
</xs:annotation>
<xs:enumeration value="CreateNew">
<xs:annotation>
<xs:documentation>= 2</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:schema>
Beispiel 2
In diesem Beispiel werden die Erweiterungen baf:designer und baf:description verwendet, um zu veranschaulich, wie ein benutzerdefiniertes Eigenschaftswertfenster für die BatchSize-Eigenschaft erstellt wird, das nur Werte zwischen 1 und 99 einschließlich akzeptiert.
<xs:element name="BatchSize">
<xs:simpleType>
<xs:annotation>
<xs:appinfo>
<baf:designer>
<baf:displayname>Batch Size</baf:displayname>
<baf:description>Enter the batch size (1-99)</baf:description>
</baf:designer>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:int">
<xs:minInclusive value="1" />
<xs:maxInclusive value="99" />
</xs:restriction>
</xs:simpleType>
</xs:element>
Beispiel 3
In diesem Beispiel wird veranschaulicht, wie baf:Password auf acht Zeichen beschränkt wird. In der Standardeinstellung sind 22 Zeichen zulässig.
<xs:element name="AdapterPassword">
<xs:simpleType>
<xs:annotation>
<xs:appinfo>
<baf:designer>
<baf:displayname>Adapter Password</baf:displayname>
<baf:description>Enter the password (up to 8 characters)</baf:description>
<baf:editor assembly="%BTSROOT%\\Developer Tools\\Microsoft.BizTalk.Adapter.Framework.dll">Microsoft.BizTalk.Adapter.Framework.ComponentModel.PasswordUITypeEditor</baf:editor>
<baf:converter assembly="%BTSROOT%\\Developer Tools\\Microsoft.BizTalk.Adapter.Framework.dll">Microsoft.BizTalk.Adapter.Framework.ComponentModel.PasswordTypeConverter</baf:converter>
</baf:designer>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="8" />
</xs:restriction>
</xs:simpleType>
</xs:element>
Beispiel 4
In diesem Beispiel wird dargestellt, wie Einschränkungen mit Mustervergleich für Eigenschaftswerte implementiert werden, wenn XSD-Muster nicht unterstützt werden.
Felder wie ClientIdentifier sind immer eine dreistellige numerische Zeichenfolge. Der Eigenschaftswert 10 ist im Gegensatz zum Eigenschaftswert 010 nicht gültig. Das folgende Konfigurationsschemafragment definiert eine ClientIdentifier-Eigenschaft . Die ClientIdentifierConverter-Klasse , die in Ihrer Adapterassembly implementiert ist, implementiert den Musterabgleich. In diesem Fall beschränkt der benutzerdefinierte Typkonverter Werte auf eine Zeichenfolge von genau drei Zeichen (000 bis 999). Stellen Sie sicher, dass für den Knoten baf:converter im Konfigurationsschema der korrekte, vollständige Assembly- und Typname konfiguriert ist. Wenn der Benutzer versucht, einen ungültigen Wert einzugeben und auf der Eigenschaftenseite ein Überprüfungsfehler auftritt, wird eine Ausnahmemeldung angezeigt.
In den Konfigurationsschemas der Adaptereigenschaftenseite kann folgender Code verwendet werden.
<xs:element name="ClientIdentifier" type="xs:string">
<xs:annotation>
<xs:appinfo>
<baf:designer>
<baf:displayname>Adapter Client</baf:displayname>
<baf:description>Enter the Adapter Client (3 digit string)</baf:description>
<baf:converter assembly="%BTSROOT%\\Developer Tools\\Microsoft.BizTalk.TestAdapter.dll">Microsoft.BizTalk.TestAdapter.ClientIdentifierConverter</baf:converter>
</baf:designer>
</xs:appinfo>
</xs:annotation>
</xs:element>
Folgenden Code können Sie in der Adapterassembly platzieren.
using System;
using System.ComponentModel;
using System.Globalization;
using System.Text.RegularExpressions;
namespace Microsoft.BizTalk.TestAdapter
{
/// <summary>
/// Summary description for ClientIdentifierConverter.
/// </summary>
public class ClientIdentifierConverter : System.ComponentModel.StringConverter
{
private void Validate(string value)
{
Regex regex = new Regex(@"^\d{3}$"); // ^=begin, \d=digit, {3}=exactly 3 occurrences, $=end
Match match = regex.Match((string)value);
if (!match.Success)
{
throw new ApplicationException("Value does not match pattern \"" + regex.ToString() + "\".");
}
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
if (value is string)
{
this.Validate((string)value);
}
return base.ConvertFrom(context, culture, value);
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
if (typeof(string) == destinationType && value is string)
{
this.Validate((string)value);
}
return base.ConvertTo(context, culture, value, destinationType);
}
}
}
Weitere Informationen
Erweiterungen des Konfigurationsschemas für das Adapterframework