Modification du comportement des paramètres booléens de la fonction de script
Cet article vous aide à résoudre le problème où le comportement de l’analyseur booléen dans une fonction de script a changé.
Version de produit d’origine : BizTalk Server 2013 Branch, BizTalk Server 2013 Developer, BizTalk Server 2013 Enterprise, BizTalk Server 2013 Standard
Numéro de base de connaissances d’origine : 2887564
Symptômes
Dans BizTalk Server 2013, le comportement des paramètres booléens dans les fonctions de script dans BizTalk Maps a changé.
Par exemple, considérez le code suivant dans une fonction de script :
public int AddIfTrue(int param1, int param2, bool addNum)
{
if (addNum)
return param1+param2;
else return param1;
}
Dans BizTalk Server 2013, le comportement est le suivant :
- Si
addNum
la valeur est true, false ou toute autre valeur, la sortie estparam1+param2
. - Si
addNum
elle est vide, la sortie estparam1
.
- Si
Dans les versions antérieures de BizTalk, le comportement était le suivant :
- Si
addNum
la valeur est false , la sortie estparam1
. - Si
addNum
la valeur est true, la sortie estparam1+param2
. - Si
addNum
elle est vide ou si une autre valeur échoue, la chaîne d’erreur n’a pas été reconnue comme une valeur booléenne valide.
- Si
Cause
À compter de BizTalk Server 2013, le moteur de transformation BizTalk utilise la classe .NET XSLCompiledTransform
plutôt que la classe plus ancienne XSLTransform
en raison des nombreux avantages en matière de performances.
Le comportement du paramètre booléen dans la XSLCompiledTransform
classe est différent de celui de XSLTransform
la classe. Ce nouveau comportement est documenté ici : fonction booléenne.
Résolution
Pour revenir au comportement précédent, le code de la fonction de script peut être modifié pour prendre un paramètre String au lieu de booléen, puis convertir la chaîne en booléen dans le code de fonction comme suit :
public int AddIfTrue(int param1, int param2, string addNum)
{
bool addNumBool = System.Convert.ToBoolean(addNum);
if (addNumBool)
return param1+param2;
else return param1;
}
Plus d’informations
Il est également possible de configurer le moteur de transformation BizTalk 2013 pour utiliser l’ancienne XSLTransform
classe. Cette approche n’est pas recommandée, car l’environnement perd les nombreuses améliorations de performances et d’utilisation de la mémoire fournies par la XSLCompiledTransform
classe. Cette modification peut être apportée en ajoutant DWORD UseXslTransform
la valeur 1 aux emplacements suivants :
- Pour les instances d’hôte BizTalk 64 bits :
HKLM\SOFTWARE\Microsoft\BizTalk Server\3.0\Configuration
- Pour les instances d’hôte BizTalk 32 bits et les fonctionnalités de carte de test de Visual Studio :
HKLM\SOFTWARE\Wow6432Node\Microsoft\BizTalk Server\3.0\Configuration