2009-08-02 11 views
2

J'ai un schéma qui contient les détails d'une commande. Dans le schéma, j'ai une collection d'éléments de campagne contenant les détails de chaque élément de la commande. Le schéma est similaire à la structure suivante.Mappage BizTalk, collections imbriquées d'éléments, aide nécessaire

Order 
    SaleItems 
     SaleItem 
      OrderID 
      Price 
      Quantity 
      etc. 

J'ai une exigence que si la quantité au sein SaleItem est plus de 1, qu'un autre élément de ligne doit être créé et le prix est divisé entre les postes, donc par exemple:

Order 
    SaleItems 
     SaleItem 
      OrderID 1234 
      Price 99 
      Quantity 3 

devrait se traduire par la suite être créé à la sortie:

Order 
    SaleItems 
     SaleItem 
      OrderID 1234 
      Price 33 
      Quantity 1 
     SaleItem 
      OrderID 1234 
      Price 33 
      Quantity 1 
     SaleItem 
      OrderID 1234 
      Price 33 
      Quantity 1 

peut-il dire de quelqu'un d'entre vous gourou Biztalk l'un de la meilleure façon d'y arriver? Je ne sais pas s'il serait préférable de le faire dans une carte avec certaines des fonctions et si oui quoi mettre dans la carte, ou dans une orchestration avec une certaine coutume pour faire la logique IF Quantity> 1. Peut-être qu'il me manque quelque chose de très simple ici, mais toute aide serait grandement appréciée.

Richard

Répondre

2

Vous pouvez écrire que la transformation en XSLT personnalisé et obtenir Biztalk à l'utiliser pour faire la transformation.

0

Vous n'avez pas mentionné le scénario dans lequel cette carte sera utilisée. Si vous avez besoin de cette conversion dans une orchestration, la solution la plus simple et la plus rapide consistera à utiliser les classes .NET avec des messages sérialisés. De cette façon, vous pouvez faire ce que vous avez mentionné si qté> 1 ... type de logique. Je suis sûr que vous serez en mesure de réaliser cela dans la carte, vous aurez besoin de quelques manipulations avec le mappeur BizTalk ou un développement XSLT personnalisé. Vous devrez peut-être choisir l'itinéraire suivant si vous prévoyez d'utiliser la carte dans vos ports.

HTH