Recents
Summarized By Collaborative Project (sp)Unofficial Content

 

Objetivos#

La idea es lograr una implementacion del patron de Summarized by Pattern.
Mostrar que se pueden hacer patterns y dejar un proceso documentado
Mostrar que el WorkWith?? no es el unico pattern
Facilitar la creacion de patterns en el futuro.

Ejemplo Canónico#


Dado el ejemplo de la factura:

  //Invoice
InvId*
InvDate
InvMonth = Month(InvDate)
InvYear = Year(InvDate)
CustomerId
CustomerName
CustomerZone
InvTot = Sum(InvTotLin)
//InvoiceLevel1
(InvLinNbr*
ProdId
ProdQuantity
ProdPrice
ProdDescription
ProdGroup
InvTotLin = ProdQuantity * ProdPrice
)



Filtros#

Se debe poder elegir el conjunto de facturas con las cuales quiero trabajar.
Para eso permito elegir los filtros.

  InvDate   ( un rango de fechas)
CustomerId
CustomerZone
ProdId
ProdGroup


Dimensiones por las que se agrupa#

Se sumarizaria por alguna de las dimensiones, en este caso, podrian ser:

  Month(InvDate)   //hay que definirlo como formula?
Year(InvDate)
CustomerId
CustomerZone
ProdId
ProdGroup


Indicadores#

Los indicadores (atributos de los que necesito mostrar los resultados agrupados) que se utilizarian serian.

  ProdQuantity 
InvLinTot
UnitPriceMedio = sum(InvLinTot) / sum(ProdQuantity) //no es lo mismo que el Avg() de los unitarios.


La utilizacion de formulas diferentes a sum() se puede dejar para una segunda etapa (etapa 2).

Orden#

Si se ordena en por el resultado de los indicadores, es un Ranking.
Si se ordena por las dimensiones es un resumen.


Salida#

La salida seria un webpanel donde se pueda obtener filtrar por los criterios seleccionados en filtros, con diferentes tablas que agrupen por los criterios definidos.


Formas de Implementacion#

Generar un webpanel que maneje los filtros, webcomponets para la muestra de los diferentes tablas agrupadas.
Las mismas se pueden poner horizontal o vertical (etapa 2)

La lectura en la base de datos y su agrupacion se puede hacer en SDT, de forma de facilitar el mostrar los resultados ordenados como ranking .

Plan de trabajo tentativo#


Etapa 0 (3 meses AE)#

Definir el grupo de trabajo.
YA CULMINADO

Etapa 1 (3 Meses AE)#

Hacer el ejemplo canonico de la factura.

Etapa 2 (2 Meses AE)#

Implementacion del primera version del pattern (robando) basado en el WorkWith?? .
Solo usar SUM() para agregar
Los resultados se muestran solo en tablas, sin ordenar. (Ya ordenamos)
Se agrupa por identificadores de las dimensiones y no por la descripcion de las dimensiones (Ya superado)

Etapa 3 (1 Mes AE)#

Agregar la vista de TagCloud (Ya realizado)
Agregar la vista de Grafica de GXchart. (Ya realizado)
Agregar la posibilidad de tener layout horizontal o vertical

Etapa 4 (Evento)#

Liberar una beta

Etapa 5 (1 mes DE)#

Probarlo con algunos casos y encontrarle los limites de la performance. Stress Testing
Optimizar la generacion de los SUM() con When. (ya realizado)
Revisar sentencias en la base y optimizaciones posibles (vistas materializadas, tablas temporarias, etc)

Etapa 6 (sin fecha, antes de fin de año).#

Documentarlo.
Testeo en serio
Liberarlo al publico.
Mejoras esteticas.


Nomenclatura#

AE = Significa Antes del Evento
DE = Despues del Evento.
Es la nomenclatura temporal por la que se rige la gente de Artech biggrin

Temas a Resolver.#

Ponerle un nombre que se entienda a cada una de las agregaciones.#

Por ejemplo se puede llamar :
Resumen por Mes
Año/Mes Cantidad Vendida Importe Vendido Precio / Unitario Promedio

Definir la navegacion entre Resumenes.#

Se define un link en el Año/Mes, que puede hacer:
  • Listar todas las facturas que permitieron llegar a ese resumen (es la mas facil, es solo la lista, llegando al trabajar con facturas)
  • Instanciar Año/Mes en los filtros, y mostrar el resto de los resumens con ese filtro (seria un Drill Down)
  • Poder llamar a links externos a la KB y al servidor WEB.

Comparar dos periodos de tiempo (Puede ser otro pattern relacionado)#

Una cosa que los clientes piden mucho es ver la comparacion de lo que vendi el mes pasado contra lo que vendi el mes corriente.
Otra es comparar este año, con el año anterior
El mes de Setiembre de este año, con el mes de setiembre pasado.

Integracion con GXPlorer.#

Hacer las consultas con Gxplorer IO, a traves de Webservices.

Resumen (un webcomponent generico o varios)#

27/07/2006: El ejemplo canonico ya esta realizado y funcionando.
Se realizao la impleentacion resumiendo en SDT y con un componente fijo que grafica/muestra la grilla o hace la nube, dependiendo de los parametros que recibe.
Se puede ver el ejemplo en

La implementacion quedo bastante simplificada, pues hay que generar 1 objeto procedure (sin User Interface) para cada dimension que quiera summarizar y luego otro objeto webpanel para cada transaccion que quiera ver sumarizada. En el ejemlo anterior, todo puede realizarse con 7 objetos, ademas de los creados por el workwith.

Etapas que quedan por hacer.
1) Definir el xml de la instancia (ya hecho)
2) Programar el pattern para generar el componente.  (ya hecho)
3) Integrarlo con el WorkWith. (ya hecho, a medias)

Dudo si hacer webcomponent para cadar resumen/ranking o hacer uno que reciba un SDT y cargue un grilla/grafique o haga la nube.
Ya esta realizadoImplementacion de ejemplo canonico, con las funcionalidades que nos guste. No el pattern, sino hacer el ejemplo de como queremos que quede.
Subrilo a GXOpen, como proyecto y ejecutando, como el GXajax.
Se pueden implementar un par de variantes para poder compararlas.
Hacer un estudio de ventajas y desventajas y diferentes opciones de implementacion

Se puede ver el ejemplo canonico en funcionamiento aqui

24/08/2006 - Se tiene la primera implementacion del Pattern SummarizedBy.

01/09/2006 - Se libera la primera implementacion en Gxopen (http://www.gxopen.com/gxopen/servlet/hversion?553,1)

16/09/2006 - Se libera la segunda version en GXOpen (http://www.gxopen.com/gxopen/servlet/hversion?553,1)

Summarized by Collaborative Project (Segunda Etapa)

"SummarizedBy" Pattern - Collaborative Project