Skip to content

Variable Maps

Introduction

Tout au long du cycle de traitement des messages, vos canaux et messages ont accès à différentes maps de variables.

Selon leur portée, ces Maps peuvent être limitées au channel ou connecteur actuel, ou bien disponibles globalement dans l’ensemble de votre système.

Ces variable maps vous permettent de stocker une information que vous pourrez réutiliser ultérieurement (dans un channel 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 variable maps disponibles pour les connecteurs ou channels.

Elles servent également à d’autres fins, comme le remplissage des colonnes de métadonnées personnalisées.

Variables et raccourcis

Voici les différentes cartes (maps) de variables disponibles dans Mirth® Connect et Open Intégration Engine:

MappingVariable JavascriptRaccourci
Response MapresponseMap$r
Connector MapconnectorMap$co
Channel MapchannelMap$c
Source MapsourceMap$s
Global Channel MapglobalChannelMap$gc
Global MapglobalMap$g
Configuration MapconfigurationMap$cfg

INFO

A l'écriture de cette page ces Maps sont disponibles en version 4.5.2 de Mirth Connect et Open Integration Engine

Portées des variables

Toutes ces différentes maps ont des portées différentes, ci-dessous un tableau récapitulatif de la portée d'une variable créer à un instant T.

Type / MapResponse MapConnector MapChannel MapSource MapGlobal channel MapGlobal MapConfiguration Map
Instance✅ (1)
Channels✅ (1)
Channel✅ (2)✅ (1)
Message✅ (2)✅ (1)
Next Message✅ (2)✅ (1)
Source✅ (2)✅ (1)
Dest 1✅ (2)✅ (1)
Dest X✅ (2)✅ (1)
Deploy✅ (2)✅ (1)
Undeploy✅ (2)✅ (1)
Preprocessor✅ (2)✅ (1)
Postprocessor✅ (2)✅ (1)
  • (1) le contenu n'est disponible qu'en lecture seule
  • (2) si le clear global channel map on deploy est coché, toutes les variables de la Map seront reinitilisées au prochain déploiement

Response Map

Cette map est isolée au message en cours de traitement dans un channel.

Contrairement à la 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 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 responseMap 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

js
var valeur = responseMap.get('cle');
var valeur = $r('cle');
js
responseMap.put('cle', 'valeur');
$r('cle', 'valeur');

Connector Map

Cette map 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 connector map 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.

js
var valeur = connectorMap.get('cle');
var valeur = $co('cle');
js
connectorMap.put('cle', 'valeur');
$co('cle', 'valeur');

Channel Map

Cette map est isolée au message en cours de traitement dans un channel.

Si vous stockez une variable dans la channel map 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 channel map 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 channel map.

Tant que le connecteur de la destination suivante fait partie de la même chaîne, il pourra accéder à cette variable de la channel map et l’utiliser, par exemple en l’incluant dans une requête HTTP ultérieure.

js
var valeur = channelMap.get('cle');
var valeur = $c('cle');
js
channelMap.put('cle', 'valeur');
$c('cle', 'valeur');

Source Map

Cette map est isolée au message en cours de traitement dans un channel.

WARNING

Contrairement à la channel map, celle-ci est cependant en lecture seule.

Le connecteur source ou un processus en amont peut injecter des variables dans la source map.

Par exemple, le connecteur source File Reader injectera automatiquement la variable originalFilename.

js
var valeur = sourceMap.get('cle');
var valeur = $s('cle');

Global Channel Map

Cette map est spécifique à un channel 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 channel map dans les scripts du channel.

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 map 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 map 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.

js
var valeur = globalChannelMap.get('cle');
var valeur = $gc('cle');
js
globalChannelMap.put('cle', 'valeur');
$gc('cle', 'valeur');

Global Map

Cette map 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 channel, puis réutiliser cette valeur depuis un autre channel, 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 global channel map, 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 map 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.

js
var valeur = globalMap.get('cle');
var valeur = $g('cle');
js
globalMap.put('cle', 'valeur');
$g('cle', 'valeur');

Configuration Map

Cette map est également disponible sur l’ensemble de votre serveur, pour tous les canaux et tous les messages.

À l’instar de la Global Map, cela signifie que vous pouvez utiliser les valeurs de la configuration map dans n’importe quel channel, ou encore dans un autre contexte comme une alerte.

Contrairement à la Global Map, cependant, cette map n’est modifiable qu’à partir de l’onglet « Paramètres de la configuration map » 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 map 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 channel 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 channel, à condition que la même configuration map soit définie dans la nouvelle instance.

js
var valeur = configurationMap.get('cle');
var valeur = $cfg('cle');

Mise à jour le:

Tous droits reservés. Mirounga S.A.R.L, SIRET: 798 962 718 00010, TVA: FR 27 798 962 718