El foro de caduceus.es ha sido migrado a meditecs.com. Descubre más sobre el cambio en este post.
🇬🇧 English speaker? Go to Meditecs forums in English!
Hola, compañeros:
Como sabéis, Mirth Connect ofrece la posibilidad de implementar los transformadores haciendo uso de código JavaScript.
Una práctica habitual es aprovechar esta característica para construir la salida de un conector a través de un único transformador de tipo JavaScript, en lugar de hacerlo con muchos transformadores de tipo Message Builder.
Por ejemplo, se puede utilizar el siguiente código para mapear 3 campos de la salida del conector a partir de 3 campos de la entrada:
tmp['campo1'] = msg['campo21'].toString(); tmp['campo2'] = msg['campo22'].toString(); tmp['campo3'] = msg['campo23'].toString();
¿Cuál pensáis que es la mejor estrategia y por qué? ¿Cómo lo soléis hacer vosotros?
Un saludo.
Sinceramente, prefiero el message builder.
¿porqué? Javascript es sintético, y con una coma o un punto que pongas o dejes de poner a veces no funciona o no tiene la funcionalidad que uno quiere.
Otra cosa bien distinta es si somos muy buenos comentando...porque lo hacemos no? 😉
Yo también creo que lo mejor es usar los transformadores específicos de Mirth, no sólo por lo que comenta pablo, si no porque además no es exactamente igual hacerlo de una forma que de otra.
El transformador "message builder" de Mirth al fin y al cabo ejecuta internamente un código javascript para hacer el volcado, pero para ello utiliza un función que se llama validate(mapping, defaultValue, replacement) y se encarga de comprobar que la variable usada en el mapeo existe, y no está vacía, en caso contrario la sustituye por una cadena vacía, además ofrece la posibilidad de realizar reemplazos en las cadenas, utilidad no usada en el transformador.
Esto es lo que ejecuta Mirth en un "message builder"
tmp['parte1'] = validate(msg['parte1'], '', new Array());
Y esta es la función internamente:
function validate(mapping, defaultValue, replacement) {
var result = mapping;
if ((result == undefined) || (result.length == 0)) {
result = defaultValue;
}
if (result != undefined) {
result = new java.lang.String(result.toString());
}
if (replacement != undefined) {
for (i = 0; i < replacement.length; i++) {
var entry = replacement[i];
result = result.replaceAll(entry[0], entry[1]);
}
}
return result;
}
fuente: www.mirthcorp.com
Otra pequeña ventaja que hace que me guste más el transformador propio de Mirth en vez de javascript es la posibilidad de cambiar el orden de ejecución de los transformadores cómodamente con los botones Move Step Down y Move Step Up
Totalmente de acuerdo con Nicolas. El orden de los factores ademas SI que altera el resultado.
PD os recomiendo las ultimas versiones del mirth donde ademas tenemos la ventanita de "script" al lado del Message Builder para ver lo que hace en codigo.
