Dinámica
Framework para desarrollo fácil
de aplicaciones web con JavaTM y Ajax.
En producción desde el año 2004.
Producido por:
Martín Córdova y Asociados C.A.
www.martincordova.com -
[email protected]
RIF J-31134803-4 - Caracas/Venezuela
Cómo crear reportes ParentChild de N niveles
Última actualización: 2010-08-19
Contenido
Sumario ............................................................................................................................ 2
Requerimientos .................................................................................................................. 3
Cómo instalar y correr la demo ParentChild ........................................................................... 3
Estructura del módulo ......................................................................................................... 5
Clase utilizadas por cada Action ......................................................................................... 6
Cómo funciona ................................................................................................................... 7
Cómo reutilizar el módulo ParentChild ................................................................................... 8
Cómo crear reportes ParentChild de N niveles
Página 1 de 12
Dinámica
Framework para desarrollo fácil
de aplicaciones web con JavaTM y Ajax.
En producción desde el año 2004.
Producido por:
Martín Córdova y Asociados C.A.
www.martincordova.com -
[email protected]
RIF J-31134803-4 - Caracas/Venezuela
Sumario
Este documento explica como reutilizar el módulo de reporte de N niveles de agrupamiento que
incluye el framework Dinámica, partiendo de la demo prefabricada "ParentChild" que es 100%
declarativa y no requiere clases a la medida, y cuya salida HTML se muestra a continuación:
Cómo crear reportes ParentChild de N niveles
Página 2 de 12
Dinámica
Framework para desarrollo fácil
de aplicaciones web con JavaTM y Ajax.
En producción desde el año 2004.
Producido por:
Martín Córdova y Asociados C.A.
www.martincordova.com -
[email protected]
RIF J-31134803-4 - Caracas/Venezuela
Requerimientos
Requiere framework v2.2.2 en adelante. Debe tener creada y corriendo una webapp que utilice la
BD "demodb" de Dinámica.
Cómo instalar y correr la demo ParentChild
Dentro de su proyecto, navegar a la carpeta "action" dentro de la carpeta "WEB-INF":
Seleccionar esta carpeta y ejecutar el comando "New":
Seleccionar la opción "Reutilizar plantilla" dentro de la categoría "Framework Dinámica":
Cómo crear reportes ParentChild de N niveles
Página 3 de 12
Dinámica
Framework para desarrollo fácil
de aplicaciones web con JavaTM y Ajax.
En producción desde el año 2004.
Producido por:
Martín Córdova y Asociados C.A.
www.martincordova.com -
[email protected]
RIF J-31134803-4 - Caracas/Venezuela
Es muy importante que cuando vaya a usar esta opción haya seleccionado la carpeta "action" o
una subcarpeta dentro de "action". Los módulos de Dinámica solo pueden existir a partir de la
carpeta "action".
Proceda a indicar un nombre para el módulo, una descripción, y seleccione la plantilla
"parentchild" que sirve para hacer reportes estadísticos con gráficos.
Haga clic en el botón "Finish" para crear el módulo. Su proyecto se actualizará con la estructura
de carpetas que aparece a la derecha. Cada carpeta es un Action, la unidad modular en el modelo
de programación declarativa de Dinámica. Para probar el módulo puede navegar con el browser
con una ruta como: http://localhost/demo/action/pchild/form, pero el Plugin de Dinámica provee
un mecanismo más fácil. Seleccione la carpeta raíz de su módulo (pchild), haga clic en el botón
derecho y seleccione el comando "Navegar".
Para usar este comando es indispensable que el módulo contenga un Action llamado "form".
Cómo crear reportes ParentChild de N niveles
Página 4 de 12
Dinámica
Framework para desarrollo fácil
de aplicaciones web con JavaTM y Ajax.
En producción desde el año 2004.
Producido por:
Martín Córdova y Asociados C.A.
www.martincordova.com -
[email protected]
RIF J-31134803-4 - Caracas/Venezuela
Estructura del módulo
Action
/pchild/form
/pchild/notfound
/pchild/pdf
/pchild/picklist-multi/form
Descripción
Plantilla ParentChild - action de inicio
que sirve la página principal
Mensaje que aparece cuando no
encuentra data
Generar reporte PDF mostrando los N
niveles de agrupamiento
Picklist de tipo múltiple – action de
inicio
/pchild/picklist-multi/notfound Mensaje que aparece cuando no
encuentra data
/pchild/picklist-multi/search Ejecutar consulta y enrutar
/pchild/picklist-multi/view
/pchild/search
/pchild/view
dependiendo de que un recordset
tenga o no registros
Retorna el resultado de la consulta
Ejecutar consulta y enrutar
dependiendo de que un recordset
tenga o no registros
Retorna el resultado de la consulta con
los N niveles de agrupamiento
Cómo crear reportes ParentChild de N niveles
Página 5 de 12
Dinámica
Framework para desarrollo fácil
de aplicaciones web con JavaTM y Ajax.
En producción desde el año 2004.
Producido por:
Martín Córdova y Asociados C.A.
www.martincordova.com -
[email protected]
RIF J-31134803-4 - Caracas/Venezuela
Clase utilizadas por cada Action
Action
Clase Transaction
Clase Output
dinamica.GenericTransaction dinamica.GenericOutput
dinamica.GenericOutput
dinamica.GenericTransaction dinamica.PDFParentChild
dinamica.GenericTransaction dinamica.GenericOutput
dinamica.GenericOutput
/action/pchild/form
/action/pchild/notfound
/action/pchild/pdf
/action/pchild/picklist-multi/form
/action/pchild/picklist-multi/notfound
/action/pchild/picklist-multi/search dinamica.GenericTransaction
/action/pchild/picklist-multi/view
/action/pchild/search
/action/pchild/view
-ninguna-
dinamica.GenericTransaction dinamica.GenericOutput
dinamica.GenericTransaction
dinamica.ParentChildReader dinamica.ParentChildOutput
-ninguna-
-ninguna-
-ninguna-
Cómo crear reportes ParentChild de N niveles
Página 6 de 12
Dinámica
Framework para desarrollo fácil
de aplicaciones web con JavaTM y Ajax.
En producción desde el año 2004.
Producido por:
Martín Córdova y Asociados C.A.
www.martincordova.com -
[email protected]
RIF J-31134803-4 - Caracas/Venezuela
Cómo funciona
I
Action "form"
Action "search"
si
¿Hay
data?
Action "view"
no
Action "notfound"
Retorna página HTML
con el filtro de
búsqueda.
Retorna un fragmento
HTML con los niveles de
agrupamiento.
Este action contiene la
lógica que crea un
recordset principal el cual
contiene recordset hijos
los cuales tienen a su vez
recordset nietos.
Luego ese recordset es
exportado como una
salida de N niveles
definida previamente en
el archivo de
configuración.
Cómo crear reportes ParentChild de N niveles
Página 7 de 12
Dinámica
Framework para desarrollo fácil
de aplicaciones web con JavaTM y Ajax.
En producción desde el año 2004.
Producido por:
Martín Córdova y Asociados C.A.
www.martincordova.com -
[email protected]
RIF J-31134803-4 - Caracas/Venezuela
paramName="customerid" recordsetId="customers" separatorChar=";"
colName="customer" colType="varchar" />
Cómo reutilizar el módulo ParentChild
1.- El primer paso es cambiar el archivo query.sql en el action /picklist-multi/search para que
retorne la lista de elementos con el que desea filtrar la consulta principal. Si deja los nombres de
campos intactos usando alias, entonces tendrá que cambiar mucho menos, se recomienda esta
práctica.
2.- El segundo paso no es obligatorio para los casos cuando se desea usar el filtro de búsqueda
del action “form” igual a como lo trae la plantilla. De no ser así se debe proceder a colocar los
campos (input, picklist, combo-box, etc) con el cual desee realizar su búsqueda y tener en cuenta
que los mismos deberán ser reflejados en el archivo validator.xml del action “search”.
3.- El tercer paso es cambiar los archivos master.sql y total.sql en el action "search". El archivo
validator.xml no es necesario cambiarlo si opto por dejar iguales los nombres del formulario del
action “form” de lo contrario tendrá que especificar los nombres de los parámetros y modificar el
custom validator ya sea el caso.
<parameter id="customerid" type="varchar" required="true" label="Customer ID"/>
<custom-validator classname="dinamica.validators.StringToRecordset"
Tener en cuenta que si su caso no requiere tener sumatoria de totales puede omitir el archivo
total.sql tanto del archivo config.xml como del action “search”
<transaction>
<classname>dinamica.GenericTransaction</classname>
<validator>true</validator>
<transaction>false</transaction>
<jdbc-log>false</jdbc-log>
<recordset id="customers" source="request" scope="transaction" />
<recordset params="customers" id="master.sql" source="sql" scope="session" on-empty-
return="1"/>
<recordset params="customers" id="total.sql" source="sql" scope="session"/>
</transaction>
El query master.sql es el query principal el cual a partir de él se obtienen los N niveles de
agrupamiento, note que el mismo es grabado en sesión si trajo registro, esto con la finalidad que
sea recuperado en el siguiente action “view” el cual realiza la lógica de armar los N niveles de
agrupamiento.
Por otro parte cada query contiene un marcador nuevo “${lst:}” para tratar los casos cuando se
desea realizar una búsqueda con cláusula IN en SQL, por ese motivo también se observa que el
validator.xml tiene un custom validator el cual toma el parámetro del request que contiene una
lista de elemento separado por “;” y lo añade a un record
Comentarios de: framework Dinámica - Cómo crear reportes ParentChild de N niveles (0)
No hay comentarios