![Page 1: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/1.jpg)
Reutilizando conocimiento en la versión Rocha
Andrés Aguiar
ARTech
![Page 2: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/2.jpg)
¿Dónde está el conocimiento?
![Page 3: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/3.jpg)
¿Qué hace GeneXus con una Transacción?
![Page 4: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/4.jpg)
¿Qué hace GeneXus con un Procedimiento?
![Page 5: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/5.jpg)
Odio los procedimientos
![Page 6: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/6.jpg)
Los procedimientos son buenos
![Page 7: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/7.jpg)
¿Para qué usamos código procedural?
![Page 8: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/8.jpg)
Para programar el flujo de mi aplicación
![Page 9: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/9.jpg)
Para obtener una lista de datos
![Page 10: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/10.jpg)
Para obtener un valor
![Page 11: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/11.jpg)
Para realizar actualizaciones batch
![Page 12: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/12.jpg)
¿Para programar el flujo de mi aplicación?
¡Workflow!
![Page 13: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/13.jpg)
¿Obtener un valor?
¡Fórmulas!
![Page 14: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/14.jpg)
Fórmulas en GeneXus Rocha
Mas simples
Mas flexibles
Mas eficientes
![Page 15: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/15.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/16.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/17.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/18.jpg)
¿Obtener una lista de datos?
¡Data Providers!
![Page 19: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/19.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/20.jpg)
¿Cómo se definen?
![Page 21: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/21.jpg)
¿Cómo se definen?
![Page 22: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/22.jpg)
¿Cómo se usan?
![Page 23: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/23.jpg)
¿Cómo funcionan?
Expansión en tiempo de especificación
![Page 24: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/24.jpg)
Consecuencias
![Page 25: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/25.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/26.jpg)
¿Procesos Batch?
¡Data Providers + Formulas!
![Page 27: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/27.jpg)
![Page 28: Reutilizando conocimiento en la versión Rocha Andrés Aguiar ARTech](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/28.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/29.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/30.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022033101/5665b4341a28abb57c8ff2d7/html5/thumbnails/31.jpg)
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