プロパティの昇格
プロパティの昇格には、スキーマ内の Field Element ノードまたは Field Attribute ノードを 識別フィールド または プロパティ フィールドに昇格させる必要があります。 また、レコード ノードに単純なコンテンツがある場合は、レコード ノードをプロパティ フィールドとして昇格することもできます ([レコード] ノードの [コンテンツ タイプ] プロパティは SimpleContent に設定されます)。 このセクションでは、ノードを 識別フィールド またはプロパティ フィールドとして昇格する手順について説明 します。
Record (単純なコンテンツ)、Field Element、または Field Attribute ノードを Property Field として昇格するには、最初にプロパティ スキーマと呼ばれる特殊な種類のスキーマを定義します。 プロパティ スキーマでは、レコード (単純なコンテンツを含む)、Field Element、または Field Attribute ノードを昇格させる、非構造化の Field 要素ノードセットを定義します。 プロパティ スキーマを作成する手順については、「How to Create Property Schemas」を参照してください。
または、 クイック プロモーション 機能を使用できます。これにより、新しい [フィールド要素]、[ フィールド属性]、または [ レコード ] (単純なコンテンツを含む) ノードを昇格するたびに、1 つのプロパティ スキーマが自動的に作成および更新されます。
Note
フィールドは、識別フィールドとプロパティフィールドの両方として昇格できます。
Note
クイック 昇格機能は、昇格されたノードの名前を持つ新しいプロパティを挿入することで、プロパティ スキーマを変更します。
重要
いったん昇格させた場合は、スキーマのフィールドの移動または名前の変更は行わないでください。 スキーマ フィールドの移動または名前変更を行うと、BizTalk エディターは、昇格させたフィールドの場所を定義する XPath を更新しません。
XSD データ型および CLR データ型
プロパティの昇格を行うときなど、場合によっては、XSD データ型が共通言語ランタイム (CLR) データ型に昇格されることがあります。 次の表は、昇格できる XSD データ型と対応する CLR データ型を示しています。
XSD データ型 | CLR データ型 |
---|---|
anyURI | 文字列 |
ブール値 | Boolean |
Byte | sbyte |
Date | DateTime |
dateTime | DateTime |
Decimal | Decimal |
Double | Double |
ENTITY | String |
Float | Single |
gDay | DateTime |
gMonth | DateTime |
gMonthDay | DateTime |
gYear | DateTime |
gYearMonth | DateTime |
id | String |
IDREF | String |
int | Int32 |
Integer | Decimal |
Language | String |
名前 | String |
NCName | String |
negativeInteger | Decimal |
NMTOKEN | String |
nonNegativeInteger | Decimal |
nonPositiveInteger | Decimal |
normalizedString | String |
NOTATION | String |
positiveInteger | Decimal |
QName | String |
Short | Int16 |
String | String |
Time | DateTime |
トークン | String |
unsignedByte | Byte |
unsignedInt | UInt32 |
unsignedShort | UInt16 |
Note
base64Binary、duration、ENTITES、hexBinary、IDREFS、long、NMTOKENS、および unsignedLong の XSD データ型は、昇格ではサポートされていません。
プロパティの昇格の制限事項
プロパティを昇格する際は、次の点を考慮してください。
昇格させたプロパティの長さは 256 文字までに制限されますが、書き込みプロパティには長さの制限がありません。
昇格させたプロパティはメッセージ ルーティングに使用されるので、比較と保存を効率よく行うためにサイズが制限されます。 書き込みプロパティにはサイズの制限がありませんが、コンテキストに大きな値を使用すると、値を処理してメッセージと共に渡す必要があるため、パフォーマンスに影響します 書き込みプロパティの例としては、識別フィールドが挙げられます。
レコード ノードを 識別フィールドとして昇格することはできません。
昇格するプロパティは非繰り返し要素または属性に限定されます。
同じルート ノードに属するフィールドを同じプロパティに昇格しないでください。 このような昇格は、コンパイル エラーまたは展開エラーになります。
メッセージ コンテキスト内では、昇格されていないために使用できないプロパティがいくつかあります。 BTS.ReceiveLocationName プロパティは、そのようなプロパティの 1 つです。 開発環境に新しいプロパティ スキーマまたは新しい BizTalk Server プロジェクトを追加できる場合は、オーケストレーション内からこのプロパティにアクセスできます。
プロパティの値は、プロパティのターゲットの名前空間およびプロパティ名によって識別されます。 次に、受信場所にアクセスするためのコード例を示します。
string receiveLocationName = pInMsg.Context.Read("ReceiveLocationName", sysNamespace);