viernes, 5 de junio de 2009

Message Mapping - Parte I

Fundamentos de Mapeo
Uno de los procesos más importantes en el desarrollo de escenarios es la transformación de mensajes de una estructura hacia otra. Es aquí donde se aplica algunas reglas de negocio dependiendo del contexto , muchas de las reglas son implementadas a través de funciones predefinidas que tiene la herramientas Message Mapping.(PI)
A continuación en este punto se verá el funcionamiento de un Message Mapping.
Primeramente todo escenario de mapeo tiene una interface de entrada y una interfaz de salida y a través del uso funciones de PI o propias se realiza el mapeo propiamente dicho entre elementos o segmentos.
Por ejemplo se tiene este interfaz de entrada , algo sencillo como datos contacto ,tales como nombres, Apellidos y dirección. (etc)

Se necesitará mapear dicha interfaz a esta otra , de una estructura similar.
En este gráfico verán las estructuras tanto la de origeng(Temp_Contact) como la de destino (Temp_Destino)

Caracteristicas Principales


Ahora te presentare las reglas de negocio que se deban de tener en cuenta para el proceso de mapeo.
Nro
Elemento
Destino
Elemento
Origen

Regla de negocio


1
Cliente
Datos

Se creara un cliente por cada elemento origen (nombre) ademas solo para persona mayor o igual de 23 años


2
Client Id
RefID

Extraer los 5 primeros digitos.


3
Correlativo


Generar un numero correlativo con el formato “00000”


4
Fecha Proceso


Se pondra la fecha del dia


5
Hora Proceso


Se pondra la hora del dia.


6
Genero
Titulo

De acuerdo al titulo (Sr , Srta,Sra) se generara el codigo M,F


7
Nombre
Completo
Apellido Paterno
Apellido Materno
Primer Nombre
Segundo Nombre

Se concatenara los nombres con una separacion de una “,” entre los nombres y apellidos tener en consideraicon que no todos tienen segundo nombre.


8
FechaNacimiento
Edad

En base a la edad calcular la fecha de nacimiento


9
Direccion
Direccion

De acuerdo al segmento dirrecion


10
Direccion1
Direccion
Nro

Se concatenara a la direccion 1 de acuerdo al numero


11
Ciudad1
Ciudad

Se concatenara a la ciudad 1 de acuerdo al numero


12
Direccion1
Direccion
Nro

Igual (7)


13
Ciudad1
Ciudad

Igual (8)


14
Direccion3
Direccion
Nro

Igual (7)


15
Ciudad3
Ciudad

Igual (8)



Pues bien una vez establecidas las reglas de negocio comenzaremos con el mapeo.
Estas son las funciones propias de la herramienta




Primeramente una ves que se tiene las interfaces, simplemente se debe de identificar el elemento de destino, luego el elemento de origen y bastaría simplemente con arrastrar y soltar sobre el elemento indicado, otra manera es realizar doble click sobre el elemento de destino y doble click sobre el elemento de origen y enlazar ambos elementos. El mismo procedimiento es para las funciones y demas.


Caso resuelto



1
Datos
Nombre
Se creara un cliente por cada elemento origen (nombre) ademas solo para persona mayor o igual de 23 años.


De acuerdo a la primera regla se creará tantos clientes como segmentos (Datos) venieran y que tengan una edad mayor o igual a 23 años. Se van a utilizar dos funciones , greater (Categoría Aritmethics) de la cual recibirá dos parámetros en el cual se evaluará si el primer elemento es mayor que el segundo elemento , el resultado que emita sera de tipo bolean(trae or false) , el segundo parámetro es una constante (Categoria constant ) asi mismo se usará la función ifwithoutelse( el cual se recibirá parámetros boolean y procederá de acuerdo se indique en la parámetro de salida (el nodo Datos).
2
Client Id
RefID
Extraer los 5 primeros digitos.


La segunda regla de negocio solicta extraer los 5 primeros digitos del elemento de origen pues bien para esto se utilizar una funcion substring de la categoria(Text), para esto se tiene que configurar cuantos valores se van a extraer para esto das doble click sobre la funcion indicando la posicion de inicio y la cantidad de caracteres a extraer.




3
Correlativo

Generar un numero correlativo con el formato “00000”

Para esta regla se necesita un contador por cada elemento generado pues bien se puede utilizar uno propio (UDF) o utilizar la funcion counter , a este resultado tendremos que formatear con otra funcion el formatnumber (ambas de la categoria Arithmetic) y al igual que la funcion anterior se decide el formato que se va a tener , el contador se va a generar por cada instancia creada.



4
Fecha Proceso

Se pondra la fecha del dia
5
Hora Proceso

Se pondra la hora del dia.

Para estos casos se necesita una funcion currendate (Categoria Date) de la cual se puede escoger el formato de destino sea fecha (yyyy/MM/dd) como hora (HH:mm:ss)


6
Genero
Titulo
De acuerdo al titulo (Sr , Srta,Sra) se generara el codigo M,F

Para este caso podriamos utlizar funciones booleanas y comparar caso x caso sin embargo podemos utilizar el Fix Value ( Categoria - Conversions) en el cual se agregan a la derecha los valores de entrada y a la derecha los valores de salida.
7
Nombre
Completo
Apellido Paterno
Apellido Materno
Primer Nombre
Segundo Nombre
Se concatenara los nombres con una separacion de una “,” entre los nombres y apellidos tener en consideraicon que no todos tienen segundo nombre.
Para esta regla vamos a utilizar la función contenate (Categoria Tex) ( primeramento vamos a concatenar tanto el Apellido paterno como Apellido Materno ) al usar dicha función debemos indicarle el valor de concatenacion en este caso sera un espacio en blanco , lo mismo seria para el caso del nombre con la salvedad que no en todos los registros vendrá el segundo elemento por lo cual eviara un valor valor nulo al mapear con la funcion concat simplemente saldra error , para evitar esto se puede usar otra funcion que envie un valor por defecto este seria el MapWithDefault (Categoria Node function), al finalizar ambos resultado debemos concatenar una vez más agregando para este caso un coma (“,”) como valor de concatenación.



8
AnnioNacimiento
Edad
En base a la edad calcular la fecha de nacimiento

Para esto simplemente se restara la fecha actual con la edad para hallar la fecha de nacimiento.e utilizaran dos funciomes currentdate(formato YYYY) y sub (Substract categoria Arithmetic) del cual restara un valor de otro





9
Direccion
Direccion
De acuerdo al segmento dirrecion
10
Direccion1
Direccion
Nro
Se concatenara a la direccion 1 de acuerdo al numero
11
Ciudad1
Ciudad
Se concatenara a la ciudad 1 de acuerdo al numero
12
Direccion1
Direccion
Nro
Igual (7)
13
Ciudad1
Ciudad
Igual (8)
14
Direccion3
Direccion
Nro
Igual (7)
15
Ciudad3
Ciudad
Igual (8)


Testing
Hay dos maneras de hacer testing a modo de diseño y otra en ejecución a modo de diseño simplemente haciendo click derecho sobre la función en display queue otra manera es ir a la pestalla test.
En el cual se puede crear ejemplos de prueba para realizar el resultado final de todos los segmentos



Para el testing final aqui tengo el archivo XML (Descargar)