Variable Maps
Tout au long du cycle de traitement des messages, vos canaux et messages ont accès à différentes cartes de variables.
Selon leur portée, ces cartes peuvent être limitées au canal ou connecteur actuel, ou bien disponibles globalement dans l’ensemble de votre système.
Ces cartes de variables (variable maps) vous permettent de stocker une information que vous pourrez réutiliser ultérieurement (dans un canal ou connecteur en aval, ou ailleurs).
Une utilisation courante de ces variables est de faciliter le glisser-déposer des propriétés des connecteurs.
Exemple
Par exemple, la liste des mappages de destination affichera toutes les variables de carte disponibles pour les connecteurs ou canaux.
Elles servent également à d’autres fins, comme le remplissage des colonnes de métadonnées personnalisées.
Voici les différentes cartes de variables disponibles dans Mirth® Connect et Open Intégration Engine:
| Mapping | Variable Javascript | Raccourci |
|---|---|---|
| Response Map | responseMap | $r |
| Connector Map | connectorMap | $co |
| Channel Map | channelMap | $c |
| Source Map | sourceMap | $s |
| Global Channel Map | globalChannelMap | $gc |
| Global Map | globalMap | $g |
| Configuration Map | configurationMap | $cfg |
INFO
A l'écriture de cette page ces Maps sont disponibles en version 4.5.2 de Mirth Connect et Open Integration Engine
Response Map
Cette carte est isolée au message en cours de traitement dans un canal.
Contrairement à la carte de canal (Channel Map), celle-ci est spécifiquement destinée au stockage des objets de réponse.
Lorsqu’une destination termine son traitement, sa réponse est automatiquement enregistrée dans la carte de réponse (Response Map).
Les destinations suivantes ainsi que le script de post-traitement pourront accéder à ces valeurs.
INFO
Le connecteur source peut également utiliser les valeurs stockées dans la carte de réponse pour envoyer des réponses au système d’origine (paramétré dans les réglages de la source (Source Settings)).
En javascript il est possible d'écrire et de lire cette carte (Map), voir les exemple ci-dessous
var valeur = responseMap.get('cle');
var valeur = $r('cle');responseMap.put('cle', 'valeur');
$r('cle', 'valeur');Connector Map
Cette carte est isolée au message en cours ainsi qu’au connecteur actuel par lequel le message est en train de transiter.
INFO
Par exemple,
Si vous stockez une variable dans la carte du connecteur de la Destination 1, vous ne pourrez pas y accéder depuis la Destination 2.
Cette isolation permet d’éviter les conflits entre noms de variables courants et de limiter l’espace de stockage des messages.
var valeur = connectorMap.get('cle');
var valeur = $co('cle');connectorMap.put('cle', 'valeur');
$co('cle', 'valeur');Channel Map
Cette carte est isolée au message en cours de traitement dans un canal (Channel).
Si vous stockez une variable dans la carte du connecteur source, vous pourrez accéder à cette valeur dans toutes les destinations suivantes.
WARNING
Cependant, une fois le traitement du message actuel terminé et le message suivant démarré, ce nouveau message n’aura pas accès à la valeur que vous aviez stockée pour le message précédent.
La carte de canal est particulièrement utile pour partager des informations entre plusieurs destinations, ou entre le connecteur source et l’ensemble des destinations.
Par exemple, vous pourriez avoir une destination de type HTTP Sender qui effectue une requête vers un service distant, puis, dans le transformateur de réponse, stocker un en-tête HTTP spécifique de la réponse dans la carte de canal.
Tant que le connecteur de la destination suivante fait partie de la même chaîne, il pourra accéder à cette variable de la carte de canal et l’utiliser, par exemple en l’incluant dans une requête HTTP ultérieure.
var valeur = channelMap.get('cle');
var valeur = $c('cle');channelMap.put('cle', 'valeur');
$c('cle', 'valeur');Source Map
Cette carte est isolée au message en cours de traitement dans un canal.
WARNING
Contrairement à la carte de canal, celle-ci est cependant en lecture seule.
Le connecteur source ou un processus en amont peut injecter des variables dans la carte source.
Par exemple, le connecteur source File Reader injectera automatiquement la variable originalFilename.
var valeur = sourceMap.get('cle');
var valeur = $s('cle');Global Channel Map
Cette carte est spécifique à un canal donné, mais partagée entre plusieurs messages.
Cela signifie que vous pouvez y stocker une valeur lors du traitement d’un message, et celle-ci restera accessible pendant le cycle de vie du message suivant. Vous avez également la possibilité de définir des variables globales de la carte de canal dans les scripts du canal.
Astuces
Il est possible de reinitialiser Global Channel Map en éditant le Channel, puis en cochant la case Clear global channel map on deploy

sauvegarder la modification et redéployer le Channel
Cette carte est particulièrement utile pour conserver des objets étatiques et non sérialisables, comme une connexion à une base de données.
Elle est uniquement maintenue en mémoire, ce qui implique que si Mirth Connect® ou Open Integration Engine est redémarré, les entrées de cette carte ne sont pas conservées.
Attention
Il s’agit par ailleurs d’une carte concurrente (concurrent map en Java), ce qui signifie qu’il n’est pas possible d’y stocker des valeurs null.
var valeur = globalChannelMap.get('cle');
var valeur = $gc('cle');globalChannelMap.put('cle', 'valeur');
$gc('cle', 'valeur');Global Map
Cette carte est disponible à l’échelle de l’ensemble de votre serveur, pour tous les canaux et tous les messages.
Cela signifie que vous pouvez y stocker une valeur lors du traitement d’un message dans un canal, puis réutiliser cette valeur depuis un autre canal, ou encore dans un contexte différent comme une alerte.
Vous avez également la possibilité de définir des variables globales dans les scripts globaux (Deploy, Undeploy, Preprocessor, Postprocessor).

À l’instar de la carte globale de canal, cette carte est particulièrement adaptée pour conserver des objets étatiques et non sérialisables, tels qu’une connexion à une base de données.
Elle est exclusivement maintenue en mémoire, ce qui implique que si Mirth Connect® ou OIE est redémarré, les entrées de cette carte ne sont pas conservées.
Attention
Il s’agit également d’une carte concurrente (concurrent map en Java), ce qui interdit le stockage de valeurs null.
var valeur = globalMap.get('cle');
var valeur = $g('cle');globalMap.put('cle', 'valeur');
$g('cle', 'valeur');Configuration Map
Cette carte est également disponible sur l’ensemble de votre serveur, pour tous les canaux et tous les messages.
À l’instar de la carte globale, cela signifie que vous pouvez utiliser les valeurs de la carte de configuration dans n’importe quel canal, ou encore dans un autre contexte comme une alerte.
Contrairement à la carte globale, cependant, cette carte n’est modifiable qu’à partir de l’onglet « Paramètres de la carte de configuration » et reste en lecture seule depuis la perspective des canaux ou des messages.

Ses valeurs se limitent par ailleurs à des paires clé/valeur de type chaîne de caractères.
Cette carte est particulièrement utile pour définir des paramètres globaux et statiques que vous souhaitez conserver après un redémarrage de Mirth Connect.
Par exemple, vous pourriez y stocker une variable telle que PortClientTcp, puis utiliser Velocity pour faire référence à cette variable ${PortClientTcp} dans un service TCP.
Ainsi, vous pourriez exporter un canal depuis une installation de Mirth Connect® our Open Integration Engine, l’importer dans une installation totalement différente, et n’aurez rien à modifier dans les paramètres du canal,à condition que la même carte de configuration soit définie dans la nouvelle instance.
var valeur = configurationMap.get('cle');
var valeur = $cfg('cle');