コードのリゾルバー コンポーネントを利用する
動的変換エージェントの次のコード フラグメントは、既定の Just-In-Time (JIT) 解決機能を示しています。 同様のコードを使用して、独自のアプリケーションで解決を簡単に実装できます。
//XLANGs
itinerary = new Microsoft.Practices.ESB.Itinerary.SerializableItineraryWrapper();
step = new Microsoft.Practices.ESB.Itinerary.SerializableItineraryStepWrapper();
itinerary.Itinerary = Microsoft.Practices.ESB.Itinerary.ItineraryOMFactory.Create(InboundMessage);
step.ItineraryStep = itinerary.Itinerary.GetItineraryStep(InboundMessage);
resolvers = step.ItineraryStep.ResolverCollection;
resolvers.MoveNext();
resolver = resolvers.Current;
// Pass the resolver configuration to the Resolver mgr for resolution.
resolverDictionary = Microsoft.Practices.ESB.Resolver.ResolverMgr.Resolve(InboundMessage, resolver);
// Set the transform type.
transformType = resolverDictionary.Item("Resolver.TransformType");
前の一覧では、ResolverMgr クラスの Resolve メソッドは、すべての既定の解決プロパティとその解決された値を含む Dictionary オブジェクトを返します。 任意のカスタム リゾルバーは、 Dictionary オブジェクトにカスタム プロパティを追加できます。これにより、これらのプロパティを任意のカスタム スケジュール サービスで使用できるようになります。
次の表は、Microsoft BizTalk ESB Toolkit に含まれるリゾルバーによって必要に応じて設定できるプロパティを示しています。 すべてのスケジュール サービスは、返された Dictionary オブジェクトから抽出することで、これらのプロパティ値を取得できます。
[プロパティ] :
Resolver.Action | Resolver.ActionField | Resolver.DocumentSpecName |
Resolver.Success | Resolver.EndpointConfig | Resolver.DocumentSpecStrongName |
Resolver.FixJaxRpc | Resolver.InboundTransportType | Resolver.EpmRRCorrelationToken |
Resolver.InterchangeId | Resolver.IsRequestResponse | Resolver.InboundTransportLocation |
Resolver.MessageType | Resolver.MethodName | Resolver.MessageExchangePattern |
Resolver.ReceivePortName | Resolver.TransportLocation | Resolver.OutboundTransportCLSID |
Resolver.TransformType | Resolver.TargetNamespace | Resolver.ReceiveLocationName |
Resolver.TransportType | Resolver.TransportNamespace | Resolver.WindowUserField |
Resolver.CacheTimeout |
リゾルバー マネージャーが Dictionary オブジェクト インスタンスを返した後、アダプター マネージャーはメッセージの特定の BizTalk アダプター コンテキスト プロパティを設定します。 ルーティング エージェントの次のコード フラグメントは、アダプター マネージャーを使用して送信メッセージのエンドポイント プロパティを設定する方法を示しています。
//XLANGs
// Set the transport properties.
transportLocation = resolverDictionary.Item("Resolver.TransportLocation");
transportType = resolverDictionary.Item("Resolver.TransportType");
// Create the delivery message.
DeliveryMessage = InboundMessage;
// Call the adapter manager to set all necessary properties on the message.
Microsoft.Practices.ESB.Adapter.AdapterMgr.SetEndpoint(
resolverDictionary,DeliveryMessage);
// Set the delivery port address.
DeliveryPort(Microsoft.XLANGs.BaseTypes.Address) = transportLocation;
DeliveryPort(Microsoft.XLANGs.BaseTypes.TransportType) = transportType;
ルーティング エージェントの次のコード フラグメントは、カスタム パイプライン コンポーネント内からアダプター マネージャーを使用して、送信メッセージのエンドポイント プロパティを設定する方法を示しています。
// Resolve the configuration for routing.
ResolverDictionary = ResolverMgr.Resolve(info, pInMsg, pContext);
// Call the adapter manager to set all required message properties.
AdapterMgr.SetEndpoint(ResolverDictionary, pInMsg.Context);