Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduccin:
A partir de la documentacin provista por el banco y Technisys se crea un archivo csv donde se codifican los mapeos entre los campos del modelo de datos de Technisys y los campos de CICS del banco. El generador toma esta informacin y genera las transformaciones Channel2Backend.xsl y Backend2Channel.xsl. Si bien el generador es una herramienta muy til como kick off, a veces es necesario modificar los archivos generados, aunque se est trabajando para que no sea necesario.
Workflow
Los canales llaman a CMM a travs del TMF. A CMM le llega un xml con los datos del servicio a ejecutar. Una vez que se determina que se debe invocar un servicio CICS, el Workflow llama al QueryServiceFlow. El QueryServiceFlow, dependiendo del serviceId del mensaje ejecuta la transformacin Channel2Backend.xsl y
Workflow (cont.)
La traza obtenida es enviada a CICS donde es procesada y devuelve otra traza de respuesta. El QueryServiceFlow obtiene la traza de respuesta y le aplica la transformacin Backend2Channel.xsl para devolver un xml a TMF y este luego se lo enviar al canal que inici la transaccin.
WS-OPCION
X(0001)
WS-NRT-CLI
X(0009)
Rut Cliente
WS-DRT-CLI
X(0001)
DV Rut Cliente
WS-COD-BCO
X(0003)
Cdigo Banco
WS-NUM-SEQ
X(0010)
Nmero Secuencia
......
String_s
String_s
String_s
CICS/PLMC1075/WSNUM-SEQ
1,customerIdentification
,WS-DRT-CLI,X(0001),identificationComplement,,,,WS-DRT-CLI ,WS-NRT-CLI,X(0009),identificationNumber,,,,WS-NRT-CLI ,customerIdentification 1,frequentlyUsedAccount:1.0:frequentlyUsedAccount:product.financials
,WS-NUM-SEQ,9(010),frequentlyUsedAccountId,,,,WS-NUM-SEQ
,frequentlyUsedAccount:1.0:frequentlyUsedAccount:product.financials ,WS-COD-CNL,X(0003),channelId,,,"getChannelIdFromHeader2CICS{}",WS-COD-CNL X,Empiezo a escribir el mensaje ,WS-OPCION,X(0001),WS-OPCION,,,"'E'",
,WS-NRT-CLI,X(0009),WS-NRT-CLI,,,"$WS-NRT-CLI",
,WS-DRT-CLI,X(0001),WS-DRT-CLI,,,"$WS-DRT-CLI", ,WS-COD-BCO,X(0003),WS-COD-BCO,X,,, ,WS-NUM-SEQ-N,9(0010),WS-NUM-SEQ-N,,,"$WS-NUM-SEQ", ,WS-COD-PRD-DES,X(0005),WS-COD-PRD-DES,X,,,
,WS-SAL-COD-RTN,X(03),WS-SAL-COD-RTN,,,,WS-SAL-COD-RTN
,WS-SAL-GLS-RTN,X(30),WS-SAL-GLS-RTN,,,,WS-SAL-GLS-RTN X,Comienzo a escribir el body 1,generic
,WS-SAL-COD-RTN,X(03),processResultCode,,,"$WS-SAL-COD-RTN",
,generic
0- Quantity: Este campo tiene diferentes funciones dependiendo el valor: o 1: Representa el comienzo de una entidad. o n (con n >1 ) representa el comienzo una coleccin de elementos. o (vaco): Depende el resto de los parmetros puede ser tomado como la definicin de una variable, escribir un valor, aplicar un template, etc. o X: Toda la lnea se ignora, sirve para agregar comentarios
Por ejemplo: X, Empiezo a crear las variables 1,customerIdentification entidad customerIdentification) (Es un comentario) (comienza la
1- NombreEndidad: Dependiendo el valor de Quantity tiene diferente comportamiento Si Quantity es > 0: Se toma como o <nombreEntidad>:<version>:<attrName>:<attrDataModel> Si es vaco y es el nombre de una entidad definida anteriormente se toma como fin de dicha entidad. Si es vaco: En caso que no haya un valor en PotentialEntityName se toma este valor como nombre.
Por ejemplo: 1,customerIdentification:1.0:cliente -----> <customerIdentification version="1.0" name="cliente"> 1,customerIdentification:::product.financials -------> <customerIdentification dataModel="product.financials">
2- DataTypeAndLength: Solo cuando Quantity es vaco. Determina el tipo y la longitud del campo. Los valores posibles son: o X(<cant>) String de <cant> caracteres o 9(<cant>) Integer de <cant> caracteres o 9(<cant>)V<cantDec> Real con <cant> de parte entera y <cantDec> decimales. o B Bool. Solo se usa en los campos de generic del response Por ejemplo: o D Date. Solo se usa en los ,WS-NRT-CLI,X(0009),identificationNumber,,,,WS-NRT-CLI ---> campostipo generic del response Si el valor es menor se completa con espacios a derecha Es de de String de longitud 9.
,WS-NUM-SEQ,9(010),frequentlyUsedAccountId,,,,WS-NUM-SEQ -----> Es de tipo integer de 10 posiciones. Si el valor es menor se completa con 0 a izquierda
3- PotentialEntityName: Solo cuando Quantity es vaco. En caso de estar presente se utilizar como nombre de la entidad.
4- Ignore: Solo cuando Quantity es vaco. Si hay una X en este lugar se ignora el campo.
Por ejemplo: ,WS-SAL-GLS-RTN,X(30),WS-SAL-GLS-RTN,X,,, En este caso el campo WS-SAL-GLS-RTN no se utiliza en la respuesta y puede ser ignorado.
6- Transformation: Solo cuando Quantity es vaco. En este campo se puede poner llamadas a templates o funciones. Tener en cuenta que debe agregarse entre comillas ("). Para escribir una variable se utiliza simplemente "$<nombreVariable>" En caso de ser un template los parmetros se pasan con la forma "{<key>='value', <key2>='value2',...}"
Por ejemplo: ,WS-COD-CNL,X(0003),channelId,,,"getChannelIdFromHeader2CICS{}",WS-COD-CNL El valor de channelId se obtiene del template getChannelIdFromHeader2CICS ,CA1-WN-NBLOCK,9(03),paginationInfo,,,"getPagInfoValue{infoString=%,searchString='nBlocks'}", El template getPagInfoValue toma 2 parmetros, infoString es el valor del campo que se est leyendo, osea paginationInfo y searchString es 'nBlocks'
7- TargetVariable: Solo cuando Quantity es vaco. En caso de tener algn valor, se crea una variable con ese nombre que almacena el valor.
Por ejemplo: ,WS-NRT-CLI,X(0009),identificationNumber,,,,WS-NRT-CLI ---> El valor del campo identificationNumber se guarda en una variable con nombre WSNRT-CLI.
8- AssertType: Solo cuando Quantity es vaco. (Todava no es muy utilizado por temas de datos) Identifica qu elementos sern considerados para autogenerar la validacin por assert, y el tipo de assert. Los tipos de assert tolerados son: o AEqual: Validacin por igualdad. o !AEqual: Validacin por distinto. o ANull: Validacin por igual a null. o !ANull: Validacin por distinto de null.
Casos especiales
Se permite ignorar colecciones completas. Para esto hay que agregar en la definicin de la coleccin un :X al final. Por ejemplo: 25,accounts:X 1,account:1.0 1,subproduct ,WS-SUB-PRODUCTO,X(04),subproductId,,,, ,subproduct ,WS-SUB-PRODUCTO,X(04),mnemonic,,,, ,account:1.0 ,accounts De este modo, se actualiza la posicin para el resto de los elementos, pero no se crea el tag <collection name=accounts /> en el resultado.