Compartir a través de


Uso de los componentes de resolución en el código

El fragmento de código siguiente del agente de transformación dinámica muestra la funcionalidad de resolución Just-In-Time (JIT) predeterminada. Puede implementar fácilmente la resolución en su propia aplicación mediante código similar.

  
//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");  

En la lista anterior, el método Resolve de la clase ResolverMgr devuelve un objeto Dictionary que contiene todas las propiedades de resolución predeterminadas y sus valores resueltos. Cualquier solucionador personalizado puede agregar propiedades personalizadas al objeto Dictionary ; esto hace que esas propiedades estén disponibles para cualquier servicio de itinerario personalizado.

En la tabla siguiente se muestran las propiedades que pueden rellenar opcionalmente los solucionadores incluidos en microsoft BizTalk ESB Toolkit. Cualquier servicio de itinerarios puede recuperar estos valores de propiedad extrayendolos del objeto Dictionary devuelto.

Propiedades:

     
Resolver.Action Resolver.ActionField Resolver.DocumentSpecName
Resolver.Éxito Resolver.EndpointConfig Resolver.DocumentSpecStrongName
Resolver.FixJaxRpc Resolver.InboundTransportType Resolver.EpmRRCorrelationToken
Resolver.InterchangeId Resolver.IsRequestResponse Resolver.InboundTransportLocation
Resolver.MessageType Resolver.MethodName Patrón de Intercambio de Mensajes del Resolver
Resolver.NombreDelPuertoDeRecepción Resolver.TransportLocation Resolver.OutboundTransportCLSID
Resolver.TransformType Resolver.TargetNamespace Resolver.ReceiveLocationName
Resolver.TransportType Resolver.TransportNamespace Resolver.WindowUserField
Resolver.CacheTimeout

Después de que el administrador del solucionador devuelva la instancia del objeto Dictionary , el administrador del adaptador establece las propiedades específicas del contexto del adaptador de BizTalk del mensaje. El siguiente fragmento de código del agente de enrutamiento muestra cómo puede usar el administrador de adaptadores para establecer las propiedades del punto de conexión del mensaje saliente.

  
//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;  

El fragmento de código siguiente del agente de enrutamiento muestra cómo usar el administrador de adaptadores desde dentro de un componente de canalización personalizado para establecer las propiedades del punto de conexión de un mensaje saliente.

// 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);