Condividi tramite


Come utilizzare espressioni per trasformare messaggi in modo dinamico

È possibile utilizzare le espressioni per trasformare dinamicamente i messaggi nell'orchestrazione. XLANG espone un metodo di trasformazione che può essere chiamato dall'interno di una forma Assegnazione messaggi all'interno di una forma Costrutto messaggio . Si tratta dello stesso metodo chiamato quando viene usata una forma Transform , ma consente di trasformare a livello di codice i messaggi usando la mappa designata all'interno dell'orchestrazione. Questa funzione è utile se si esegue l'elaborazione dei messaggi indipendente dal tipo. Se si dispone, ad esempio, di un processo di business che deve effettuare una scelta da una serie di mappe per trasformare i messaggi in ingresso in base ai parametri forniti dai messaggi in ingresso ricevuti, è possibile ottenere questo risultato utilizzando il metodo di trasformazione nella forma Espressione, mantenendo intatto il processo di business globale.

Trasformazione di messaggi

È possibile usare il codice di esempio seguente per trasformare i messaggi a livello di codice nella forma Assegnazione messaggi:

MyMapType = typeof(MyMapName);  
transform(MyOutputMsg) = MyMapType(MyInputMsg);  

In questo esempio MyMapType viene dichiarato come variabile di tipo System.Type nell'orchestrazione. MyMapName è il nome di una mappa già creata nel progetto BizTalk. Se si desidera fare riferimento a una mappa presente in un assembly BizTalk separato, è necessario fare riferimento all'assembly in questione nel progetto BizTalk. MyInputMsg è il messaggio di origine e MyOutputMsg quello di destinazione. Se la mappa accetta più messaggi di origine, è possibile utilizzare il codice di esempio seguente per trasformare i messaggi:

MyMapType = typeof(MyMapName);  
transform(MyOutputMsg) = MyMapType(MyInputMsg1, MyInputMsg2);  

Nota

Se si dispone di più messaggi di origine, questi devono essere posizionati in ordine nell'espressione in riferimento al numero della parte del messaggio di input indicato nella mappa.

Importante

Quando si trasformano i messaggi in modo dinamico all'interno della forma Espressione, è consigliabile scrivere una cache nel codice utente per memorizzarvi le mappe compilate e quindi utilizzare la cache nella forma Espressione per recuperare le mappe prima di eseguire la trasformazione dei messaggi. Se non memorizzano le mappe nella cache, è possibile vedere crescere significativamente la memoria CLR (Common Language Runtime). Il mapping dinamico richiede che il controllo dell'accesso del codice di esecuzione .NET Runtime che ha prodotto un oggetto Evidence .NET sia inserito nell'heap degli oggetti grandi per ogni trasformazione e che questo oggetto non venga eliminato prima del completamento dell'orchestrazione. Quando vengono eseguite simultaneamente numerose trasformazioni di questo tipo può quindi capitare di vedere aumentare considerevolmente l'uso della memoria, situazione che può generare un'eccezione di memoria insufficiente.

Vedere anche

Forme di orchestrazione
Creazione di mappe mediante BizTalk Mapper