Compartir a través de


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

El siguiente fragmento de código 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.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

Después de que el administrador de resolución devuelva la instancia de objeto Dictionary , el administrador de adaptadores 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 siguiente fragmento de código del agente de enrutamiento muestra cómo usar el administrador de adaptadores desde 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);