Kader Yildirim
Notions avancées avec Biztalk Server 2006 R2
Utilisation des notions d'interchange, corrélation et convoi avec BizTalk Server 2006 R2
Par Kader Yildirim publié le 09/06/2008 à 08:04, lu 1134 fois, 6 pages
 4 | Implémentation des orchestrations
Le projet comporte trois orchestrations :
  1. City.odx pour gérer les messages validés par le schéma Ville.xsd.
  2. Others.odx pour les autres types de message.
  3. Main.odx pour agréger et envoyer les fragments d'un même message source vers le pipeline de sortie.
L'orchestration finale est la suivante :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/City.png
 
Les fragments sont déposés dans la message box. Ainsi il faut que l'orchestration City.odx soit capable de récupérer depuis la message box les messages validés par le schéma Ville.xsd. A cet effet l'orchestration utilise le mécanisme de direct binding.
Pour mettre en oeuvre ce principe il suffit de positionner les paramètres du port comme suit :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/InDirectPort.png
 
Bien entendu si nous ne voulons pas récupérer tous les messages il faut les filtrer :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/Filter2.png
 
Lors de l'étape de transformation il ne faut pas oublier de copier les paramètres de contexte du fragment donné en entrée vers le nouveau message. Ceci peut se faire ainsi (vous noterez l'utilisation de * pour signifier tout) :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/CopyPpties.png
 
Toutefois une copie de contexte a l'inconvénient de démoter les propriétés personnalisées promues. En effet si on regarde de plus près avec l'outil d'administration de Biztalk on se rend compte, par exemple, que MsgSetID n'est plus promue :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/NoPromo.png
 
Pour promouvoir à nouveau ces propriétés il est possible de le faire soit par programmation soit, dans notre cas, en en créant un type de corrélation :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/CorrelationDef.png
 
Ensuite il suffit d'attacher cette dernière à la sortie de l'orchestration :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/Correlation.png
 
Le résultat est bien celui attendu :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/Promo.png
 
Pour avoir plus d'informations sur la corrélation je vous recommande l'article de Roch sur le site du Biztalk User Group

Le port de sortie de l'orchestration City.odx redirige le résultat de la transformation vers la message box. Si nous n'y prenons pas garde cette dernière peut être consommée à nouveau par City.odx car elle répond aussi aux critères de filtrages attendus par cette orchestration. Ceci entrainerait une boucle infinie dans le système.
Pour éviter cette situation il faudrait un moyen de préciser que ce message est à destination de l'orchestration qui recompose le message de sortie et seulement cette dernière. Pour cela on dispose du mécanisme appelé Forward Partner Orchestration Direct Binding et qui consiste à faire en sorte que le port de sortie référence le port d'entrée de l'orchestration partenaire :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/OutDirectPort.png
 
Tous les autres de types de messages qui n'ont pas d'orchestration capable de les traiter sont consommés par Others.odx qui dans notre cas ne fait rien d'autre que de stocker l'entrée dans la message box en la redirigeant vers le pipeline d'entrée de l'orchestration de recomposition Main.odx (en suivant le mécanisme décrit pour City.odx) :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/Others.png
 
L'orchestration de recomposition Main.odx est démarrée sur un message d'entrée, puis itère autant de fois qu'il y a de fragments provenant du même message source que le fragment qui a initié l'orchestration :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/Main.png
 
Le nombre de fragments est stocké dans la propriété MsgCount et les messages provenant d'une même source sont identifiés par la propriété MsgSetID qui est utilisée dans une corrélation set :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/InitConvoy.png
 
Le phénomène qui consiste à recevoir des messages en plusieurs points d'entrées de l'orchestration se nomme convoi. Le site msdn donne une explication détaillée de ce principe :
 
/content/1b251eeb-f21b-4a80-be4e-046a360a2835/NextConvoy.png
 
PS : Le code de l'assembleur de sortie est quasiment inchangé.
 
» Démarrer une discussion