jueves, 14 de octubre de 2010

Variable Substitucion.

Muchas de las necesidades que se tiene al crear el nombre de un archivo de destino ya sea de tipo XML, texto etc, es agregar algún parámetro adicional de manera dinámica por ejemplo si tu archivo de destino se llama "Target.xml" adicionalmente a los parámetros establecidos en el cual se puede agregar el messagid, timestamp,un contador. tu archivo puede llamarse.

-"target_20101014-095549-775.xml"
-"target_AD1C95F3-CDF0-42EC-26A4-90BF5AE58D05.xml".

-"target_0001.xml".

Sin embargo como se puede agregar otros parámetros o valores , llamese Party,Service,interface etc o quizás un valor del documento. Para esto podemos utilizar la conflagración del Variable Substitucion en el cual se obtiene valores del encabezado del documento o atributos del payload de cada archivo.

Por ejemplo de acuerdo al anterior post Scenario XML to Text en el cual se tiene crea un archivo .txt desde una estructura inicial XML de una empresa llamada Xtratogen, ahora el scenario cambiara para hacerlo didactico , son muchas las empresas que enviaran dicha información llamese empresaA,empresaB,empresa C.
Así mismo ya no se desea tener en el nombre del archivo el time-stamp ,se desea ahora un valor unico como fuese el MessageId también se desea saber el tipo de clientes que se esta enviando.(Para dicho requerimento la empresa origen enviara dentro dicho valor dentro de un nuevo campo llamado typeCliente para esto agregaremos dicho campo a la estructura de origen así como la destino)
Siendo tres tipos de cliente de acuerdo a su frecuencia de compras : Frecuente,Habitual,Ocasional

fig 01 (click si desea visualizar mejor)

Dicho valor sera único en todos los clientes por lo cual se repetirá en todos los nodos.

fig 02 (click si desea visualizar mejor)

Bueno ahora haremos uso del variable substitución para esto debemos de activar el parametro en el tab "Advance" activamos el check de Enable. A continuación podras visualizar un grid con dos columnas indicando el nombre de la variable y la referencia.

El nombre de la variable es un nombre cualquiera y la referencia es el valor en el cual se hace referencia algun valor del payload siendo estos valores unicos como : sender_party, sender_service, receiver_party, receiver_service, interface_name, interface_namespace,message_id (message ID message_id_hex (msgid sin guiones) etc.
Por ejemplo si deseas el nombre de la interface se debe de poner en la columna Reference el valor message:
interface_name

fig 03 (click si desea visualizar mejor)

Agreguemos la variable enterprise y en la referencia pondremos "message:sender_party" dicha variable "enterprise lo usaremos en el file Name Schema .Esto nos indicar el valor de la empresa que envia dicha informacion.

Para obtener el valor del tipo de cliente dentro del payload de salida. tendremos que analizar la siguiente estructura del payload: seguido del nombre de los elementos y la ocurrencia separados por coma por ejemplo element1,n1,element2,n2.
element1,element2 indica el nombre de los elementos
n1,n2 indica la ocurrencia de valor de dicho elemento.
fig 04 (click si desea visualizar mejor)

Para indicar el codigo de mensaje unico (message id ) agregamos la variable msgid y la referencia es message_id_hex . De acuerdo a la estructura de destino indicada agregamos otra variable llamada tipocliente y la referencia sera payload:Cliente1,Cliente,1,TypeClient,1

fig 05 (click si desea visualizar mejor)

Finalmente en el primer tab File Name Schema para acceder a cada variable se debe indicar con el simbolo de porcentaje. %var01%.

Para nuestro ejemplo sera asi. Global_Log_%enterprise%_%tcliente%_%msgid%.txt

fig 06 (click si desea visualizar mejor)

Luego enviamos un archivo de prueba . En la figura de abajo podras ver el messageid generado dentro del payload.


fig 07 (click si desea visualizar mejor)


Finalmente el archivo se ha creado con los parametros indicado anteriormente como el party, el tipo de cliente y el message ID.

fig 08 (click si desea visualizar mejor)

Si bien el nombre del archivo es extenso, se trato de usar la mayor cantidad de variables posibles.

Hay otra manera de usar dinamicamente nombres de archivos que es el Dynamic Configuration y esto lo mostraré en otro tema
.

No hay comentarios:

Publicar un comentario