Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech

Preview:

Citation preview

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

Recommended