Création d’un service d’itinéraire personnalisé à l’aide d’une orchestration BizTalk
L’infrastructure d’itinéraire qui fait partie de Microsoft BizTalk ESB Toolkit prend en charge l’exécution d’étapes d’itinéraire à l’aide d’orchestrations. Vous pouvez implémenter un service d’itinéraire personnalisé en tant qu’orchestration Microsoft BizTalk Server en fonction de vos besoins fonctionnels, qui peuvent inclure les éléments suivants :
Appels de service multiples (comme illustré par l’exemple Installation et exécution de l’exemple Scatter-Gather)
Médiation de protocole et corrélation des messages (par exemple, HTTP-MQSeries)
Décisions de routage complexes basées sur l’enrichissement des messages à partir de sources de données externes
Logique de traitement métier
Chaque service d’itinéraire implémenté à l’aide d’une orchestration BizTalk Server est responsable des éléments suivants :
Gestion des exceptions et des erreurs à l’aide de l’infrastructure de gestion des exceptions ESB ou de gestionnaires d’exceptions personnalisés facultatifs qui prennent en charge la nouvelle soumission (itinéraires unidirectionnel)
Progression de l’itinéraire et publication de messages sortants via BizTalk Server afin que l’étape de service d’itinéraire suivante puisse s’exécuter
Pour créer un service d’itinéraire personnalisé à l’aide d’une orchestration BizTalk Server
Créez BizTalk Server projet contenant une nouvelle orchestration, par exemple MyCustomeItineraryService.odx.
Ajoutez des références aux assemblys suivants :
Itinéraire Microsoft.Practices.ESB.Itinerary
Microsoft.Practices.ESB.Itinerary.Schemas
Microsoft.Practices.ESB.ExceptionHandling
Microsoft.Practices.ESB.ExceptionHandling.Faults
Définissez un port de réception direct logique et une forme de réception activée dans l’orchestration.
Définissez un filtre d’abonnement pour activer l’orchestration à partir du contexte d’itinéraire de message afin que l’orchestration exécute l’étape MyCustomItineraryService . Le code suivant montre un exemple de filtre approprié.
(Microsoft.Practices.ESB.Itinerary.Schemas.ServiceName == "MyCustomItineraryService") && (Microsoft.Practices.ESB.Itinerary.Schemas.ServiceState == "Pending") && (Microsoft.Practices.ESB.Itinerary.Schemas.ServiceType == "Orchestration")
Définissez une orchestration de type Microsoft.Practices.ESB.Itinerary.ItineraryStep. Ajoutez une activité d’expression à l’orchestration qui remplit cette variable, comme indiqué dans le code suivant.
// Retrieve the current itinerary step. 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);
Ajoutez votre implémentation personnalisée à l’itinéraire qui crée le message sortant pour les étapes suivantes de l’itinéraire ; par exemple, OutboundMsg.
Avancez l’itinéraire à l’aide de l’activité d’expression suivante qui utilise le contexte de message du message entrant.
OutboundMessage(*) = InboundMessage(*); itinerary.Itinerary.Advance(OutboundMessage, itineraryStep.ItineraryStep);
Envoyez le message sortant avec l’itinéraire mis à jour via un port d’envoi direct pour activer le service d’itinéraire suivant.
Pour plus d’informations sur l’implémentation d’un service d’itinéraire personnalisé à l’aide de BizTalk Server orchestrations, consultez Installation et exécution de l’exemple Itinerary On-Ramp et Installation et exécution de l’exemple Scatter-Gather.