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

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

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

Page 1: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Reutilizando conocimiento en la versión Rocha

Andrés Aguiar

ARTech

Page 2: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

¿Dónde está el conocimiento?

Page 3: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

¿Qué hace GeneXus con una Transacción?

Page 4: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

¿Qué hace GeneXus con un Procedimiento?

Page 5: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Odio los procedimientos

Page 6: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Los procedimientos son buenos

Page 7: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

¿Para qué usamos código procedural?

Page 8: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Para programar el flujo de mi aplicación

Page 9: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Para obtener una lista de datos

Page 10: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Para obtener un valor

Page 11: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Para realizar actualizaciones batch

Page 12: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

¿Para programar el flujo de mi aplicación?

¡Workflow!

Page 13: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

¿Obtener un valor?

¡Fórmulas!

Page 14: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Fórmulas en GeneXus Rocha

Mas simples

Mas flexibles

Mas eficientes

Page 15: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Simples

InvoiceLineTotal = Price * Quantity

InvoiceTotal = sum(InvoiceLineTotal)

CustomerTotalPaidInvoices = sum(InvoiceTotal, InvoicePaid = 1)

Page 16: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Flexibles

For Each Defined by CustomerName

Where Count(InvoiceDate) > 10

&CustomerTotal = sum(TotalFactura)

&CustomerTotal2 = sum(InvoiceLineQty*ItemPrice)

End For

Page 17: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

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

Page 18: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

¿Obtener una lista de datos?

¡Data Providers!

Page 19: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Data Providers: Reutilizar Navegaciones

Navegaciones habituales

Clientes Activos

Diferentes presentaciones

WebPanel

WorkPanel

Report

Web Service

Page 20: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

¿Cómo se definen?

Page 21: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

¿Cómo se definen?

Page 22: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

¿Cómo se usan?

Page 23: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

¿Cómo funcionan?

Expansión en tiempo de especificación

Page 24: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Consecuencias

Page 25: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

La estructura de los Data Providers

Defined By

Facilidad de asociación a grillas y reportes

Exposición como WebServices

Page 26: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

¿Procesos Batch?

¡Data Providers + Formulas!

Page 27: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.
Page 28: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Otras aplicaciones

Exponer un Data Provider como WebService

Consumirlo internamente como WebService

Asociación a grilla

Asociación a Reporte

Page 29: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

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”

Page 30: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

Mas ideas

Definición de Data Providers en GXQuery

GXplorer & GXquery IO - Soluciones de BI más integrables, Mañana 9:00

Page 31: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech.

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