reutilizando conocimiento en la versión rocha andrés aguiar artech

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

Upload: francisca-lebron

Post on 28-Jan-2016

223 views

Category:

Documents


0 download

TRANSCRIPT

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