GeneXus X incrementa la productividad de desarrollo con Data Providers y Data Selector |
|
GeneXus X incorpora objetos en el IDE que incrementan la productividad. Hoy hablaremos de qué son y cómo optimizan el trabajo los Data Providers y Data Selector. |
Si se trata de incrementar la productividad en el desarrollo con GeneXus, Data Providers y Data Selector tienen su función protagónica.
El camino de GeneXus desde su origen fue ser declarativo: un repositorio de conocimiento, independiente de la tecnología.
¿Qué es ser declarativo cuando desarrollamos?: ser declarativo implica indicar “que hacer” en lugar de “cómo hacerlo”.
Hoy en día (casi 20 años después), esta comienza a ser una tendencia mundial y se habla mucho de tener lenguajes más declarativos. GeneXus es básicamente declarativo, pero sus Procedures, aunque de muy alto nivel en el acceso a los datos, no lo son, los Data Providers representan un gran paso para minimizar la necesidad de codificación procedural.
¿Qué son los Data Providers y qué función cumplen?
Los Data Providers son objetos 100% declarativos (ver recuadro) que sustituyen a una determinada clase de procedimientos: aquellos que reciben una entrada, realizan un proceso y su objetivo final es devolver un conjunto de datos en un formato estructurado. En ese contexto los Data Providers apuntan a disminuir drásticamente el número de procedimientos.
Dado un proceso de la forma: entrada, transformación y salida, donde en la transformación se obtienen datos generalmente de la base de datos, para luego ser devueltos en la salida en algún formato estructurado jerárquico, los Data Providers ponen el foco en esta salida, de tal forma que en definitiva lo que se hace, es indicarle a GeneXus “que se quiere obtener” y no “como hacer para obtenerlo” .
Esta salida luego, puede ser convertida a algún formato estándar fácilmente (XML, JSON, etc).
Ejemplo comparativo:
Así sería el código de un procedimiento para crear un XML con una lista de pasajeros de una aerolínea.
Mirando ese código procedural podemos ver que es entreverado, un poco confuso y no se ve claramente la intención de lo que se quiere lograr con el mismo.
Con los Data Providers se intenta resolver estas carencias que tiene la programacion procedural en los objetos procedimiento.
El objetivo es programar lo mismo de forma declarativa. Entonces tenemos bien identificadas la entrada y la salida del proceso, o sea, es bien clara la intención de lo que se tiene programado y como se ve, se ahorra muchísimo código.
Los Data Provider tendrán por lo tanto, una estructura como la de la imagen, donde del lado izquierdo vemos los campos a devolver (y se aprecia adicionalmente la estructura que tendrá la salida) y del lado derecho lo que se asignara a cada campo de la estructura (en general atributos). También podrán utilizarse sentencias de control (ver Documentación: Data Provider Languaje). Se podrá recibir parámetros de entrada (serán siempre de in) y la salida del DP será un SDT (o BC) el cual se indica en su property Output.
Las principales utilidades se destacan en la escritura de archivos XML (Web services, rss feeds), el llenado de SDT (asociados a los User Controls, por ejemplo) y el llenado de estructuras de business components.
Data Selectors y la optimización del conocimiento
Data Selectors, es un nuevo tipo de objeto que permite almacenar un conjunto de orders, filtros y cláusulas defined by; para poder reutilizarlos en distintas partes de la KB.
Esto potencia muchísimo lo que es la reutilización de código, por ejemplo si se tiene una tabla de clientes y necesitamos filtrar los clientes activos en muchos objetos, lo haremos definiéndolo con un Data Selector y referenciándolo en todos los lugares donde se quiera aplicar dicho filtro. Además los Data Selector pueden ser aplicados para filtrar grillas, grupos de Data Providers y en la definición de fórmulas.
Como resultado se optimiza el conocimiento porque la programación se hace más clara y sencilla: al potenciar el ahorro y la reutilización de código que se definirá una sola vez; facilita el mantenimiento ya que las modificaciones se harán en un solo lugar y optimiza el conocimiento almacenado en la KB con el nivel de encapsulamiento que proveen.
Para continuar profundizando en el lenguaje declarativo, las posibilidades de Data Providers y Data Selector en GeneXus X, véanse las dos conferencias que fueron brindadas en el XVIII Encuentro Internacional de GeneXus:
GeneXus X IDE –Getting Started II de Fabián Bonilla
Data Providers de Luis Murillo |
|