Utilisation d'expressions pour transformer dynamiquement les messages
Vous pouvez utiliser des expressions pour transformer dynamiquement des messages dans votre orchestration. XLANG expose une méthode de transformation qui peut être appelée à partir d’une forme d’affectation de message à l’intérieur d’une forme de message de construction . Il s’agit de la même méthode appelée lorsqu’une forme Transform est utilisée, mais qui vous permet de transformer les messages par programmation à l’aide de la carte que vous avez désignée dans l’orchestration. Cela est utile lorsque vous traitez des messages indépendamment de tout type. Par exemple, si votre processus d'entreprise doit choisir un mappage pour transformer des messages entrants en fonction des paramètres fournis par les messages entrants reçus, vous pouvez faire appel à la méthode de transformation de la forme Expression et garantir l'intégrité de votre processus d'entreprise dans son ensemble.
Transformation des messages
Vous pouvez utiliser l’exemple de code suivant pour transformer par programmation les messages dans la forme Affectation de message :
MyMapType = typeof(MyMapName);
transform(MyOutputMsg) = MyMapType(MyInputMsg);
Dans cet exemple, MyMapType est déclaré en tant que variable de type System.Type dans l’orchestration. MyMapName est le nom du mappage créé dans votre projet BizTalk. Pour référencer un mappage figurant dans un assembly BizTalk distinct, vous devrez référencer l'assembly concerné dans votre projet BizTalk. MyInputMsg est le message source et MyOutputMsg le message de destination. Si votre mappage contient plusieurs messages sources, utilisez l'exemple de code suivant pour transformer les messages :
MyMapType = typeof(MyMapName);
transform(MyOutputMsg) = MyMapType(MyInputMsg1, MyInputMsg2);
Notes
En cas de messages sources multiples, ces derniers doivent figurer dans l'expression dans l'ordre correspondant au numéro de partie de message indiqué dans le mappage.
Important
Lors de la transformation dynamique de messages dans la forme Expression, il est recommandé d'écrire un cache dans le code utilisateur pour mettre en mémoire cache les mappages compilés, puis de vous en servir dans la forme Expression pour récupérer les mappages avant la transformation des messages. Sans cette opération, la mémoire CLR (Common Language Runtime) risque d'être saturée. En effet, lors du mappage dynamique, le composant d'exécution .NET Runtime vérifie l'accès du code et place un objet .NET Evidence dans le tas des objets volumineux lors de chaque transformation. Cet objet est conservé jusqu'à la fin de l'orchestration. Lorsque ces transformations sont effectuées en grand nombre simultanément, la mémoire croît de manière conséquente jusqu'à générer une exception « mémoire insuffisante ».
Voir aussi
Formes d’orchestration
Création de mappages à l'aide du Mappeur BizTalk