Sean los betatesters tan ilustrados como abstrayentes.
Ayer Gustavo Proto publicó un post sobre los miniprocs.
A pesar de ser el "uno que ya preguntó" del post, no los pude entender aunque confieso que hice un esfuerzo...
Con los ejemplos que nos pasaron me siguen quedando dudas por si van a poder modificar la base de datos o no y si solo lo vamos a usar para recuperar informacion de archivos u otras fuentes de datos.
Voy a seguir a la espera.
Enrique,
ResponderBorrarNo entendi bien que no entendiste, de todos modos capaz mejor postear estos comments en el blog de proto no?
En cualquier caso mi ultra-resumen-sin-que-proto-se-me-ofenda es: la idea (al menos segun yo la entiendo) de los miniprocs es separar por un lado el ouput de los procs de la navegación del mismo.
Es lo que proto menciona acerca de separar la implementación del objetivo, hacerlo declarativo (declaro el "output" digamos) en lugar de procedural, etc.
Un ejemplo claro: el de proto es uno (retornar un SDT de clientes), otro que a mi me "duele" más es: si tengo que retornar un SDT con las facturas entonces en un proc mezclo los for eachs con el manejo de SDT lo cual es complejo, me pierdo un poco, me olvido del new, del add, del no se que, etc .El que lee mi código ni te digo.
¿Qué tal si separamos por un lado la navegación y por otro el output? Queda más simple, más claro, declarativo, entendible, cambiable el output sin cambiar la navegación, etc, etc.
Ese, para mi, es el objetivo de los miniprocs y la verdad es que me parece fantástico! me resolvería varios temas, entre ellos un problema "de piel" que tengo con los SDTs y cuando los mezclo con navegaciones complicaditas más aun!!
Bueno, da para hacerse un festival pero como dije: discutamoslo en el blog de proto ¿no?
Guscarr
Yo apenas logre ver uno dentro de GX, (**creo** que con eso lo voy a entender) voy a estar en condiciones de discutir algo y la seguimos en la rocha.
ResponderBorrarLo que quise decir con este blog, es que aunque ya me dieron varias (2) explicaciones, aun no logre entender el uso.
Con tus ejemplos, queda un poco mas claro.
Enrique, como los Miniprocs hoy por hoy son un concepto experimental, todavia no hemos escrito la entrada correspondiente en el wiki.
ResponderBorrarPero un resumen rapido puede ser: MiniProcs son DataProviders on steroids!
Supongamos un ejemplo: dado el modelo de datos de la demo de la Factura, con los Dataproviders puedo obtener un Output con las Facturas, pero por ejemplo no puedo obtener alguna transformacion mas compleja como puede ser el Asiento que contabiliza esa Factura.
La idea con los Miniprocs es que puedas hacer estas transformaciones (al igual que en un proc comun), pero de forma declarativa.
Que quiere decir 'declarativa' en este caso? Que en enfasis lo ponemos en el Output que se quiere obtener y no en el proceso de como se obtiene.
Te pongo algunos ejemplo de Miniprocs a ver si resultan intuitivos:
Listado de facturas de un periodo:
Invoices parm(&f1, &f2)
{
Invoice
Where InvoiceDate > &f1
Where InvoiceDate <= &f2
{
Id = InvoiceId
Date = InvoiceDate
Total = InvoiceTotal
}
}
Carga de los Tabs en el TabbedView webcomponent (usado ahora en el WorkWith):
Tabs parm(&CustomerId)
{
Tab
{
Name = 'General'
WebComponent = link(ViewCustomer, &CustomerId)
}
Tab
{
Name = 'Invoices'
WebComponent = link(ViewCustomerInvoices, &CustomerId)
}
}
Contabilizacion de una Factura (ejemplo super simplificado):
Asiento
{
AsientoDescripcion = 'Factura ' + FacturaId
AsientoFecha = FacturaFecha
Movimiento
{
MovimientoCuenta = 11111 // ventas
MovimientoTipo = 'CR'
MovimientoMonto = FacturaTotal
}
Movimiento
{
MovimientoCuenta = 21111 // caja
MovimientoTipo = 'DB'
MovimientoMonto = FacturaTotal
}
}
Claro que este Asiento en realidad no actualiza la BD, solo da el Output, pero si conectamos este Miniproc con un BC ...
Con los ejemplos de Proto, GusCarr y Nicolas, voy entendiendo un poco mas.
ResponderBorrarCuando los veo, no parecen codigo, sino pseudocodigo de tan simples que parecen, a lo mejor es por eso que no lograba entenderlos.
Creo que va a ser algo muy bueno.
En el SummarizedBy, tenemos un proc que hace justamente eso y devuelve un SDT.
Gracias a todos por desasnarme.
Este blog ha sido eliminado por un administrador de blog.
ResponderBorrarEste blog ha sido eliminado por un administrador de blog.
ResponderBorrarEste blog ha sido eliminado por un administrador de blog.
ResponderBorrarEste blog ha sido eliminado por un administrador de blog.
ResponderBorrar