reutilizando conocimiento en la versión rocha andrés aguiar artech
TRANSCRIPT
Reutilizando conocimiento en la versión Rocha
Andrés Aguiar
ARTech
¿Dónde está el conocimiento?
¿Qué hace GeneXus con una Transacción?
¿Qué hace GeneXus con un Procedimiento?
Odio los procedimientos
Los procedimientos son buenos
¿Para qué usamos código procedural?
Para programar el flujo de mi aplicación
Para obtener una lista de datos
Para obtener un valor
Para realizar actualizaciones batch
¿Para programar el flujo de mi aplicación?
¡Workflow!
¿Obtener un valor?
¡Fórmulas!
Fórmulas en GeneXus Rocha
Mas simples
Mas flexibles
Mas eficientes
Simples
InvoiceLineTotal = Price * Quantity
InvoiceTotal = sum(InvoiceLineTotal)
CustomerTotalPaidInvoices = sum(InvoiceTotal, InvoicePaid = 1)
Flexibles
For Each Defined by CustomerName
Where Count(InvoiceDate) > 10
&CustomerTotal = sum(TotalFactura)
&CustomerTotal2 = sum(InvoiceLineQty*ItemPrice)
End For
Eficientes
1 sentencia SQL por For Each
SELECT T1.[CustomerId], T1.[CustomerName], T2.[GXC2], T3.[GXC1] FROM (([Customer] T1 LEFT JOIN (SELECT SUM(COALESCE( T5.[InvoiceTotal], 0)) AS GXC2, T4.[CustomerId] FROM ([Invoice] T4 LEFT JOIN (SELECT SUM(T7.[ProductPrice] * T6.[InvoiceLineQty]) AS InvoiceTotal, T6.[InvoiceId] FROM ([InvoiceItem] T6 INNER JOIN [Item] T7 ON T7.[ProductId] = T6.[ProductId]) GROUP BY T6.[InvoiceId] ) T5 ON T5.[InvoiceId] = T4.[InvoiceId]) GROUP BY T4.[CustomerId] ) T2 ON T2.[CustomerId] = T1.[CustomerId]) LEFT JOIN (SELECT COUNT(*) AS GXC1, [CustomerId] FROM [Invoice] GROUP BY [CustomerId] ) T3 ON T3.[CustomerId] = T1.[CustomerId]) WHERE T3.[GXC1] > 5 ORDER BY T1.[CustomerId]
For Each Defined by CustomerName Where Count(InvoiceDate) > 10 &CustomerTotal = sum(TotalFactura)End For
¿Obtener una lista de datos?
¡Data Providers!
Data Providers: Reutilizar Navegaciones
Navegaciones habituales
Clientes Activos
Diferentes presentaciones
WebPanel
WorkPanel
Report
Web Service
¿Cómo se definen?
¿Cómo se definen?
¿Cómo se usan?
¿Cómo funcionan?
Expansión en tiempo de especificación
Consecuencias
La estructura de los Data Providers
Defined By
Facilidad de asociación a grillas y reportes
Exposición como WebServices
¿Procesos Batch?
¡Data Providers + Formulas!
Otras aplicaciones
Exponer un Data Provider como WebService
Consumirlo internamente como WebService
Asociación a grilla
Asociación a Reporte
Mas aplicaciones
‘Data Provider Externo’
Mapearlo a un WebService externo
A un Data View sin tabla asociada
A un Stored Procedure
Default Data Provider por tabla
Varios Data Providers con el mismo “contrato”
Mas ideas
Definición de Data Providers en GXQuery
GXplorer & GXquery IO - Soluciones de BI más integrables, Mañana 9:00
Resumiendo
Formulas y Data Providers nos permiten capturar conocimiento
Todo conocimiento que capturamos lo podemos reusar
En GeneXus Rocha, piensen dos veces antes de hacer un procedimiento