Dans cet exercice nous allons apprendre à créer des orchestrations grâce à l’Orchestration Designer de BizTalk.

L’orchestration que nous allons créer va faire exactement la même chose que les filtres des Send Ports du chapitre précédent. Cependant gardez à l’esprit que les orchestrations ont bien plus de capacités, mais il faut bien commencer petit.

· Ouvrez Visual Studio

· Créer un nouveau projet « Empty Biztalk Server Project » du nom de « LabOrchestration »

· N’oubliez pas de directement changer le nom de déploiement du projet pour « LabOrchestration » et de lui assigner une clef de signature.

· Ajoutez 1 schéma au projet :
image

· Pour des raisons éducative, ne faites pas de « NombrePage » un « xs :int » mais gardez le en « xs :string »

· Pour pouvoir utiliser ce champ lors d’une orchestration, il doit recevoir une promotion particulière nommée « Distinguished Field ».

· Pour ce faire, cliquez sur le champ avec le bouton droit de la souris et sélectionnez « Promote à Show Promotion »

image 

· Dans la boîte de dialogue qui s’ouvre vous trouvez la possibilité d’ajouter le champ « NombrePage » aux « Distinguished Fields ».

· Cliquez avec le bouton droit de la souris sur votre projet, sélectionnez « Add à New Item… »

· Dans la boîte de dialogue « Add New Item », sous « Orchestration Files » choisissez « BizTalk Orchestration » et nommez la « OrchestrationTrieLivre »

· L’éditeur d’orchestration s’ouvre dans Visual Studio.

Une orchestration commence toujours par la réception d’un message, soit par suscription, soit par appel à partir d’une autre orchestration.

Dans la boîte à outil de Visual Studio vous trouverez tous les « Shapes » de base utilisés lors de la création d’une nouvelle orchestration.

Passons en revue les plus intéressants :

Shape

Explication

image

Action d’envoyer un message à travers un Send Port

image

Action de recevoir un message en provenance d’un Receive Port.

image

Représentation d’un port au niveau d’une orchestration, il s’agit ici d’un port logique qui devra être lié à un port physique lors de la configuration de l’orchestration. (Après déploiement)

image

Permet d’appliquer un map XSLT sur un message

image

Action de construire un nouveau message sur base d’un schéma

image

Permet à une orchestration d’en invoquer d’autre. Call est synchrone, Start asynchrone.

image

Permet de faire appel au Business Rule Engine.

image

Permet l’appel d’un script .Net

image

Représentation d’un « If-then-else »

image

Permet à l’orchestration de marquer un temps de pause

image

Multithreading interne aux orchestrations

image

Représentation d’un boucle « Tant que (condition) »

image

Shapes utilisée pour la gestion des erreurs

image

Met une Orchestration en attentent de l’action d’un administrateur.

image

Met fin à l’orchestration

Notre orchestration doit recevoir un Livre et l’envoyer à deux ports différents selon le nombre de Page qu’il contient.

Pour ce faire, il nous faudra donc :

Ø 3 Ports Logique (1 receive, 2 send)

Ø 1 Receive Shape

Ø 2 Send Shapes

Ø 1 Decide Shape

Ajoutez le premier Port Logique à l’orchestration en le glissant sur le « Port Surface » de gauche du designer.

image

·

· Un assistant de configuration de ce port s’ouvre. Cliquez sur Next.

· Le nom de ce port est « OrchRcvPortLivre ». Cliquez sur Next.

· L’assistant nous demande de choisir ou de crée un « Type de port » pour notre nouveau port logique. En effet, on ne peut lier un port physique à un port logique que si, et seulement si, ses caractéristiques son similaire. Le « Type de port » est le conteneur des caractéristiques de notre port logique. N’en ayant encore jamais créé auparavant dans ce projet, créons en un.

· Choisissez « OrchRcvPortLivreType » comme nom de Type

· « One-Way » et « Internal » comme caractéristiques. Cliquez sur Next.

Dans la page suivante de cet assistant, on nous propose de spécifier le sens du port et on nous offre le choix entre plusieurs possibilités quant-à son implémentation physique.

image

« Port binding » offre 3 possibilités :

Ø Spécify now: crée directement un port physique sur base des informations du port logique

Ø Spécify later : permet au développeur de lier ce port logique à un port physique plus tard, après le déploiement.

Ø Direct : Ce port logique prend sa source soit directement sur la MessageBox de BizTalk, soit d’une autre Orchestration, soit de cette orchestration elle-même. (Cette dernière option peut paraître étrange mais il ne s’agit en faite que de la possibilité de créer des Orchestration récursives)

· Choisissez « Spécify later ». Cliquez sur Next.

Cliquez sur le port nouvellement ajouté et ouvrez ses propriétés.

image 

· Remarquez que BizTalk demande que vous lui spécifier quel schéma sera utilisé pour la validation des message entrant par ce port.

· Choisissez « LabOrchestration.Live »

image 

· Ajouter un « Receive Shape » à l’Orchestration en le glissant sur la surface de dessin.

image

· Liez ce « Receive Shape » à votre port « OrchRcvPortLivre »

image 

· Ajoutez un « Decide Shape » à l’orchestration :

image

· Sélectionnez le point d’exclamation et cliquez sur « No Expression, Click… »

image

· Une boîte de script .Net s’ouvre, c’est ici que nous allons définir la condition de notre « if-then-else ».

· Remplissez-la par :
« System.Int32.Parse(Message_1.NombrePage) < 500 »
il s’agit de notre condition.

·Ajoutez un Port logique dans le « Port Surface » de gauche.

image

· Ajoutez un Port logique dans le « Port Surface » de droite.

image

· Ajouter un « Send Shape » sur chaque branche de « Decide Shape » et liez les aux Send Port que vous venez de créer.

· Au final votre orchestration devrait ressembler à ceci :

image

· Avant de pouvoir enfin déployer, il faut spécifier à cette orchestration qu’elle peut-être automatiquement instanciée à la réception d’un Livre.

· Ouvrez les propriétés du « Receive Shape » et faites-y passer la propriété « Activate » à true.

· Deployer votre projet

· Lier les ports logiques de cette orchestration avec des ports physique se fait dans BizTalk Server Administration.