Pendant la phase d'enregistrement, VSE recherche les arguments ou les paramètres pour chaque demande. Par exemple, un appel de service Web de prévisions météorologiques peut inclure un nom de ville, ou une demande de système de réservation d'une compagnie aérienne peut inclure un numéro de vol. Si le numéro de vol est inclus dans la réponse enregistrée, il sera classé comme chaîne magique.
Par exemple, si le VSE est en mode de lecture et une demande concernant un numéro de vol jamais enregistré est reçue, le numéro de vol correct est inclus dans la réponse.
Dans l'exemple suivant, une demande a été enregistrée pour définir un état dans la conversation ; dans le cas présent, il s'agit du numéro de vol (ABC53). L'enregistreur a reconnu que la réponse contenait la même chaîne ABC53 et l'a donc convertie en chaîne magique. La chaîne magique est enregistrée dans la base de données de l'image de service comme suit : '=request_arg1;/ABC53/.

La notation {{ }} représente une syntaxe de remplacement de propriété standard de VSE. Cette notation signifie remplacer le texte entre {{ }} par la valeur d'exécution du premier argument de la demande. Si aucun premier argument n'existe, utilisez ABC53 comme valeur par défaut.
L'effet pratique réside dans le fait que si un futur client demande le vol ZZ99, le service virtualisé répondra par le numéro de vol correct : ZZ99.
Le VSE ne détecte pas uniquement les chaînes magiques par une simple paire demande-réponse. Si un argument est détecté dans une réponse ultérieure dans une conversation, VSE détermine que la chaîne est magique et stocke la valeur de l'argument dans l'état de conversation.
Par défaut, le VSE ne prend en compte aucun élément dans une balise XML de chaînes magiques. Cette exclusion inclut les balises XML, les noms d'attribut et les valeurs d'attribut. Pour modifier ce comportement, définissez lisa.magic.string.xml.tags=true dans le fichier local.properties, auquel cas les règles de chaîne magique normales s'appliqueront.
En d'autres termes, si vous disposez de la structure <foo bar="baz"/>, aucun élément ne sera pris en compte pour des chaînes magiques. En revanche, si la structure est <foo>bar</foo>, bar (mais non foo) sera pris en compte pour des chaînes magiques.
L'exemple suivant se trouve ultérieurement dans la conversation précédente. L'opération de demande est itko_seat et l'argument unique est un nom ; dans ce cas : Person1. La réponse contient le nom dans la demande, le numéro de vol préalablement défini et une date.

Il s'agit de l'exemple canonique de l'état conversationnel via un protocole sans état, dans ce cas SOAP via HTTP. Si le VSE en mode de lecture détecte une demande de définition du vol sur ZZ99, puis une demande pour le siège PersonSomeoneElse, la chaîne correcte Seated PersonSomeoneElse on seat 1 of flight ZZ99 (PersonSomeoneElse assis sur le siège 1 du vol ZZ99) sera incluse dans la réponse, même si ces détails n'ont jamais été enregistrés.
Le VSE ne considère pas le numéro du siège, 1 dans ce cas, comme une chaîne magique. Le numéro de siège n'a jamais été détecté dans la série de demandes d'origine ayant entraîné cette réponse. Il n'est également pas assez élevé pour être considéré comme une chaîne magique : il doit comprendre un minimum de trois caractères et contenir un espace facultatif à gauche, à droite ou des deux côtés de la chaîne. Vous pouvez ajuster les paramètres de longueur et d'espace dans le fichier local.properties.
La notation de propriété {{ }} est puissante et flexible et n'est pas limitée à l'utilisation de chaînes magiques. Par exemple, 1 peut être remplacée dans la réponse de l'exemple par DataSetValue et un ensemble de données peut être défini dans le modèle de service virtuel. Cet ensemble de données est utilisé pour générer la valeur de réponse d'exécution. L'ensemble de données peut être un générateur de chaînes aléatoires, un compteur, un appel à une base de données, une référence à la ligne d'une feuille de calcul Excel, ou un autre élément. }} peut exécuter le code Java arbitraire et même générer des données quotidiennes réalistes, par exemple un numéro de carte de crédit valide {{=[:Credit Card:].
Pour plus d'informations, consultez la section Utilisation de BeanShell dans DevTest de la rubrique Utilisation.
|
Copyright © 2014 CA Technologies.
Tous droits réservés.
|
|