tag:blogger.com,1999:blog-17038070051225082592023-11-16T02:32:29.485-08:00K2B ToolsK2B Tools automatiza la construcción de aplicaciones GeneXus, incrementando la productividad y disminuyendo los costos.K2B Toolshttp://www.blogger.com/profile/04215138846518077491noreply@blogger.comBlogger23125tag:blogger.com,1999:blog-1703807005122508259.post-22785623937348958632020-01-23T12:06:00.002-08:002020-01-23T12:13:21.450-08:00#TIP4 Una forma sencilla de integrarnos con otras aplicaciones.<div class="Pa1" style="text-align: justify;">
<span class="A2"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">En esta oportunidad queremos
compartir otro punto importante y de mucha utilidad a tener en cuenta para el
desarrollo de aplicaciones. </span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A2"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A2"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">En </span></span><span class="A3"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><a href="http://www.k2btools.com/">K2BTools</a>
</span></span><span class="A2"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">contamos con vasta experiencia en la integración con
aplicaciones de terceros, principalmente por la participación y uso de la
herramienta en diferentes proyectos de mediano y gran porte. Basados en esa
experiencia es que buscamos la forma de poder facilitar a los desarrolladores
el manejo de estas integraciones. </span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="Pa1" style="text-align: justify;">
<br /></div>
<div class="Pa1" style="text-align: justify;">
<span class="A2"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">Hemos detectado que algunas
integraciones deben hacerse con objetos externos. Por ejemplo es posible
integrarse con el </span></span><span class="A3"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><a href="http://wiki.k2btools.com/k2btools/servlet/wiki?20217,Category%3AGAM+integration+module">GAM de GeneXus</a> </span></span><span class="A2"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">para
poder tener un backend de gestión de la seguridad de nuestro sistema (En los
próximos tips profundizaremos sobre la seguridad), o con librerías necesarias
para complementar el desarrollo.</span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="Pa1" style="text-align: justify;">
<br /></div>
<div class="Pa1" style="text-align: justify;">
<span class="A2"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">Pero además de la integración
con objetos externos, muchas veces tendremos que integrarnos con Web Services.
Hay veces que será necesario para integrarnos con aplicaciones de terceros,
otras que tendremos que interactuar con versiones anteriores de GeneXus, o por
decisiones de arquitectura, en donde tendremos sistemas de gran porte que
necesitaremos segmentar en diferentes componentes que requerirán comunicación
entre sí mediante servicios web. </span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A2"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A2"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">Es posible evaluar la
integración pensando en el origen de los datos que queremos consumir. Si
estamos dentro del mundo GeneXus, y teniendo los datos modelados en
transacciones, ya tenemos mucho camino resuelto y GeneXus nos agrega un montón
de funcionalidad. Ahora, si tenemos datos que obtuvimos a través de un
procedimiento o a través de un Data Provider, la integración puede ser un poco
más compleja, y en estos casos puede que estemos consumiendo datos desde
servicios web. En K2BTools es posible manejar la integración con el Web Panel
Designer. </span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA1spOloJGay_MLZUKvhEsZs1XlsAjq2bgXmsLuCChRQ4ZZ9dE00LITQAH3pjIh7VAuqzZcXZorfpaf6jnErcWMZ2N7Q9zQ-khdaxdKT_xCSyglgG_gkCoxfLWhlQJjkgcf7Uy8YtD6tg/s1600/Tip4_2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="125" data-original-width="709" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA1spOloJGay_MLZUKvhEsZs1XlsAjq2bgXmsLuCChRQ4ZZ9dE00LITQAH3pjIh7VAuqzZcXZorfpaf6jnErcWMZ2N7Q9zQ-khdaxdKT_xCSyglgG_gkCoxfLWhlQJjkgcf7Uy8YtD6tg/s640/Tip4_2.PNG" width="640" /></a></div>
<div class="Pa1" style="text-align: justify;">
<span class="A2"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span class="A2"><span lang="es-419" style="font-family: "calibri" , sans-serif; mso-ansi-language: #580A; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Proxima Nova Rg"; mso-hansi-theme-font: minor-latin;">El </span></span><span class="A3"><span lang="es-419" style="font-family: "calibri" , sans-serif; mso-ansi-language: #580A; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Proxima Nova Rg"; mso-hansi-theme-font: minor-latin;"><a href="http://wiki.k2btools.com/k2btools/servlet/wiki?20127,Getting+started+with+K2BWebPanelDesigner">Web Panel Designer</a> </span></span><span class="A2"><span lang="es-419" style="font-family: "calibri" , sans-serif; mso-ansi-language: #580A; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Proxima Nova Rg"; mso-hansi-theme-font: minor-latin;">es una extensión dentro de K2BTools que tiene el
objetivo de facilitar la creación de WebPanels complejos, aumentando el grado
de flexibilidad y personalización de las interfaces.<o:p></o:p></span></span></div>
<div class="MsoNormal" style="text-align: justify;">
<br /></div>
<div class="Pa1" style="text-align: justify;">
<span class="A4"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">Con el Web Panel Designer
tendremos la posibilidad de implementar otros escenarios más complejos, como
por ejemplo: interfaces con varios grid, interacciones del tipo Dashboard,
interacciones con diseños basados en tarjetas, interacciones en las cuales sea
necesario ingresar datos sin usar transacciones.</span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A4"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3smEMruFEhreQukkkEgMtNoTVGd4TpPXML5vevjnNO4kCMZWZeA8ZlFBJ2sfsd0JrhAfUySm7AMmB6lSKYgnEhgV7olFB6bvdcN2Fsk6yr1llSnN7IihhYeJTb8ntsY2F4sd1mdkfAD0/s1600/Tip4_3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="351" data-original-width="921" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3smEMruFEhreQukkkEgMtNoTVGd4TpPXML5vevjnNO4kCMZWZeA8ZlFBJ2sfsd0JrhAfUySm7AMmB6lSKYgnEhgV7olFB6bvdcN2Fsk6yr1llSnN7IihhYeJTb8ntsY2F4sd1mdkfAD0/s640/Tip4_3.PNG" width="640" /></a></div>
<div class="Pa1" style="text-align: justify;">
<span class="A4"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A4"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A4"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">Pero también con el </span></span><span lang="es-419" style="font-size: 11pt;"><a href="http://wiki.k2btools.com/k2btools/servlet/wiki?20127,Getting+started+with+K2BWebPanelDesigner">Web Panel Designer</a> </span><span class="A4"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">podemos
resolver la integración con otras aplicaciones con el fin de obtener datos a
través de las acciones que ofrece. Por ejemplo: crear Grids basados en Data
Providers, desde una Transacción, un SDT, etc. </span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="Pa1" style="text-align: justify;">
<b><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></b></div>
<h2 style="text-align: justify;">
<b><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">Veamos a continuación un
ejemplo sencillo de la obtención de datos desde un servicio y su visualización
en nuestra aplicación.</span></b></h2>
<div class="Pa1" style="text-align: justify;">
<b><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></b></div>
<div class="Pa1" style="text-align: justify;">
<span style="font-size: 11pt;">Supongamos que quisiéramos
consumir un servicio rest, que nos retorna un conjunto de usuarios con sus
respectivas imágenes.</span></div>
<div class="Pa1" style="text-align: justify;">
<span style="font-size: 11pt;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifJbMvYmArHrTB6bVAPrx9dmZPEokOOQ3mFLuzmx8OSvgKzJGbckv6Nj7gjVVxdVpyrTJyz5ghRGCqHOUpDeWWL7DGHTQ_NmgBakqVY8RtsH1j7Xc-xVFlOv7IOGiMKMbsZ_HA86olHdo/s1600/Tip4_4.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifJbMvYmArHrTB6bVAPrx9dmZPEokOOQ3mFLuzmx8OSvgKzJGbckv6Nj7gjVVxdVpyrTJyz5ghRGCqHOUpDeWWL7DGHTQ_NmgBakqVY8RtsH1j7Xc-xVFlOv7IOGiMKMbsZ_HA86olHdo/s1600/Tip4_4.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="166" data-original-width="395" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifJbMvYmArHrTB6bVAPrx9dmZPEokOOQ3mFLuzmx8OSvgKzJGbckv6Nj7gjVVxdVpyrTJyz5ghRGCqHOUpDeWWL7DGHTQ_NmgBakqVY8RtsH1j7Xc-xVFlOv7IOGiMKMbsZ_HA86olHdo/s1600/Tip4_4.PNG" /></a></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">Lo primero que tenemos que
hacer es crear un SDT en GeneXus a partir del Json que nos devuelve el servicio
mencionado. GeneXus brinda la posibilidad de hacerlo como se muestra en la
imagen.</span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa2" style="text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-mth4o8sSnHYtNeAGeWAJDQQbQfOnIsEEPKKlNx8bVYn0S-PIzhK7_XoNMt7FKFEhREKTaP0sP_RRVtvl9EH0CubQF-SgjuxaIpSvIy9ImZZ9nxXNOG8i_P3okMAnRXW31DmBErwyJOg/s1600/Tip4_5.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-mth4o8sSnHYtNeAGeWAJDQQbQfOnIsEEPKKlNx8bVYn0S-PIzhK7_XoNMt7FKFEhREKTaP0sP_RRVtvl9EH0CubQF-SgjuxaIpSvIy9ImZZ9nxXNOG8i_P3okMAnRXW31DmBErwyJOg/s1600/Tip4_5.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-mth4o8sSnHYtNeAGeWAJDQQbQfOnIsEEPKKlNx8bVYn0S-PIzhK7_XoNMt7FKFEhREKTaP0sP_RRVtvl9EH0CubQF-SgjuxaIpSvIy9ImZZ9nxXNOG8i_P3okMAnRXW31DmBErwyJOg/s1600/Tip4_5.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-mth4o8sSnHYtNeAGeWAJDQQbQfOnIsEEPKKlNx8bVYn0S-PIzhK7_XoNMt7FKFEhREKTaP0sP_RRVtvl9EH0CubQF-SgjuxaIpSvIy9ImZZ9nxXNOG8i_P3okMAnRXW31DmBErwyJOg/s1600/Tip4_5.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="232" data-original-width="365" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-mth4o8sSnHYtNeAGeWAJDQQbQfOnIsEEPKKlNx8bVYn0S-PIzhK7_XoNMt7FKFEhREKTaP0sP_RRVtvl9EH0CubQF-SgjuxaIpSvIy9ImZZ9nxXNOG8i_P3okMAnRXW31DmBErwyJOg/s1600/Tip4_5.PNG" /></a><span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa2" style="text-align: left;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa2" style="text-align: left;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa2" style="text-align: left;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa2" style="text-align: left;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa2" style="text-align: right;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">Una vez que tenemos creado el
SDT</span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="Pa2" style="text-align: right;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">vamos a crear un nuevo
WebPanel.</span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="Pa2" style="text-align: right;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">Con el Web Panel Designer
utilizaremos la acción “Add SDT” para elegir el SDT que creamos a partir del
servicio.</span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="Pa2" style="text-align: right;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOKy_XJ8BETTjZoiwlGb5vOV23MbmirNG0JORqMr3f7qNBNMwSKhiPKPHuSRz3rAbfNdXUMgs4H6HDRn43Rsoja8DgcaOnJnpu5_2F4ou9s041-YLTOrHaPpQPqZbRyHbNQ-hZMA0Ww3M/s1600/Tip4_6.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="166" data-original-width="414" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOKy_XJ8BETTjZoiwlGb5vOV23MbmirNG0JORqMr3f7qNBNMwSKhiPKPHuSRz3rAbfNdXUMgs4H6HDRn43Rsoja8DgcaOnJnpu5_2F4ou9s041-YLTOrHaPpQPqZbRyHbNQ-hZMA0Ww3M/s1600/Tip4_6.PNG" /></a></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">Posteriormente iremos a la
subrutina que nos genera K2BTools para cargar el SDT (U_LoadSDT) utilizando el
HTTPClient.</span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa1" style="text-align: justify;">
<span class="A6"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa0" style="page-break-before: always; text-align: justify;">
<span class="A4"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">Luego,
simplemente se deberá ejecutar el Web Panel y visualizar los datos que nos trae
el Web Service, como en el siguiente ejemplo: </span></span><span lang="es-419" style="font-size: 11pt;"><o:p></o:p></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTO2NTvwfmakhc7itn079lTRxwBfYg87MZ8QNDklmFEMqUX998vz2TreW0U1Z4EJdFWWAFVItDyLrZL-_Z9TVgdmSAODutoRGP4PAcTyPk5yyEnI6q022hHKM0I3-jJ0PoXOCLaf2CQ2o/s1600/Tip4_7.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="502" data-original-width="825" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTO2NTvwfmakhc7itn079lTRxwBfYg87MZ8QNDklmFEMqUX998vz2TreW0U1Z4EJdFWWAFVItDyLrZL-_Z9TVgdmSAODutoRGP4PAcTyPk5yyEnI6q022hHKM0I3-jJ0PoXOCLaf2CQ2o/s1600/Tip4_7.PNG" /></a></div>
<div class="Pa0" style="page-break-before: always; text-align: justify;">
<span class="A4"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa0" style="page-break-before: always; text-align: justify;">
<span class="A4"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="Pa0" style="text-align: justify;">
<span class="A4"><b><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;">De esta forma, en muy pocos
pasos podemos consumir datos desde un servicio web para mostrarlos en nuestra
aplicación usando GeneXus y el WebPanelDesigner . En el siguiente video te invitamos a ver el ejemplo completo:</span></b></span></div>
<br />
<div style="text-align: center;">
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/mntlSLNAWxI" width="560"></iframe>
</div>
<div class="Pa0" style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="Pa0" style="text-align: justify;">
<span style="font-size: 11pt;">Si te interesa profundizar más
sobre la forma de implementar este tipo de interfaces sencillas u otras más
complejas, te invitamos a tomar contacto con el equipo de K2BTools para
coordinar una reunión y analizar juntos la forma de agregar valor y potenciar
tu aplicación. </span></div>
<div class="Pa0" style="text-align: justify;">
<span class="A4"><span lang="es-419" style="font-size: 11.0pt; mso-ansi-language: #580A;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div class="MsoNormal" style="text-align: justify;">
<b>Escribinos acá: <span class="A8"><span style="font-family: "calibri" , sans-serif; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Proxima Nova Rg"; mso-hansi-theme-font: minor-latin;">info@k2btools.com</span></span></b><span lang="es-419"><o:p></o:p></span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
pcollazohttp://www.blogger.com/profile/00341129885596942757noreply@blogger.com0tag:blogger.com,1999:blog-1703807005122508259.post-22780644552297820212019-08-20T09:37:00.000-07:002019-08-20T09:38:44.168-07:00Tip #3: La importancia de las interfaces de análisis enfocadas en visualizar la realidad del negocio.<div style="text-align: justify;">
Un siguiente punto que agrega mucho valor, y potencia la aplicación que estamos
desarrollando, es que tenga interfaces para poder explotar de forma eficiente los
datos de nuestra aplicación, lo que permitirá el análisis del negocio y la toma de
decisiones en tiempo real.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
La implementación de este tipo de interacciones no es sencilla. Hay que trabajar
para poder mostrar y analizar la información que estamos esperando ver, que
se pueda visualizar de forma cómoda y entender sin mucha complejidad.
Además, seguramente queramos tener diferentes opciones de vista de los datos,
manejando distintos tipos de gráficos y poder filtrar la información de forma
eficiente, ya sea para obtener cierta respuesta o para que varios usuarios con
diferentes roles exploten los datos de acuerdo a sus requerimientos. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Incorporar estas interacciones a nuestros proyectos, se manifiesta en horas
de desarrollo que, en muchos casos, terminan siendo más de las que nos
imaginábamos en un comienzo. Es así que la generación automática de parte de
estas consultas será de mucha ayuda. </div>
<div style="text-align: justify;">
<br /></div>
<h2 style="text-align: center;">
<b>¿Cómo incorporar este tipo de interacciones a nuestro proyecto? </b></h2>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Con Genexus y K2BTools es posible crear este tipo de interacciones de forma
clara y sencilla a través del uso de Query y de <a href="http://wiki.k2btools.com/k2btools/servlet/wiki?21393,Business+Analysis+View,">Business Analysis View</a> de
K2BTools. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Supongamos que quisiéramos tener en la sección de facturación una vista que
nos permita analizar cómo va la facturación de nuestro negocio. En esta sección
tenemos un listado de todas las facturas con el cliente asociado, el país, etc.
Por ejemplo:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuBF5GX2kFXjONXniPzY8kTsqCfC_Rgtx5_Sl8eOf9Mh3lc0rfIEsKzDjl2i8y_VYUvI4D4QuoB7csHsIKcphHhAf4SBwrDU9QeOZhZ9GKxY1zFCSla54E5_jeF0-bxUqLZeeGeahaYXM/s1600/Captura.PNG" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuBF5GX2kFXjONXniPzY8kTsqCfC_Rgtx5_Sl8eOf9Mh3lc0rfIEsKzDjl2i8y_VYUvI4D4QuoB7csHsIKcphHhAf4SBwrDU9QeOZhZ9GKxY1zFCSla54E5_jeF0-bxUqLZeeGeahaYXM/s1600/Captura.PNG" /></a></div>
<div style="text-align: justify;">
Si bien tenemos esta lista con toda la información acerca de la facturación, ésta no nos
permite analizar con claridad los datos a modo general. Para ello necesitaremos cambiar la
vista al modo de análisis. K2BTools agrega de forma automática la opción de poder cambiar la vista en tiempo de ejecución mediante una acción que al ejecutarla realiza el cambio. </div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7Zch8wEZTv6yH06aiNBnMZ1M_gP2BlA4qPIkgSWoM4TvB49YxZ4nsNqsPTAxiurvYe3yfZg0ZXjw_SBotZTvpAKJ81THb0xKGnDNP3X_4aNkZOqYKjHKPdar5dTJ28sMIx0-B5y8L9Ew/s1600/2019-08-20_1215.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7Zch8wEZTv6yH06aiNBnMZ1M_gP2BlA4qPIkgSWoM4TvB49YxZ4nsNqsPTAxiurvYe3yfZg0ZXjw_SBotZTvpAKJ81THb0xKGnDNP3X_4aNkZOqYKjHKPdar5dTJ28sMIx0-B5y8L9Ew/s1600/2019-08-20_1215.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-SUQ7JGtfr-UejeYUuojs-wip6xIJn2GXcCyUlXTyNSLWjKfYWpe1XxeSso63NTIFUghizEGEXE5zyBJo1BImmbO8rMs6hjT3wiEj2BQmht3kzbyPsGnZb1arQHKkjbeZMNeQjYRILM0/s1600/Captura2.PNG" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-SUQ7JGtfr-UejeYUuojs-wip6xIJn2GXcCyUlXTyNSLWjKfYWpe1XxeSso63NTIFUghizEGEXE5zyBJo1BImmbO8rMs6hjT3wiEj2BQmht3kzbyPsGnZb1arQHKkjbeZMNeQjYRILM0/s1600/Captura2.PNG" /></a></div>
<div style="text-align: justify;">
En la vista anterior podemos observar, por ejemplo, las ventas por cliente. También el
resumen de las ventas por país a partir de los datos que teníamos en el grid de facturas.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Al estar totalmente integrado
con la información que tenemos,
podemos aplicar filtros para
ver los datos de los últimos
120 días, por ejemplo, y una
vez aplicados vamos a poder
visualizar las consultas que
teníamos actualizadas en base
a ese filtrado.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIwADK3Kwen2yDVGT09J8TTiWY3wSwLh6Q6trtAdsLWdPReQ09EViyNzLuC5l-0Wu2N2tAmiPJuuXlYDrfoQD9X62Jum1lBvFjr5puGzj1VKorxOyVFyuHfxddQ2Ipt2LjKaCLKVoitz4/s1600/Captura3.PNG" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIwADK3Kwen2yDVGT09J8TTiWY3wSwLh6Q6trtAdsLWdPReQ09EViyNzLuC5l-0Wu2N2tAmiPJuuXlYDrfoQD9X62Jum1lBvFjr5puGzj1VKorxOyVFyuHfxddQ2Ipt2LjKaCLKVoitz4/s1600/Captura3.PNG" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<h2 style="text-align: center;">
<b>¿Cómo podemos
hacerlo con GeneXus
y K2BTools?</b></h2>
<div style="text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmIUqfQzLVwYX9S-GWAmD2mcEZlbK9ityyUzORiwG7MzcWmCykt_LM6REOZPpGrk8GJx3E-vo84Y-5XTSjANpRP_wiWD_KjDZNvUhRjoFyA5ut3fp5HdUUc-sUAH85p1zxZOA0NtyqboM/s1600/Captura4.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmIUqfQzLVwYX9S-GWAmD2mcEZlbK9ityyUzORiwG7MzcWmCykt_LM6REOZPpGrk8GJx3E-vo84Y-5XTSjANpRP_wiWD_KjDZNvUhRjoFyA5ut3fp5HdUUc-sUAH85p1zxZOA0NtyqboM/s1600/Captura4.PNG" /></a><br />
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
En la instancia del patrón Entity
Services, el cual introducimos en el
Tip 2, tenemos la opción de agregar
un nodo de nombre “<a href="http://wiki.k2btools.com/k2btools/servlet/wiki?21393,Business+Analysis+View,">Business AnalysisView</a>” en el cual es posible especificar
diferentes objetos query que deseen
tener en la vista de análisis. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Lo único que tendrá que hacer el desarrollador en GeneXus, será definir los indicadores
que van a participar de las diferentes Query y luego al aplicar el patrón.
De forma automática se agregarán todos los parámetros correspondientes a los filtros y
generará el filtrado para que los query presenten la información de acuerdo a esos filtros
quedando totalmente integradas a nuestra aplicación. </div>
<div style="text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnTydCz-NvHUiR2QoYKmhxIcVaIx4SdFvvDXT2rYeCipI9O51jaxYD62hzSh1d-klXwGsQVC7EbQxDx649wneWPRFrtpoWqHYx7u4ghGstN7A1nWs1CXjKbDJZ9K1WQwfu9Rmpv3zav3g/s1600/Capture5.PNG" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnTydCz-NvHUiR2QoYKmhxIcVaIx4SdFvvDXT2rYeCipI9O51jaxYD62hzSh1d-klXwGsQVC7EbQxDx649wneWPRFrtpoWqHYx7u4ghGstN7A1nWs1CXjKbDJZ9K1WQwfu9Rmpv3zav3g/s1600/Capture5.PNG" /></a></div>
<div style="text-align: justify;">
A su vez, para cada uno de los componentes es posible configurar su posición, indicando
cómo queremos que se vean, si queremos verlo en la misma fila que otro gráfico o poder
elegir que inicie colapsado para desplegarlo en la medida de que sea necesario.
Podemos ver a continuación diferentes formas de visualizar estos componentes:</div>
<div style="text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOCACxWkKnY2sl49R-0cv2D6XY4KEL5Xwt8-9YqYlTHafu8Ho3jkiwmB6WAluBuSFiSBxdGDFTxS6ltUuWWSi2V41xQjCLjw_NbDuEQNConzKOI42Cqn6n2zDTBnReqJZJwo6s8fyd7MM/s1600/Captura6.PNG" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOCACxWkKnY2sl49R-0cv2D6XY4KEL5Xwt8-9YqYlTHafu8Ho3jkiwmB6WAluBuSFiSBxdGDFTxS6ltUuWWSi2V41xQjCLjw_NbDuEQNConzKOI42Cqn6n2zDTBnReqJZJwo6s8fyd7MM/s1600/Captura6.PNG" /></a></div>
<div style="text-align: justify;">
De esta forma, vimos como poder agregar interfaces de análisis
a nuestra aplicación de forma rápida, para que cada vez sea más
completa y así responder con las exigencias de los usuarios.</div>
pcollazohttp://www.blogger.com/profile/00341129885596942757noreply@blogger.com0tag:blogger.com,1999:blog-1703807005122508259.post-37573184151164267652019-08-02T12:32:00.002-07:002019-08-02T12:35:16.030-07:00Tip #2: La importancia de contar con todas las interfaces para el mantenimiento de entidades.<span style="background-color: white; font-family: "arial"; font-size: 11pt; text-align: justify; white-space: pre-wrap;">Hoy en día, cuando usamos o desarrollamos cualquier tipo de aplicación web, es muy probable que nos encontremos con interfaces para poder mantener nuestros datos. </span><br />
<br />
<span id="docs-internal-guid-fc008185-7fff-6620-f57e-cb376ce62c38"></span><br />
<div style="text-align: justify;">
<span id="docs-internal-guid-fc008185-7fff-6620-f57e-cb376ce62c38"><span style="background-color: white; font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">Por ejemplo, si nos basamos en un modelo donde tenemos una tabla de PRODUCTOS, al momento de interactuar vamos a necesitar modificar algún dato, crear nuevos productos o eliminar algunos de ellos. Esto es lo que ya conocemos como el </span><span style="background-color: white; font-family: "arial"; font-size: 11pt; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Work With </span><span style="background-color: white; font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">de nuestra aplicación, y K2BTools ofrece la generación del mismo a través de su </span><a href="http://wiki.k2btools.com/k2btools/servlet/hwiki?k2btools+tutorial+-+lesson+1%3a+k2bentityservices+pattern,&utm_campaign=pdf&utm_source=tip2&utm_medium=mail&utm_content=a" style="text-decoration-line: none;"><span style="background-color: white; color: #1155cc; font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">patrón Entity Services. </span></a><span style="background-color: white; font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">En la siguiente imagen podemos verlo aplicado a la transacción de productos: </span></span></div>
<span id="docs-internal-guid-fc008185-7fff-6620-f57e-cb376ce62c38">
</span>
<br />
<div style="text-align: justify;">
<span style="background-color: white; font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span id="docs-internal-guid-10a337d3-7fff-acdc-e276-2ba04aafe1cd"><span style="background-color: white; font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;"> <img height="397" src="https://lh5.googleusercontent.com/dt39unjUBoXQlcYvFmfyyTXWU9TbocsjQAbVMT8QwiDWd-i7f74FlHssvwxCW9K5xXuZXKn6yCLofohIsCvQD9Prz7KS_zt6-_IZEfuwgWJzektHnhLl5u-DsYYvLUGY7HoX8G_E" style="border: none;" width="602" /></span></span></div>
<div style="text-align: justify;">
<span style="background-color: white; font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: "arial";"><span style="background-color: white; font-size: 14.6667px; white-space: pre-wrap;">Con el <b>Entity Services</b> no solo vamos a tener creadas las operaciones de insert, update y delete, sino que también vamos a obtener muchas otras funcionalidades generadas de forma automática. Veamos los siguientes ejemplos:</span></span><br />
<br />
<span style="background-color: white; font-size: 14.6667px; white-space: pre-wrap;"><span style="font-family: "arial";"><b><br /></b></span></span>
<a href="https://lh3.googleusercontent.com/XP_ye7yeGuUVinwoImUBm4DyWDacIulO7JU0Bh5nnAK3q520JuK5flqR0AaEqU3wYYY2vbupTwgyVgPO07gqs8P40IhSctSoLpoWhHgOqYYxM2B6RAAsKB6biOylqdotYj8Iz-cr" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="174" src="https://lh3.googleusercontent.com/XP_ye7yeGuUVinwoImUBm4DyWDacIulO7JU0Bh5nnAK3q520JuK5flqR0AaEqU3wYYY2vbupTwgyVgPO07gqs8P40IhSctSoLpoWhHgOqYYxM2B6RAAsKB6biOylqdotYj8Iz-cr" style="border: none;" width="333" /></a><span style="background-color: white;"><span style="font-family: "arial";"></span></span><br />
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial";"><b style="font-size: 14.6667px; font-weight: bold;">Generación de diferentes opciones de filtros.</b><span style="font-size: 14.6667px;"><b> </b>Asociados a todos los grid, automáticamente se generan filtros genéricos para poder buscar por cualquiera de los campos disponibles. Además es posible usar otros tipos de filtros como los filtros múltiples, los filtros avanzados, etc. </span></span></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial";"><span style="font-size: 14.6667px;"><br /></span></span></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial";"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "arial";"><a href="https://lh4.googleusercontent.com/2lcYtwIFmX3sVhc3jzJVKGaI7L72z_Y9q5Jo32A7wvW46cdP6kEe6NohCP2uAJ-SaFl9t4SZRJKe9DJqqh9uRlDQOGemIJ5lksjw4RT5CFe3za2bit7Z7PDQYu87uTYZcRdUqTmp" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="221" src="https://lh4.googleusercontent.com/2lcYtwIFmX3sVhc3jzJVKGaI7L72z_Y9q5Jo32A7wvW46cdP6kEe6NohCP2uAJ-SaFl9t4SZRJKe9DJqqh9uRlDQOGemIJ5lksjw4RT5CFe3za2bit7Z7PDQYu87uTYZcRdUqTmp" style="border: none;" width="359" /></a></span></div>
<span style="font-family: "arial";"><span style="font-size: 14.6667px; white-space: pre-wrap;"><b>Generación de Reportes en PDF y EXCEL.</b> Es posible obtener la funcionalidad para exportar información de nuestra aplicación y poder realizar diferentes análisis u obtener estados del sistema. </span></span><br />
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial";"><span style="font-size: 14.6667px;"><br /></span></span></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial";"><span style="font-size: 14.6667px;"><br /></span></span></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<br /></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<br /></div>
<a href="https://lh4.googleusercontent.com/1ywIHQsRbv4J8Z2JZu7fxSUdQUSOaPZVa5zKlSB2IyMrXRX5RTzDogRw05otPeet77KbsK7gC6cL4TDVhjiK8k9DExU-fMljm_jY-dFeV3v3ZrSAcX2bWTBy8diqfjmaN7VpBG8U" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="205" src="https://lh4.googleusercontent.com/1ywIHQsRbv4J8Z2JZu7fxSUdQUSOaPZVa5zKlSB2IyMrXRX5RTzDogRw05otPeet77KbsK7gC6cL4TDVhjiK8k9DExU-fMljm_jY-dFeV3v3ZrSAcX2bWTBy8diqfjmaN7VpBG8U" style="border: none;" width="331" /></a><span style="font-family: "arial";"><span style="font-size: 14.6667px; white-space: pre-wrap;"><b>Configuración de Grids en ejecución.</b> Sin ningún esfuerzo por parte del desarrollador, podemos agregar más valor a la aplicación con diferentes configuraciones de nuestro grid en tiempo de ejecución. Por ejemplo, para elegir la paginación o seleccionar las columnas que le interese ver a cada usuario.</span></span><br />
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial";"><span style="font-size: 14.6667px;"><br /></span></span></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial";"><span style="font-size: 14.6667px;"><br /></span></span></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<b style="font-family: arial; font-size: 14.6667px;">Manejar diferentes vistas y modos de edición de los Work With.</b></div>
<div>
<span style="font-family: "arial"; font-size: 14.6667px; white-space: pre-wrap;">
Generalmente los Work With son aplicados en diferentes escenarios, donde en algunos casos tenemos muchos atributos y en otros podemos tener pocos. Para manejar esto podemos usar la vista convencional, o modificar el modo de edición del Work With y editar mediante un popup. También es posible visualizar todo en una misma interfaz con una vista de dos paneles como se ve en la imagen a continuación. </span></div>
<div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial";"><span style="font-size: 14.6667px;"><br /></span></span></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial";"><span style="font-size: 14.6667px;"><span id="docs-internal-guid-75f6afc0-7fff-2ffd-5b5a-30c8ded4d5f7"><span style="background-color: white; font-family: "arial"; font-size: 11pt; vertical-align: baseline;"><img height="278" src="https://lh6.googleusercontent.com/cepglm1M-KPjgkITH1gBvcaoeYqC_HaeyCM7KPtYhoLtB2nlUTkV-a1bsSphAIC1Etr6B42-8yNuIbb3m4Sk2EbspgBfGUDVFcLSSbNHbVHZZSRgTjCQ88LQ6Z--NgAPOdFE0IxI" style="border: none;" width="685" /></span></span></span></span></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial";"><span style="font-size: 14.6667px;"><span style="background-color: white; font-family: "arial"; font-size: 11pt; vertical-align: baseline;"><br /></span></span></span></div>
<span style="font-family: "arial";"><span style="background-color: white; font-size: 14.6667px; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Para poder manejar estas opciones, K2BTools ofrece la posibilidad de <a href="http://wiki.k2btools.com/k2btools/servlet/wiki?20819,Edit+Mode+property,">cambiar el modo de edición</a> y adaptarlo a cada necesidad y realidad de negocio. </span></span><br />
<br />
Además de cambiar la vista de los grids, es posible obtener otro tipo de vistas más orientadas al contenido, saliendo de la vista de grid convencional como vemos a continuación:<br />
<br /></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<img height="331" src="https://lh5.googleusercontent.com/I7Bhp3inDgVB92SLZ213ozQxq7tNCKHNVWlkatAeDtwyYfO969bH0hh9BNsfHFJyY6KkGNROAYyUWCL53iCvjCEM6HzSBBrnttEDzC_TkH5RGq4fjHz27ZCpersRA3RW1LZjoJ8N" style="border: none; font-family: arial; font-size: 14.6667px;" width="679" /></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial";"><span style="font-size: 14.6667px;"><br /></span></span></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<br /></div>
<div>
<span style="font-family: "arial"; font-size: 14.6667px; white-space: pre-wrap;"><b>Entity Manager</b>
Otro ejemplo de interacciones que debemos tener resueltas en nuestra aplicación es cuando queremos abrir un producto cualquiera. Seguramente nos interese ver toda la información en un solo lugar, sin la necesidad de tener que navegar por la aplicación para poder encontrarla.
K2BTools ofrece este manejo de forma sencilla a través del Entity Manager, el cual vincula automáticamente las tablas que se relacionan entre sí, como en el caso del producto que vemos en la siguiente imagen:</span></div>
<div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial";"><span style="font-size: 14.6667px;"><img height="436" src="https://lh5.googleusercontent.com/u_iVQMpjilhSsH0LwM-ANx-mgZNYOXWlHUgb336YGCAL8tndqPU4XMl3LcRK8VOfxcIe9miIvOZjluSOi7wBofYlNw_mUaQ1TiCdZpVeChZLJyQar_7RmwRa8afVKXjQN4Zjc60e" style="border: none;" width="626" /></span></span></div>
<div style="font-size: 14.6667px; white-space: pre-wrap;">
<span style="font-family: "arial"; font-size: 14.6667px;">De esta manera es posible jerarquizar los diferentes componentes de una entidad para tener una vista clara, y que se pueda visualizar o ingresar entidades complejas de forma sencilla. Dentro del entity manager se pueden seleccionar </span><a href="http://wiki.k2btools.com/k2btools/servlet/wiki?21167,Component+Group+in+Entity+Manager," style="font-family: arial; font-size: 14.6667px;">diferentes maneras de visualizar cada componente</a><span style="font-family: "arial"; font-size: 14.6667px;">, según su jerarquía, priorizando los componentes más importantes. Además, brinda otra alternativa para visualizar los tabs, permitiendo mostrar los componentes más relevantes en la propia interfaz e ir descubriendo progresivamente el resto de los componentes. </span></div>
</div>
<br />
<b>Pantallas de selección</b><br />
<br />
Con el uso del patrón K2B Prompt es posible generar de forma automática todas las pantallas de selección que necesitamos tener en nuestro sistema. Como se muestra en el caso a continuación, donde se crea una factura y podemos elegir cuál es el cliente que queremos seleccionar para esa factura. Como ya aplicamos el patrón a la transacción de Clientes, esta interacción se generó automáticamente con la personalización deseada.<br />
<br />
En el caso que estemos buscando un cliente y no esté ingresado en nuestro sistema, también es muy sencillo poder crearlo directamente en el prompt, ya que este comportamiento también se generó de forma automática y transparente para el desarrollador.<br />
<div>
<br />
<span id="docs-internal-guid-1fb1e914-7fff-14c9-aae2-b760aa485247"><span style="background-color: white; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><img height="395" src="https://lh5.googleusercontent.com/qoWIA22pDbt5rppUr8N7qPlXIzotEBQRqmctgplYH_8_QbfdeO3VkqD8z0UDmP8CKRyCr3r6WpRpoOZ3p9V5ds1n8Jol1IqsaCGaICk8ivDpKN9InKzBwUNEJvYfxv4f4qg4lZB6" style="border: none;" width="667" /></span></span></div>
<br />
En resumen, hemos visto como con el uso de los diferentes patrones que provee K2BTools para usar en Genexus, podemos tener resuelto un alto porcentaje de las interfaces para nuestra aplicación, y casi todo de forma automática. Esto nos va a brindar mayores resultados, pudiendo entregar antes nuestros proyectos y reduciendo notoriamente los costos de desarrollo.<br />
<span id="docs-internal-guid-2af40b52-7fff-9118-4d0e-3e58e9f2cbeb" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></span></div>
pcollazohttp://www.blogger.com/profile/00341129885596942757noreply@blogger.com0tag:blogger.com,1999:blog-1703807005122508259.post-9600665776255409712018-11-14T10:07:00.000-08:002018-11-14T10:12:54.903-08:00#Tip1: La aplicación debe tener muy buen diseño y una excelente experiencia de usuario<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif; white-space: pre-wrap;">Generando aplicaciones con excelente experiencia de usuario.</span><span id="docs-internal-guid-5b7867b9-7fff-8934-a26b-581cfe3b341b"></span></b><br />
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Para este primer Artículo queremos compartir el testimonio de Ignacio Rocca integrante del equipo de UX y QA de GeneXus Consulting.</span></span></div>
<b id="docs-internal-guid-010cb52f-7fff-c77a-257b-f9f4444ddce3" style="font-weight: normal;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">K2BTools forma parte del stack tecnológico de </span><a href="https://www.genexusconsulting.com/es/" style="text-decoration: none;"><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">GeneXus Consulting</span></a><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> desde hace años. Todos los proyectos se implementan usando K2BTools y por lo tanto es importante comprender cómo esta herramienta nos ayuda a lograr buenas experiencias de usuario.</span></span></div>
<b style="font-weight: normal;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Esta experiencia se ve afectada por el resultado de las interacciones con la aplicación o servicio en todos sus puntos, es un concepto amplio. Pero para lograr una buena UX tenemos que tener una buena usabilidad en nuestro producto.</span></span></div>
<b style="font-weight: normal;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="white-space: pre-wrap;">La usabilidad se define como la <b>eficacia, eficiencia y satisfacción</b> con la que un producto permite alcanzar objetivos específicos a los usuarios en un contexto de uso determinado. Los conceptos clave de esta definición son el objetivo o tarea, el usuario y el contexto en el cual la tarea se ejecuta.</span></span></div>
<b style="font-weight: normal;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Nuestros usuarios quieren cumplir sus objetivos con la mayor simplicidad posible. </span></span></div>
<b style="font-weight: normal;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><b>¿Cómo evaluamos la usabilidad?</b></span></span></div>
<b style="font-weight: normal;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Jakob Nielsen nos ofrece una alternativa para evaluar la usabilidad de una aplicación sin tener que involucrar a los usuarios.</span></span></div>
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Las heurísticas son un conjunto de reglas o principios metodológicos basados en la experiencia que evitan que ciertos problemas ocurran nuevamente. Como resultado del análisis de los factores comunes detrás de 249 problemas de usabilidad en 1995, </span><a href="https://www.nngroup.com/articles/ten-usability-heuristics/" style="text-decoration: none;"><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Jakob Nielsen </span></a><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">presentó su set refinado de 10 heurísticas de usabilidad. </span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><img height="185" src="https://lh6.googleusercontent.com/7MjSILJfdP2XM4rSZTQJDC8h3xdbrVKu27yisO757T5BcL6B5ffsiDH0OlWbYKwEQxobtkIlsMy44SE21d-Dza-vUpxaWR0KDtQTDpmpJCWWfByFbgpGNp5QbgBrv5VLnuOkM2zX" style="border: none; transform: rotate(0rad); white-space: pre-wrap;" width="443" /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Veamos cómo se cumplen algunas de estas heurísticas con Genexus + K2BTools:</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-weight: 700; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-weight: 700; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Visibilidad del estado del sistema</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><img height="268" src="https://lh3.googleusercontent.com/x9sD-tvUF1nlqnaYXcLwHe-jed5VKJyoTlmyISbBbV1JcumycnAtrCwbnXfe6Li0brobXQJaTw4W8kNi7kdOWLhOrASr0UtH1Aga21kjK1jo4zdgMPsNoKguSmfWiW9ywse4PM9O" style="border: none; transform: rotate(0rad);" width="602" /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Un ejemplo es el Feedback inmediato al usuario de la operación realizada. El desarrollador únicamente debe escribir el texto a mostrar, el resto lo resuelve K2BTools.</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-weight: 700; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-weight: 700; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-weight: 700; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Libertad y control por parte del usuario</span></span></div>
<div style="display: inline !important; text-align: center;">
<span style="font-weight: 700; white-space: pre-wrap;"></span><br />
<div>
<span style="font-weight: 700; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"></span></span></div>
<span style="font-weight: 700; white-space: pre-wrap;">
</span></div>
<div>
<div style="text-align: left;">
<a href="https://lh5.googleusercontent.com/Vn828aW5rD5_NhfLVLR77pz5lADI-RpdsDfgMPUiQ_R6iMW0OrUneHI8kyoCcIpneQ8d4NyJnoXR3GP1sSEJbkj6EhJOFDQwDVT8UOWec6Soak9bUgxiNBMvQtUpAq7Em2TpMSUl" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><img border="0" height="240" src="https://lh5.googleusercontent.com/Vn828aW5rD5_NhfLVLR77pz5lADI-RpdsDfgMPUiQ_R6iMW0OrUneHI8kyoCcIpneQ8d4NyJnoXR3GP1sSEJbkj6EhJOFDQwDVT8UOWec6Soak9bUgxiNBMvQtUpAq7Em2TpMSUl" style="border: none; transform: rotate(0rad);" width="110" /></span></a></div>
<div style="text-align: left;">
<span style="white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div style="text-align: left;">
<span style="white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div style="text-align: left;">
<span style="white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Por ejemplo cuando un usuario está dentro de la aplicación y entra a varios subniveles de jerarquía de la información puede encontrarse perdido. Tener un menú a la izquierda que esté siempre visible evita que entre en un callejón sin salida.</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><b style="font-weight: normal;"><br /></b><span style="font-weight: 700; white-space: pre-wrap;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-weight: 700; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-weight: 700; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-weight: 700; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-weight: 700; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Consistencia y estándares</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><img height="293" src="https://lh4.googleusercontent.com/2TN28y-iAH1QaPpRTrucJhhwhedeFWgluJlAYELWAk18DsCQfFl1c_axnf8D9o1kXAtMvE7anD_mhxAIrIO_Obp5dtTZCBMRseucdMCMIEyqZOqI6NB0c62py0dZN9Ks8mtaPY_B" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="602" /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">El pattern por definición realiza esto correctamente. Mediante la definición de layouts logramos que interacciones similares se ejecuten de la misma forma y repliquen por todo el sistema. Los títulos, los filtros, la grilla y las acciones se encuentran en el mismo lugar, los iconos en las diferentes pantallas hacen lo mismo.</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><b style="font-weight: normal;"><br /></b><span style="font-weight: 700; white-space: pre-wrap;">Prevención de errores</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-weight: 700; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://lh6.googleusercontent.com/r8_h5w6RaW8S968tqKptISGfsY8aKSr9wixe2rfSyHkSmVmTokdOLaMKJYN-E_j2nCLd6gsXLZCsBFD0dMyHWhIOrCg_djC6PVj9A-mWVC0s2sF0QZL22vetCTkSsbuHo8gnUlxN" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><img border="0" height="133" src="https://lh6.googleusercontent.com/r8_h5w6RaW8S968tqKptISGfsY8aKSr9wixe2rfSyHkSmVmTokdOLaMKJYN-E_j2nCLd6gsXLZCsBFD0dMyHWhIOrCg_djC6PVj9A-mWVC0s2sF0QZL22vetCTkSsbuHo8gnUlxN" style="border: none; transform: rotate(0rad);" width="343" /></span></a></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">K2BTools provee de diferentes elementos que ayudan a los usuarios a prevenir errores. Por ejemplo, ayudas contextuales para mostrar lo que se espera en ese campo o brindar mayor información al usuario.</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><b style="font-weight: normal;"><br /></b><span style="font-weight: 700; white-space: pre-wrap;">Flexibilidad y eficiencia en el uso</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-weight: 700; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><img height="178" src="https://lh4.googleusercontent.com/1oZxOalPdJcukdEnh56G47U3GMCYcAlUL7KRbAEcyuMcxypz3XR-m8Zo9JnZHBHZ3jcm1rSTsirzk47tOwekW4ym0EyOP7t9u5s5IfI6B7f-EyzTLNRZN3369nI_mdKq0b3DM1A6" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="311" /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Es posible jerarquizar los filtros de búsqueda para que usuarios iniciales puedan usar la caja de búsqueda. Por otro lado, los usuarios más avanzados pueden crear condiciones de filtros más complejas. Todo esto brinda flexibilidad y eficiencia para nuestros usuarios.</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><img height="168" src="https://lh3.googleusercontent.com/9D4WUM4LdVqoTevYH2g0RyYljidx0_rcJeCtS4xgvVFmfBqJnC3KJkzyasBFVKuZ4xQTNaSlclAVV3RUZ6R2PTJHFkiOwYhaJ5dd_b5fnKWcFcmKpQ34rp4uJLRSJuZDHD99-PKQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="602" /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Más flexibilidad, cuando los usuarios avanzados pueden definir qué columnas filtrar, la cantidad de filas por página y salvar las Settings de una grilla.</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><b style="font-weight: normal;"><br /></b><span style="font-weight: 700; white-space: pre-wrap;">Diseño estético y minimalista</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><img height="188" src="https://lh4.googleusercontent.com/F3CltHAcq7ZK6GPmcUtJ3DPq2X9R_GPbPWhhTKnng0Isfk9O-vSzjsuDcy7AUpXGmajAsvAMpfFoczGsO3dbP0-rcpcHhoR-UCSb2nGUavmHFFhcHY6DxZl6ekGdbhQiWIbGw5ll" style="border: none; transform: rotate(0rad);" width="602" /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">El <a href="https://www.youtube.com/watch?v=Xu0R8rIEUII&list=PLK7fZdQ69ZioRtVz2rZzoCwLhfHnZz5bA&index=4">Design System de Orion</a> tiene un diseño minimalista, </span><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">con buen uso de los espacios en blanco, aspectos que ayudan a agrupar los elementos presentados en la interfaz de forma natural, con mínima carga cognitiva por parte del usuario.</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><b style="font-weight: normal;"><br /></b><span style="white-space: pre-wrap;">Queremos invitarte a ver la explicación completa en el siguiente video:</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;"><a href="https://www.youtube.com/watch?v=C-H28o7g77c&index=4&list=PLK7fZdQ69Zip56d0B9m2R3E6GmFhl_yiW"><span style="color: #444444; font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><img height="339" src="https://lh3.googleusercontent.com/DLyZW935vE5Dm54Mt4a7Ay1-XwSAzo8Ng5_LXhMrjsyfbhhkcydXt7wipTIFc6gRcrXXh8mIqGyiyVTbvkD-OSjgEJdaiA6M4lEEAuijKvsM7DitVdh3g1mE3hPt6_HvTUG7nOk_" style="border: none; transform: rotate(0rad);" width="602" /></span></a></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
</div>
ebeghettihttp://www.blogger.com/profile/03798828826464083341noreply@blogger.com0Montevideo, Uruguay-34.9011127 -56.164531399999987-35.318244199999995 -56.809978399999984 -34.4839812 -55.51908439999999tag:blogger.com,1999:blog-1703807005122508259.post-61518672359022685222017-07-11T06:28:00.000-07:002017-07-11T06:28:28.737-07:00Optimizando los registros de auditoría<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="background-color: transparent; color: #666666; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">K2BAudit permite auditar todos los cambios realizados sobre las tablas críticas de sistemas desarrollados con GeneXus. En algunos casos, el volumen de cambios provoca que el registro de auditoría crezca más de lo deseable. Esto trae varios problemas, asociados a la facilidad de búsqueda en la base de datos para encontrar los registros relevantes, la performance de la explotación de estos datos, y espacio en disco utilizado por la base de datos de auditoría.</span></div>
<span id="docs-internal-guid-fc7dbbd0-3931-5502-f104-2d1dd4284216"><span style="color: #666666; font-family: "arial"; font-size: 11pt; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Para mitigar este problema, K2BTools ofrece mecanismos para disminuir el tamaño de este registro.</span></span><br />
<h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 20pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Primer paso: ¿Cuáles tablas debemos auditar?</span></h1>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Un enfoque habitual cuando se inicia el uso de K2BAudit es intentar auditar todas las tablas de la aplicación. Esto sin dudas lleva a registros de auditoría voluminosos, ya que cualquier operación realizada en el sistema deja su traza en el registro.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">En algunos contextos, esto puede ser necesario dada la estructura de la base de datos y los requerimientos de la aplicación.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">En muchos casos, sin embargo, pueden encontrarse tablas que no precisan ser auditadas. Por ejemplo aquellas tablas que almacenan información redundante, o cuyo contenido claramente no es crítico para el funcionamiento del sistema.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Por lo tanto, una buena práctica es comenzar analizando qué tablas auditar, considerando factores como los siguientes:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">¿Hay requerimientos que indiquen que se debe incluir auditoría para esta tabla?</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">¿Qué volumen de operaciones esperamos para la tabla?</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Auditar esta tabla, ¿puede auxiliar en el análisis de un incidente que nos lleve a los registros de auditoría?</span></div>
</li>
</ol>
<b id="docs-internal-guid-fc7dbbd0-3931-72ae-b18c-86060c514fd3" style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">En el fondo, es un análisis costo/beneficio donde el costo está asociado al espacio en disco consumido por los registros de auditoría, y el beneficio es la posibilidad de explotar los datos auditados.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Para reflejar este análisis en K2BAudit, debe usarse la propiedad “Has Audit” de la transacción asociada. </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="61" src="https://lh6.googleusercontent.com/oI_vY1GEfb-LANGv2yVvoFV8iVS_kUBh_9ebJ3jfaZSwDcoUXj2C3nfUgn9_HmWxj7aHjGqID-3ur8g-eqWoJXfG829Nfw91ClK25GGO_njLKHt9qeU7295ftMHgzboiL90V1fNh" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="276" /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Para hacer una configuración masiva, puede usarse la opción de menú “K2BAudit -> Select Transactions To Audit”.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="327" src="https://lh6.googleusercontent.com/peFRyT-mWK2iX3TxjHyjBRTd-_qfuTL8TkNeV66Wi-XEMHA5-o7zjGmhdvGMTsma0cu848AIQ-R_KeuXTQzOK_W-TFVsXndlSm19XCVgfzaGw2ilM82ExUjo50AUcg6TmMhvtX-Z" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="422" /></span></div>
<h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 20pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Segundo paso: ¿Cuáles atributos debemos auditar?</span></h1>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Una vez terminado el paso anterior, contamos con un conjunto de tablas que sabemos deben ser auditadas. El segundo paso es parecido al anterior, ahora considerando los atributos dentro de las tablas seleccionadas.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Nuevamente, la propuesta es analizar caso a caso los atributos de las tablas a auditar, para ver la conveniencia de auditar el valor del atributo en cada operación. Algunas preguntas que podemos realizar en esta etapa son:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">¿Es requerido, o útil, auditar el valor de este atributo?</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">¿Cuál es el espacio en disco que estimamos ocupará este atributo?</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">El atributo, ¿es redundante?</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">En función de este análisis podremos decidir si vale la pena auditar el atributo. Para reflejar esto en K2BAudit podemos usar la propiedad “Audit Attribute”.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="54" src="https://lh5.googleusercontent.com/Y5CPkVdogEDBjaBX0BuuwO69-6ouxVf6WgqX8E9G8JulD0vw8OWezwPAvwqbTS0xBYIzPfqNlbp_4G8NRZwUeS0c-55ptopxNzKHK0K9tlG4Fnw8QDIlwhRcjAyDRzHfGGjCY-uS" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="206" /></span></div>
<h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 20pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tercer paso: ¿Qué operaciones debemos auditar?</span></h1>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">El tercer paso no está orientado a la estructura de la base de datos, sino a las operaciones hechas sobre esta estructura. Sucede que en muchos casos no es necesario auditar todas las operaciones sobre la tabla, sino sólo aquellas que son significativas.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">En las últimas versiones de K2BAudit, la configuración de fábrica evita algunas operaciones no significativas: las operaciones “update” que no provocan cambios en los datos auditados no son registradas (si es necesario, puede cambiarse esta configuración). </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Más allá de esta optimización, el desarrollador puede determinar en muchos casos que algunas operaciones no deben ser auditadas. Algunos criterios pueden estar asociados a:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tablas donde las modificaciones pueden ser realizadas por procesos automáticos o manualmente por el usuario. Muchas veces sólo vale la pena auditar las operaciones manuales. Por ejemplo, si se tiene una tabla de “Asientos Contables”, podrían auditarse sólo las operaciones manuales sobre la tabla, pero no los asientos generados por el sistema.</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tablas donde sólo se interesa auditar operaciones sobre registros que cumplan determinada condición. Por ejemplo, auditar sólo los productos con un precio mayor a un umbral determinado, o auditar las compras para productos de determinado tipo.</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Para esto, puede usarse la </span><a href="http://wiki.k2btools.com/k2btools/servlet/hwikibypageid?20902" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">auditoría condicional</span></a><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. Usando esta funcionalidad, el desarrollador puede definir condiciones que determinarán si una determinada operación debe ser auditada o no dependiendo de los datos involucrados en la operación. Para configurar esto, se deben utilizar las propiedades Audit <Insert|Update|Delete>Condition que aparecen en la transacción GeneXus.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="220" src="https://lh3.googleusercontent.com/c1Cfpb3-sdCTI44YH6xdZ62j347rOsPsiUcnIwRkxhRhaV6FcqkPI9EOIszqF0FE1pr9WEqZXCtItyyXPH8mQT5sI8cmKRlRKdaNR3ylEZMIewzDUfgTBNa_6nNOC7wPFemHyQvk" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="378" /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Propiedades auditoría condicional</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Si se agrega un valor a esta propiedad, la operación es auditada únicamente cuando se cumple la condición. Para operaciones de update es posible referenciar a los valores anteriores y posteriores de cada modificación. Por más información sobre el uso de auditoría condicional puede leer </span><a href="http://wiki.k2btools.com/k2btools/servlet/hwiki?Using+K2BAudit+Conditional+Audit," style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">aquí</span></a></div>
<h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 20pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Conclusión</span></h1>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Manejar grandes volúmenes de registros de auditoría puede generar complicaciones. K2BAudit ofrece soluciones para mitigar este problema, disminuyendo la demanda de espacio en disco de estos registros.</span></div>
<span style="font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">En caso de dudas, o comentarios, estamos disponibles en </span><a href="mailto:support@k2btools.com" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">support@k2btools.com</span></a><span style="font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">.</span>Anonymoushttp://www.blogger.com/profile/14144231318575488980noreply@blogger.com0tag:blogger.com,1999:blog-1703807005122508259.post-44731028843783344592017-03-08T06:53:00.000-08:002017-03-08T06:57:23.811-08:00Búsquedas potentes y simples con K2BToolsEn el mundo de hoy el éxito de las aplicaciones no dependen únicamente de que cumplan con determinados requerimientos funcionales sino que además tienen que tener una excelente experiencia de usuario. K2BTools apoya a los desarrolladores para que las aplicaciones generadas tengan una excelente experiencia de usuario.<br />
<br />
Un requerimiento importante que influye en la experiencia de usuario es que el usuario pueda encontrar de forma sencilla la información que ofrece nuestra aplicación. Así K2BTools nos ayuda brindándonos potentes búsquedas de manera simple, que si se tuvieran que desarrollar directamente en GeneXus serían muy costosas de programar.<br />
<br />
En este artículo analizaremos como K2BTools nos puede ayudar a proporcionarle al usuario final, muy buenos mecanismos de búsqueda. Para esto vamos a analizar los diferentes tipos de filtros.<br />
<br />
<h3>
Filtros estáticos</h3>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
Los filtros estáticos son generados por K2BTools desde sus primeras versiones y resuelven correctamente el escenario en el cual el usuario sabe en qué entidad va a buscar la información, y cuando es muy común que los usuarios en la mayoría de los casos vayan a filtrar por un conjunto determinado de filtros.</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZKH1-my_ACWPMkBJXpq8hkd_NFonsItl8PPwN-uC2c0MN0b25ZHUwwuLpOImWxONDII41lJj_27ICAYNWvxEHy9DqOu4vCEblovBpFo3HI2NCnGyKm4StV5qgtA1E78d-yZQpIy8J7XQ/s1600/FiltroEst%25C3%25A1tico.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="249" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZKH1-my_ACWPMkBJXpq8hkd_NFonsItl8PPwN-uC2c0MN0b25ZHUwwuLpOImWxONDII41lJj_27ICAYNWvxEHy9DqOu4vCEblovBpFo3HI2NCnGyKm4StV5qgtA1E78d-yZQpIy8J7XQ/s320/FiltroEst%25C3%25A1tico.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Filtro estático visualización</td></tr>
</tbody></table>
<br />
<br />
<h4>
Especificación en K2BTools</h4>
<div>
Los filtros estáticos se especifican de manera muy sencilla utilizando el nodo filters y definiendo una variable del filtro por cada filtro que se desee visualizar.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrioMUXZO98DjfQl6xVJ4OdN1-F8_vlhsyzFgCC-JrrRZXs_iniJLtztL7gJ1vdEzjEfZtG-vxC4w2WkIDpzDayhOjwET_bkx9zdy6-m-t6fP9A1leZ3n7AiXEOQaQmbNVXB8YysaaWzA/s1600/FiltroEstaticoYDefinicion.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrioMUXZO98DjfQl6xVJ4OdN1-F8_vlhsyzFgCC-JrrRZXs_iniJLtztL7gJ1vdEzjEfZtG-vxC4w2WkIDpzDayhOjwET_bkx9zdy6-m-t6fP9A1leZ3n7AiXEOQaQmbNVXB8YysaaWzA/s400/FiltroEstaticoYDefinicion.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Filtro estático con su definición</td></tr>
</tbody></table>
<div>
Para cada filtro debe definirse la condición asociada que debe agregarse al grid, y puede definirse la descripción y el Control Info para el campo. En la mayoría de los casos, toda esta información es inferida automáticamente a partir de la definición del atributo en que está basado el filtro.<br />
<br /></div>
<h3>
Búsquedas full text search</h3>
<div>
Este tipo de búsquedas resuelven de manera sencilla el escenario en el cual el usuario debe buscar determinada información, pero no sabe en qué entidad buscar pues no tiene conocimiento de dónde ubicar esa información, o no quiera insumir tiempo buscando entre las opciones del menú de la aplicación.<br />
<br />
En lugar de ingresar al Work With asociado a la entidad, y utilizar los filtros presentes en el Work With, el usuario puede ingresar el valor que quiere utilizar en la búsqueda en un campo presente en el header de la aplicación, y la búsqueda retornará todos los registros de la aplicación que contengan ese valor.<br />
<br /></div>
<div>
En el ejemplo debajo, el usuario está buscando Montevideo, y ahí le aparece como resultado la ciudad Montevideo y todos los clientes que viven en Montevideo. </div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4eAIbxPpyc9ab-2KpnwTI3IqTYPi_qNUPLJgujGjlr38uAWnt4C-fPGP6vbBYTk5RsZPmgKNqorf7fmS0lJuJMYjhdbtW_Xqk4BEXWZOtgijPw1jctnS8r-CYt4us1xGp8pzK-T2dVBc/s1600/FiltroFullTextSearch.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4eAIbxPpyc9ab-2KpnwTI3IqTYPi_qNUPLJgujGjlr38uAWnt4C-fPGP6vbBYTk5RsZPmgKNqorf7fmS0lJuJMYjhdbtW_Xqk4BEXWZOtgijPw1jctnS8r-CYt4us1xGp8pzK-T2dVBc/s400/FiltroFullTextSearch.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Búsqueda full text search.</td></tr>
</tbody></table>
<div>
<h4>
Especificación en K2BTools</h4>
</div>
<div>
Para especificar esto en K2BTools el usuario simplemente tiene que activar la propiedad "Searchable" del nodo "Transaction" en el patrón Entity Services. Una vez activada esta propiedad el desarrollador puede configurar qué imagen se mostrará en el resultado, cuál será su título, y cuál será el texto mostrado en el resumen.</div>
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQfU3YA0ku9su93_GgUNAOOsuIojeRwhEW4HKNrY3zd-D4J5Xu-ZMtCGLmRy9ACKPTIe3lnW56_hmvcjjzF4QDRgigLimSaG0fUbiKStpU4yoEg3CkpdEygi6NmpL_QlzL1wPYe4n2PS0/s1600/FiltrosFullTextSearchYEspecificacion.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="75" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQfU3YA0ku9su93_GgUNAOOsuIojeRwhEW4HKNrY3zd-D4J5Xu-ZMtCGLmRy9ACKPTIe3lnW56_hmvcjjzF4QDRgigLimSaG0fUbiKStpU4yoEg3CkpdEygi6NmpL_QlzL1wPYe4n2PS0/s400/FiltrosFullTextSearchYEspecificacion.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Especificación filtros full text search<br />
<br /></td></tr>
</tbody></table>
<h3>
Filtros Avanzados</h3>
<div>
Estos filtros son útiles cuando los filtros estáticos crecen mucho en número, o cuando diferentes usuarios requieren filtros diferentes para crear búsquedas adaptadas a sus necesidades. Como no todos los filtros son necesarios siempre, algunos de ellos pueden incluirse en esta sección de filtros avanzados.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwBNOMM5kRNQqX4lV3uB8-MebfGZmCq-Qbx_SROi7IZY1TrcHJlfTu2_orVN2ZR67tkC3CWE5MCkVH8szVj3YZW79-tCgnTwowl8IEx9RCxCNTBODTwVFVGhawKuJApKakr7dpVN9ySJo/s1600/AF_Image.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="155" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwBNOMM5kRNQqX4lV3uB8-MebfGZmCq-Qbx_SROi7IZY1TrcHJlfTu2_orVN2ZR67tkC3CWE5MCkVH8szVj3YZW79-tCgnTwowl8IEx9RCxCNTBODTwVFVGhawKuJApKakr7dpVN9ySJo/s320/AF_Image.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Filtros avanzados</span></div>
<br />
<div>
<h4>
Especificación en K2BTools</h4>
</div>
<div>
Para especificar estos filtros es necesario definir una sección de filtros avanzados e incluir todos los filtros en esta sección.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSp6CXdFuzTfuVwJ-N1TivZ7ITU9ehiXKsLaD90uS31t71IMhdKIj8LTF3rL2OkUnI92x_amgz2hXKbwcYfk3o4TATZpW5Ay-FnE5_mu3YMtku5SOao1aicBmthtHYGKy5aLExzX59XUU/s1600/AF_Spec.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSp6CXdFuzTfuVwJ-N1TivZ7ITU9ehiXKsLaD90uS31t71IMhdKIj8LTF3rL2OkUnI92x_amgz2hXKbwcYfk3o4TATZpW5Ay-FnE5_mu3YMtku5SOao1aicBmthtHYGKy5aLExzX59XUU/s1600/AF_Spec.png" /></a></div>
<div style="text-align: center;">
<span style="font-size: x-small;">Especificación en K2Tools</span></div>
<h3>
</h3>
<h3>
Filtros Múltiples</h3>
<div>
En muchos casos, el usuario final quiere obtener los resultados para varios valores posibles de un filtro. Por ejemplo, en lugar de querer ver los clientes de un país, puede querer ver los clientes de un conjunto de países. Para estos casos en K2BTools incluimos los llamados filtros multiples.</div>
<div>
<br /></div>
<div>
Dentro de estos filtros, existen dos variantes: "Multiple Combo", y "Tags Collection".</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIwTJfr8Ssr4ge-OV0yWZpq6WIp0vLuXGo0GgFCumsc1cm0QW91FiuDmU0EWFeWmoXJ0k_8EeEgd6vE0K3BDL_r9V7qDCPa3auZ35gwnXcUbua-awBvFIrfhqCSczJ2r8y1I5OUxdK5_A/s1600/MultipleCombo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="227" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIwTJfr8Ssr4ge-OV0yWZpq6WIp0vLuXGo0GgFCumsc1cm0QW91FiuDmU0EWFeWmoXJ0k_8EeEgd6vE0K3BDL_r9V7qDCPa3auZ35gwnXcUbua-awBvFIrfhqCSczJ2r8y1I5OUxdK5_A/s320/MultipleCombo.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Filtro Multiple Combo</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiZwNmMnXR-b10K0mt_jiDgqqTmKqBO5Qx_YMgoT9ZQvfFnVvvm3V0fNVwEz_VCNpv6Mq2RbuxcQyFPiZAj7nnf1wGo32bP5IROSz2jVf0X8TgVe9P92XlDL23hNgea0z1N0atPDpwJTY/s1600/TagsColleciton.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiZwNmMnXR-b10K0mt_jiDgqqTmKqBO5Qx_YMgoT9ZQvfFnVvvm3V0fNVwEz_VCNpv6Mq2RbuxcQyFPiZAj7nnf1wGo32bP5IROSz2jVf0X8TgVe9P92XlDL23hNgea0z1N0atPDpwJTY/s320/TagsColleciton.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Filtro Tags Collection</span></div>
<h4 style="clear: both; text-align: left;">
Especificación en K2BTools</h4>
<div>
Para usar este tipo de filtros se deben configurar algunas propiedades en el nodo Filter. Lo principal, es colocar la propiedad Filter Type en "Multiple", y usar la propiedad "Multiple Filter Type" para elegir la variante deseada. Dependiendo de la variante, aparecerán más propiedades para personalizar el filtro.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAC77gf7RuWHP4biEeWpuZpC-xzat4ydYk9F89zFAqMNirW_8qm0NEcLj9LEHRuZ9G3ric7sZ7Mz9n353yMiwz_cWe7W6pmtUqa10NrjkayQebeo0WGbtO11zBI0eLUkV5ptdVGPMshpk/s1600/MultipleFilter.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="155" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAC77gf7RuWHP4biEeWpuZpC-xzat4ydYk9F89zFAqMNirW_8qm0NEcLj9LEHRuZ9G3ric7sZ7Mz9n353yMiwz_cWe7W6pmtUqa10NrjkayQebeo0WGbtO11zBI0eLUkV5ptdVGPMshpk/s320/MultipleFilter.PNG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Configuración Multiple Filter</span></div>
<div class="separator" style="clear: both; text-align: left;">
Ver más información <a href="http://wiki.k2btools.com/k2btools/servlet/hwikibypageid?20816">aquí</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h3>
String Search</h3>
<div>
Si bien tener muchos filtros ofrece mucha potencia a la hora de definir la búsqueda a realizar, en algunos casos el usuario precisa algo más simple. Ya mostramos un ejemplo en este sentido, cuando vimos el "Universal Search". Otro ejemplo está en los "String Search" filters. Lo que proponen estos filtros es simplificar algunas interfaces y, en lugar de colocar varios filtros independientes, colocar un único filtro que opere sobre varios atributos. </div>
<div>
<br /></div>
<div>
Es decir, cuando el usuario coloca un valor en este filtro, se mostrarán resultados que contengan ese valor en al menos uno de los atributos configurados en el filtro.</div>
<div>
<br /></div>
<div>
<h4 style="clear: both;">
Especificación en K2BTools</h4>
</div>
<div>
Para definit un filtro de este tipo en K2BTools, debe colocarse el valor "StringSearch" en la propiedad "FilterType". Una vez hecho esto, aparecerá la propiedad "Condition Attributes", donde el desarrollador puede especificar cuáles son los atributos que deben intervenir en la búsqueda.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUMkkcRaotkBZ0VF0LHtlrdrLvvlorfSR_09HsFWIvBZFw3EvhkCrTCK3s1dDEJGHiovf-DwS7SXG_nLymdVAJ1_R3nIDx0JUzDtkoulgQIrtPgIiXj-nelN3U8ASP5U9MQMzJBh2eFiU/s1600/StringSearch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUMkkcRaotkBZ0VF0LHtlrdrLvvlorfSR_09HsFWIvBZFw3EvhkCrTCK3s1dDEJGHiovf-DwS7SXG_nLymdVAJ1_R3nIDx0JUzDtkoulgQIrtPgIiXj-nelN3U8ASP5U9MQMzJBh2eFiU/s400/StringSearch.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Especificación de filtros String Search</span></div>
<h3 style="clear: both; text-align: left;">
Esta historia no termina</h3>
<div>
En K2BTools seguimos trabajando para agregar más tipos de filtros a nuestras herramientas. Te gustaría ver un nuevo tipo de filtros en la próxima versión? Escribinos a <a href="mailto:info@k2btools.com">info@k2btools.com</a>.</div>
<div>
<br /></div>
<div>
Hasta la próxima!</div>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/08947670438445313847noreply@blogger.com4tag:blogger.com,1999:blog-1703807005122508259.post-29355572429540186752015-12-21T11:17:00.001-08:002017-02-23T09:50:29.996-08:00Accediendo a una aplicación<div style="background-color: white; color: #222222;">
<div style="text-align: justify;">
<span style="font-family: inherit;">El menú es una forma común de acceso a las aplicaciones Web. La construcción de un menú para un desarrollador GeneXus implica el desarrollo de un user control, algo que no es tarea sencilla, o la descarga de un user control hecho por un tercero. Una vez que se tiene el user control también se tiene que trabajar en la codificación de un largo y tedioso procedimiento de carga, en el que muchas veces se cometen errores, que hasta incluso pueden poner en juego la seguridad de nuestra aplicación. </span></div>
</div>
<div style="background-color: white; color: #222222;">
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span></div>
</div>
<div style="background-color: white; color: #222222;">
<div style="text-align: justify;">
<span style="font-family: inherit;">K2BTools, buscando simplificarle esta tarea al desarrollador, incluyó en la versión 8.1 un menú Responsive, que es cargado desde un patrón, para que nunca más se tenga que preocupar por la creación o descarga de este tipo de user controls y la escritura del procedimiento de carga. </span></div>
</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif0HT7IPJq9L4vZyeuyxYSPhNgeGR2vPm0OJg6ptQNlJYU0iNwbWbk1MVouHOYEBSSQ603Fq0ILQeUXvALSXqDtMY-u0la8Thnhv3_gY0wGm6n-HvVxFr-jRM8LmTbxYLMsIL3lrIGiU0/s1600/unnamed+%25282%2529.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif0HT7IPJq9L4vZyeuyxYSPhNgeGR2vPm0OJg6ptQNlJYU0iNwbWbk1MVouHOYEBSSQ603Fq0ILQeUXvALSXqDtMY-u0la8Thnhv3_gY0wGm6n-HvVxFr-jRM8LmTbxYLMsIL3lrIGiU0/s320/unnamed+%25282%2529.png" width="250" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: Georgia, Times New Roman, serif;">K2BAccordionMenu</span></td></tr>
</tbody></table>
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">
</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">
<br /></div>
<div style="background-color: white; color: #222222;">
<div style="font-size: 12.8px;">
<div style="text-align: justify;">
<span style="font-family: inherit;">K2BAccordionMenu, es un menú multinivel vertical que brinda como facilidad de uso, la posibilidad de ser cargado de manera automática desde un nuevo patrón, el patrón <span class="il">K2BMenu</span>.</span></div>
</div>
<div style="font-size: 12.8px;">
<div style="text-align: justify;">
<span style="font-family: inherit;">Esto trae como ventaja que el desarrollador no tendrá que programar la carga del menú.</span></div>
</div>
<div style="font-size: 12.8px;">
<div style="text-align: justify;">
<span style="font-family: inherit;">Una de las premisas de K2BTools es la seguridad, por tanto al ser la carga de menú código generado, ya se invocarán los procedimientos de seguridad de manera automática para que solo aparezcan las opciones que el usuario tiene permisos para ver.</span></div>
</div>
<div style="font-size: 12.8px;">
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span></div>
</div>
<div style="font-size: 12.8px;">
<div style="text-align: justify;">
<span style="font-family: inherit;">K2BAccordionMenu permite agregar imágenes para cada nivel e item, además de permitir configurar que opciones son visibles según el tamaño del dispositivo en el que se está visualizando.</span></div>
</div>
<div style="font-size: 12.8px;">
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span></div>
</div>
<div style="font-size: 12.8px;">
<div style="text-align: justify;">
<span style="font-family: inherit;"><br clear="all" /></span></div>
<div>
<div style="text-align: justify;">
<span style="font-family: inherit;">En K2BTools seguimos trabajando para simplificar la construcción de aplicaciones con GeneXus, tomando como foco la productividad, experiencia de usuario y seguridad. </span></div>
</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/08947670438445313847noreply@blogger.com2tag:blogger.com,1999:blog-1703807005122508259.post-30832987903280612342014-10-14T07:06:00.000-07:002014-10-14T11:19:28.255-07:00Responsive Web Design con K2B Tools<h4 style="text-align: justify;">
<b>El acceso a la Web desde dispositivos móviles está en permanente crecimiento, por esto es importante que nuestras aplicaciones web se adapten de forma correcta a diferentes dispositivos para lograr una buena experiencia de usuario.</b></h4>
<div style="text-align: justify;">
<br /></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGbCz8OJueGvpZ1Xhu-HLBAl7dwfAaUXG_tw9_152XR4alC_IMS67fOPagQL7XPo_wHyjGZ5MyTPNRK19abWHbAeeOPVSah7Re03mR0uiPye6-CIxco1LhIMCatrk7T0VFBsA94iil-x4/s1600/ResponsiveWebDesign.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: justify;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGbCz8OJueGvpZ1Xhu-HLBAl7dwfAaUXG_tw9_152XR4alC_IMS67fOPagQL7XPo_wHyjGZ5MyTPNRK19abWHbAeeOPVSah7Re03mR0uiPye6-CIxco1LhIMCatrk7T0VFBsA94iil-x4/s1600/ResponsiveWebDesign.png" height="168" width="320" /></a><br />
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Con este objetivo GeneXus en su versión Evolution 3, implementó el <a href="http://wiki.genexus.com/commwiki/servlet/hwiki?Toc%3AResponsive+Web+Design+in+GeneXus">Responsive Web Design (RWD)</a>, que consiste en que nuestros web panels se adapten al tamaño de pantalla del dispositivo desde el cual se accede.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
<b><br /></b></div>
<h3 style="text-align: justify;">
<b><span style="color: #666666;">¿Cómo implementó GeneXus el Responsive Web Design?</span></b></h3>
<div>
<div style="text-align: justify;">
GeneXus desarrolló un nuevo editor para Web Forms, muy similar al que se usa para Smart Devices. Dicho editor es un <a href="http://wiki.genexus.com/commwiki/servlet/hwiki?Web+Abstract+Editor,">editor abstracto.</a> <b>Únicamente usando este editor</b>, es posible aprovechar las nuevas funcionalidades de GeneXus para generar aplicaciones responsive.</div>
</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWZ3tWyUF0z9bfciuLgmwRmJX9pEOFezHA_plgTaTCghpj5iup7qDVg9-Bou-hDi0wp8H7ucSKO4ZqugXuIUOvVX2kJyml2nlncvFTiqIoRe-5Z7c_S3idndJV-TmheDJlPB3buA1DqTQ/s1600/AbstractWebForm.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: justify;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWZ3tWyUF0z9bfciuLgmwRmJX9pEOFezHA_plgTaTCghpj5iup7qDVg9-Bou-hDi0wp8H7ucSKO4ZqugXuIUOvVX2kJyml2nlncvFTiqIoRe-5Z7c_S3idndJV-TmheDJlPB3buA1DqTQ/s1600/AbstractWebForm.png" height="282" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para que nuestra aplicación sea responsive GeneXus hace uso del framework <a href="http://getbootstrap.com/">bootstrap</a>.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
El desarrollador GeneXus no tiene que conocer este framework, ya que su uso está encapsulado en GeneXus.</div>
<div style="text-align: justify;">
Sin embargo, el desarrollador si deberá conocer los conceptos agregados en GeneXus para realizar esta abstracción: <a href="http://wiki.genexus.com/commwiki/servlet/hwiki?Responsive+Table,">responsive tables</a> y <a href="http://wiki.genexus.com/commwiki/servlet/hwiki?Conditional+Class+Properties+for+Themes">clases del tema condicionales</a>.</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<h3>
<b><br /></b></h3>
<h3>
<b><br /></b></h3>
<h3>
<b><span style="color: #666666;">¿Qué necesitamos para adoptar Responsive Web Design con GeneXus?</span></b></h3>
</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih4aLGOESqUdjksePc_ZbSXs1wL0Eue4DVbUVwgrkmNAB0ZncrKFBvNg-midVWKJrWGJlvMNxxgZ1KV8tZgyjkUlv2MGQwNzp_Ia_3uVirRK9Ph_VENh7zcK-gpTczr6KHgGm5hTbi9eo/s1600/Adopci%C3%B3n+Responsive.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih4aLGOESqUdjksePc_ZbSXs1wL0Eue4DVbUVwgrkmNAB0ZncrKFBvNg-midVWKJrWGJlvMNxxgZ1KV8tZgyjkUlv2MGQwNzp_Ia_3uVirRK9Ph_VENh7zcK-gpTczr6KHgGm5hTbi9eo/s1600/Adopci%C3%B3n+Responsive.png" height="170" width="320" /></a></div>
<br /></div>
<div>
<div style="text-align: justify;">
Un desarrollador GeneXus que quiere adoptar esta nueva funcionalidad, y que no usa K2BTools, deberá aprender a usar la nueva tecnología, esto es: el nuevo editor, las responsive tables y los temas condicionales. De esta forma, si vamos a conenzar un proyecto nuevo, deberemos usar este nuevo paradigma para desarrollarlo. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Pero si tenemos un proyecto que ya está en desarrollo o terminado, no hay una forma automática de migrar del paradigma anterior (no responsive) al nuevo, ya que no hay ninguna migración entre el viejo editor de webforms y el nuevo. La solución es ir haciendo una adopción progresiva: lo nuevo desarrollarlo en el nuevo editor de forma de aprovechar la funcionalidad de responsive y lo viejo hacerlo de nuevo. Lo malo de este enfoque, además de que hay que construir los web panels de nuevo, es que mientras se esté migrando se pierde la uniformidad en el sistema, ya que algunas pantallas serán responsive y otras no. </div>
</div>
<br />
<h3>
<b><span style="color: #666666;">¿Qué aporta K2B Tools en este escenario?</span></b></h3>
<div>
<div style="text-align: justify;">
Cuando se trabaja dentro de K2BTools, no se utiliza el editor de WebForm de GeneXus sino que se especifica la interfaz usando la instancia de patterns o del WebPanelDesigner (WPD).</div>
</div>
<div style="text-align: justify;">
En tal caso, el desarrollador se abstrae de en qué plataforma va a estar generando sus objetos.</div>
<div style="text-align: justify;">
La migración a Responsive Web Design es un excelente ejemplo de las ventajas que esto ofrece: gracias al alto nivel de abstracción que brinda K2BTools la instancia casi no sufrió cambios. Sólo fue necesario agregar algunas propiedades que permiten al desarrollador detallar cómo se deben ver los elementos en diferentes tamaños de pantalla.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<u>Las propiedades agregadas son las siguientes:</u></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>1. Propiedades "Show In *"</b></div>
<div style="text-align: justify;">
GeneXus en su implementación de RWD, agrupa los dispositivos en cuatro categorías según el tamaño de pantalla: Extra small (celulares), Small , Medium (tabletas), Large (desktop).</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Haciendo uso de esto, una de las propiedades que se agregan a nivel de atributos en grilla y acciones es la propiedad show in. Esto indica si ese campo se va a visualizar en determinado dispositivo o no. En la instancia predeterminada, el D.A. es lo único que se ve en extra small y el resto de los atributos son visibles en el resto de los dispositivos.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1q2l072qu08IujmfUAoKj0bOWOoYLl3wHHNi6s3ToTWF-lgVUE8A3h-vyoohnPNPJFMXg4Bmazssvks94O0V0E8l3E8RLtwhxIZJPeX2kscloK8OUPS55eDYqG0zOjQlXEEmDYGERang/s1600/PropiedadShowIn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1q2l072qu08IujmfUAoKj0bOWOoYLl3wHHNi6s3ToTWF-lgVUE8A3h-vyoohnPNPJFMXg4Bmazssvks94O0V0E8l3E8RLtwhxIZJPeX2kscloK8OUPS55eDYqG0zOjQlXEEmDYGERang/s1600/PropiedadShowIn.png" height="276" width="640" /></a></div>
<br />
<br />
Aquí se muestra un ejemplo de una grilla en Extra Small.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqiCnc92H50e4naOv6UQ4kGQa4utz7qk25QiGgeVZIAqn0zYpHZx-2R2c7Rxhuqi96nRygqx_frxjgBUE7eHADoIStfKbjogb2bdjlHPwPgvniZt0M7H7VGnxRZK_mV7N5iszZbd09uEw/s1600/VistaExtraSmall.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqiCnc92H50e4naOv6UQ4kGQa4utz7qk25QiGgeVZIAqn0zYpHZx-2R2c7Rxhuqi96nRygqx_frxjgBUE7eHADoIStfKbjogb2bdjlHPwPgvniZt0M7H7VGnxRZK_mV7N5iszZbd09uEw/s1600/VistaExtraSmall.png" height="320" width="175" /></a></div>
<br />
Y la misma grilla cuando se ve en otro dispositivo.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXpLL6W17x121qYncVUVVeGGNOUpia483mSBA-9YG08WvWi8vEwoudEPITamb7nz_ZKmcDftL5JM9o_2-YJczdPpmEsIQ5GCFbIhOAL_zFrnjcgWmLzH51kz3Zv6iL31mPiL9sK1-IZU0/s1600/VistaDesktop.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXpLL6W17x121qYncVUVVeGGNOUpia483mSBA-9YG08WvWi8vEwoudEPITamb7nz_ZKmcDftL5JM9o_2-YJczdPpmEsIQ5GCFbIhOAL_zFrnjcgWmLzH51kz3Zv6iL31mPiL9sK1-IZU0/s1600/VistaDesktop.png" height="200" width="400" /></a></div>
<br />
<br />
<b>2. Propiedades "Responsive Sizes"</b><br />
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiedvZHPoNO_-MpHlfukXikOy4c1sH6Fb8W4eL49b2msrX_KRMueUXIC-15RzjjxVZsmqP5dZ491NZ-cc7Q5-3qB2MTJkD4qH5L2dkkh4s7SitBsvVvFCVt1Kr-c9ndBkFsoVW_vNrRKNY/s1600/RSI.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiedvZHPoNO_-MpHlfukXikOy4c1sH6Fb8W4eL49b2msrX_KRMueUXIC-15RzjjxVZsmqP5dZ491NZ-cc7Q5-3qB2MTJkD4qH5L2dkkh4s7SitBsvVvFCVt1Kr-c9ndBkFsoVW_vNrRKNY/s1600/RSI.png" height="127" width="400" /></a></div>
<b><br /></b>
<span id="goog_1565111219"></span><span id="goog_1565111220"></span><br />
<div style="text-align: justify;">
Una responsive table es una tabla que se adapta según el tamaño del dispositivo. Esto permite, por ejemplo, que cuando se visualizan datos en un celular los controles estén en filas diferentes y cuando se visualizan desde un desktop se muestren dentro de una misma fila:</div>
<div style="font-weight: bold; text-align: justify;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioU2XrgTCeuV-98wHNnxUurKixpEhFysEkv-ljcAQbLab9QkLspHD0AexOV2Jm5B0Nsw3DcFAlj-Z8G4WkYBtGlVo_Mi_b1JeGyNykD_-2uYu329um_Q0u4AzY_irAC_bNIkqar1_odug/s1600/Celular.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioU2XrgTCeuV-98wHNnxUurKixpEhFysEkv-ljcAQbLab9QkLspHD0AexOV2Jm5B0Nsw3DcFAlj-Z8G4WkYBtGlVo_Mi_b1JeGyNykD_-2uYu329um_Q0u4AzY_irAC_bNIkqar1_odug/s1600/Celular.png" height="108" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<b>Visualización en un celular</b></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7owZ0toJGTvtPC0VQcukocKq9sKX-QKIxSWpMJ6Wh5KeVEZli4v3jxkyF_CgsAUnn7E-SpmnPn1EWdvJ4oh4Dv694_i4oPZ8N7V2pfNiSI9GPwqtl93asOtX2972xPmggHNbDNzNPX18/s1600/Desktop.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7owZ0toJGTvtPC0VQcukocKq9sKX-QKIxSWpMJ6Wh5KeVEZli4v3jxkyF_CgsAUnn7E-SpmnPn1EWdvJ4oh4Dv694_i4oPZ8N7V2pfNiSI9GPwqtl93asOtX2972xPmggHNbDNzNPX18/s1600/Desktop.png" height="28" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<b>Visualización en un desktop</b></div>
<br />
<br />
<div style="text-align: justify;">
Esta propiedad aparece en cada nodo contenedor del pattern y Web Panel Designer, por ejemplo Tab, Grupo, Línea Separadora, Columna, etc.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Usando estas propiedades es posible indicar el porcentaje que ocupa cada campo en la pantalla, en qué filas estarán agrupados, y si son visibles o no para cada categoría de dispositivos.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
K2BTools contiene lógica específica para que el valor default de estas propiedades sea el deseado en la mayoría de los casos, por lo que nuestro objetivo es que el uso de estas propiedades sea esporádico para hacer lo necesario para adaptar las interfaces a tamaños de pantalla pequeños.</div>
<b><br /></b>
<br />
<h3>
<b><span style="color: #666666;">¿Cómo genero responsive con K2BTools?</span></b></h3>
<div>
<div style="text-align: justify;">
Para generar responsive con K2BTools, la forma más sencilla es decirle a GeneXus que genere responsive. Esto se hace en las propiedades del modelo GeneXus, en la propiedad "Web Form Defaults".</div>
</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipQowVtvpYVeUFA5Zjw3yyPFpg05FDaBbd-gY__g_qYLP3n9nbkCIW6UMyXSg4Wkxad5gmFSim-qSVjvtn76rHd2CNvv1CeajPZacPSt1UQVoijp7z0a82Xw1Vvwb8KMuzHmQojo7MpSo/s1600/WebFormsDefault.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipQowVtvpYVeUFA5Zjw3yyPFpg05FDaBbd-gY__g_qYLP3n9nbkCIW6UMyXSg4Wkxad5gmFSim-qSVjvtn76rHd2CNvv1CeajPZacPSt1UQVoijp7z0a82Xw1Vvwb8KMuzHmQojo7MpSo/s1600/WebFormsDefault.png" height="141" width="320" /></a></div>
<br />
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Una vez que se hace esto, automáticamente la configuración de K2BTools se actualizará para usar esta funcionalidad.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Por otro lado, en el nodo raíz de las instancias de patterns y WebPanelDesigner existe una nueva propiedad "Web Form Defaults". Esta propiedad se podrá modificar por instancia, o web panel generado con el WPD. De esta forma es posible activar la nueva funcionalidad para instancias particulares.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb2APJfjnyfyuyFWcNKAT7lFofMXuNNyp84FXBSxLlcqgnLFZ17svMZx0C2uJsrlqE9qgBjaefu_BqJiV8pUnrQL-K2vragTjzdKG-DighRp8JPRUwkR351gN7px210dyngdYlf6RNRFY/s1600/WebFormDefaultsInstance.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb2APJfjnyfyuyFWcNKAT7lFofMXuNNyp84FXBSxLlcqgnLFZ17svMZx0C2uJsrlqE9qgBjaefu_BqJiV8pUnrQL-K2vragTjzdKG-DighRp8JPRUwkR351gN7px210dyngdYlf6RNRFY/s1600/WebFormDefaultsInstance.png" height="86" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: justify;">
<b>Puntos a tener en cuenta</b></div>
<div style="text-align: justify;">
User Regions: Dado el cambio del editor, lo único que el usuario deberá adaptar manualmente son las <a href="http://wiki.k2btools.com/k2btools/servlet/hwiki?UserRegion,">user regions</a>.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMmBKLBMSMed6Zw-eOYgDk2ojrLzwiNM3LnIt79qUVY-XHfFijLbUt8znLyQ5QHdZyOJ-ocPWN-XMXS3r-B2zT8ZB85KpXb0-5tzdd8gkvlCYCaF_6y55ozYciWrqYpzHSFNzxFUusAVw/s1600/LabelsAbstractEditor.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: justify;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMmBKLBMSMed6Zw-eOYgDk2ojrLzwiNM3LnIt79qUVY-XHfFijLbUt8znLyQ5QHdZyOJ-ocPWN-XMXS3r-B2zT8ZB85KpXb0-5tzdd8gkvlCYCaF_6y55ozYciWrqYpzHSFNzxFUusAVw/s1600/LabelsAbstractEditor.png" height="72" width="320" /></a></div>
<div style="text-align: justify;">
Las user regions siguen estando disponibles para el abstract layout, pero en caso de migración, el usuario deberá agregar nuevamente los controles en dicha región.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
TextBlocks: El otro punto, son los textblocks asociado a las descripciones de los campos. En el editor abstracto, a diferencia de en web, la descripción del campo y el campo son un único control. Por tanto si en alguna parte del código se referenciaba a algunos de los textblocks de la descripción, este código deberá ser adaptado.</div>
<br />
<h3>
<b><span style="color: #666666;">Conclusión</span></b></h3>
<div>
Adoptar RWD trabajando con K2BTools es mucho más sencillo y rápido.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif54zEN6zwLXakQHGBAYGuU44sRQmMgzE8UEAxkKdSFjLFH9Qo7UWkZ4AtjxvbwLqdW3NUxR23QGAM7-QQ3IL-VCundJ7AN-eoLz11-d5YId0M7du_Y2u4oslDjCaLUOHmP6YtS5Kho0c/s1600/Adopci%C3%B3nRWDGXEv3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif54zEN6zwLXakQHGBAYGuU44sRQmMgzE8UEAxkKdSFjLFH9Qo7UWkZ4AtjxvbwLqdW3NUxR23QGAM7-QQ3IL-VCundJ7AN-eoLz11-d5YId0M7du_Y2u4oslDjCaLUOHmP6YtS5Kho0c/s1600/Adopci%C3%B3nRWDGXEv3.png" height="177" width="320" /></a></div>
<br />
<div style="text-align: justify;">
En primer lugar, <b>no deberá capacitarse </b>en aprender lo que es el Abstract Layout ni lo que son las clases condicionales. K2BTools se encargará de generar esa funcionalidad de forma automática.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En un <b>proyecto nuevo </b>la adopción será inmediata pero con una mayor productividad que la adopción manual, ya que rápidamente aplicando los patrones se generaran las nuevas pantallas responsive.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para un <b>proyecto en desarrollo o finalizado</b>, en lugar de una adopción progresiva se tendrá una adopción completa y automática. Simplemente se deberá indicar a K2BTools que genere responsive y automáticamente todo lo generado por K2BTools será responsive.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para un usuario que venía usando el patrón <b>WorkWith de GeneXus, </b> <b>también puede adoptar responsive</b> con K2BTools, gracias a la herramienta de migración de WorkWith a K2BEntityServices que es posible descargar desde <a href="https://marketplace.genexus.com/product.aspx?wwtok2btools,es">aquí</a>.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Con K2BTools uno tiene una adopción sencilla de RWD, el desarrollador se abstrae de la tecnología, se tiene una mayor productividad y de regalo una nueva UI mejorada, cumpliendo con los principios de usabilidad requeridos de forma de lograr aplicaciones con una muy buen expericencia de usuario.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWu2p33vLvAeLamqJa-CD9aGjB_QwWtyDTXyHSKKliFQFLUFKv2wwLWPEv6cuB7D-OX9-LgwUh5oG3kbUuYfGqnaZmt1zF9TpebiM0XOYjUV_zGdOtfv8tJDgJ2inRArXfOCojzfV-hII/s1600/Responsive.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWu2p33vLvAeLamqJa-CD9aGjB_QwWtyDTXyHSKKliFQFLUFKv2wwLWPEv6cuB7D-OX9-LgwUh5oG3kbUuYfGqnaZmt1zF9TpebiM0XOYjUV_zGdOtfv8tJDgJ2inRArXfOCojzfV-hII/s1600/Responsive.png" height="183" width="320" /></a></div>
<br />
<br />
<div style="text-align: justify;">
<b>Puedes descargar la versión de K2B Tools responsive desde <a href="https://marketplace.genexus.com/product.aspx?k2btoolsforevolution3,es">aquí</a></b></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>Por más información sobre Responsive Web Design con K2B Tools les recomendamos <a href="http://www.youtube.com/watch?v=6l_UhWSxv0A&list=UUITX8SPgn82K7oqQuqx1tnA">este video</a> de la charla que dio Federico Dominioni en el GX24.</b></div>
Anonymoushttp://www.blogger.com/profile/08947670438445313847noreply@blogger.com0tag:blogger.com,1999:blog-1703807005122508259.post-32289667316963923952014-05-20T14:31:00.000-07:002014-05-30T07:00:22.022-07:00Be Smooth with K2BTools<br />
<div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;">
<img src="http://www.genexus.com/media/content/image/source0000000865/IMA000178000007199.jpg" height="240" width="320" /></div>
<div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;">
<br />
<br />
<br />
<br /></div>
En este artículo analizaremos el Smooth User Experience, una nueva forma de desarrollar y mejorar la usabilidad de nuestras aplicaciones, y como todo esto puede ser aprovechado usando K2BTools.
Smooth UX es un conjunto de tecnologías que permiten desarrollar con GeneXus aplicaciones con interfaces altamente dinámicas, viendo datos en tiempo real, con componentes que se refrescan en forma independiente, con interfaces más fluidas. Esto permite que las aplicaciones que desarrollemos tengan similares características a las aplicaciones que ya estamos acostumbrados a usar como por ejemplo Facebook, Twitter, Gmail o Google+. Esto es posible gracias a que GeneXus en su versión Evolution 3 ha incorporado un nuevo modelo de eventos y otras características, que mejoran enormemente la experiencia de usuario final y además le hacen más fácil la vida al desarrollador GeneXus.<br />
<br />
<br />
<div>
<b>Nuevo modelo de eventos</b><br />
<b><br /></b>
Usando Smooth UX, el modelo de eventos es mucho más sencillo. Antes, cada vez que se ejecutaba un evento de usuario, se ejecutaba: el start, lectura de variables en pantalla, luego el evento de usuario, refresh y load. Ahora se ejecuta únicamente la lectura de variables y el evento de usuario, minimizando el procesamiento necesario.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVDwuZnaKRtyXhYecwiR2uL1LYs82PkmZjOnn_0FfbEKGj7uvwvJSTa97dLFu9yAcHTfRfqtU2xELmBNKEgxdN5lLVRfq2CD7e5wViEkrP-KJvtHO-AGdE-ERKc9V1hWVEPyiILwTY30M/s1600/EventosdeUsuario.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVDwuZnaKRtyXhYecwiR2uL1LYs82PkmZjOnn_0FfbEKGj7uvwvJSTa97dLFu9yAcHTfRfqtU2xELmBNKEgxdN5lLVRfq2CD7e5wViEkrP-KJvtHO-AGdE-ERKc9V1hWVEPyiILwTY30M/s1600/EventosdeUsuario.png" height="115" width="320" /></a></div>
<br />
<br /></div>
<div>
Esto simplifica la forma en la que se desarrolla en GeneXus.<br />
Si ese evento de usuario, requiere que se recargue una grilla, hay que colocarlo explícitamente utilizando el comando Grid.Refresh(), haciendo que las grillas solo se refresquen si es necesario y además dejando mucho más claro en el código que sucede cuando se ejecuta una acción de usuario.<br />
<br />
Esto trae una consecuencia muy buena en el tráfico de datos. En cada evento de usuario, viaja mucha menos información que en el modelo anterior. Por ejemplo, en el caso de un evento de usuario, el tráfico de subida con el modelo anterior era:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEial4y81BPyUGgJ2YlzVeRmBA6UqK5zPDFBqHMsc_VhtXRnUWUzBI6FZnlg8jG8ANu-PraLcZjDW6v-L9x44vD4SPgP96AQ2CFEUuVx_Lqe0hQtVDWByO4_N8GLusNwlG2cPDNTGqRqMxM/s1600/EventoUsuarioTraficoAnterior.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEial4y81BPyUGgJ2YlzVeRmBA6UqK5zPDFBqHMsc_VhtXRnUWUzBI6FZnlg8jG8ANu-PraLcZjDW6v-L9x44vD4SPgP96AQ2CFEUuVx_Lqe0hQtVDWByO4_N8GLusNwlG2cPDNTGqRqMxM/s1600/EventoUsuarioTraficoAnterior.png" height="208" width="400" /></a></div>
<br /></div>
<div>
mientras que el tráfico con smooth es:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcsiOTh1xJSf7zcF99ghG7vOztTsQnyf6U8dHG84PKqx50Wg6055p_IO1xkDlgfvzwhQrccjYSBBqhpPaEIUgmCWabzQ32PQTVGKmb-JLxkfThOkCFD14GUN4dYkCTvVJ1Nc3IYVXGJh8/s1600/EventoUsuarioSmooth.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcsiOTh1xJSf7zcF99ghG7vOztTsQnyf6U8dHG84PKqx50Wg6055p_IO1xkDlgfvzwhQrccjYSBBqhpPaEIUgmCWabzQ32PQTVGKmb-JLxkfThOkCFD14GUN4dYkCTvVJ1Nc3IYVXGJh8/s1600/EventoUsuarioSmooth.png" height="55" width="320" /></a></div>
<br />
Con este nuevo modelo de eventos en GeneXus vamos a tener menos tráfico (según ARTech hasta un 90% menos), menos procesamiento en el servidor y menos procesamiento en el cliente. Gracias a esto podemos tener aplicaciones más veloces.<br />
Sumado a esto, si de una página se navega a otra con la misma master page, no se refresca la master page sino que se mantiene y solo se refresca la parte que cambia. </div>
<div>
<br /></div>
<div>
<b>¿Cómo adoptar Smooth?</b><br />
<b><br /></b>
A nivel de modelo se cuenta con una propiedad de nombre <i>WebUserExperience</i><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLiUweCRz1lGwTrVpDR8N9YX1cqYOa2531eF6SwDRwIn6l7YeYsMcITkXI27KAAdyxP07L_ITuj36gpJ8pPI-0n0MzHAXRxLrylYW5nGKlv_AdN4lx3fPPuOss0hhBgzmGNIpRwk5QSPA/s1600/WebUserExperienceProperty.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLiUweCRz1lGwTrVpDR8N9YX1cqYOa2531eF6SwDRwIn6l7YeYsMcITkXI27KAAdyxP07L_ITuj36gpJ8pPI-0n0MzHAXRxLrylYW5nGKlv_AdN4lx3fPPuOss0hhBgzmGNIpRwk5QSPA/s1600/WebUserExperienceProperty.png" height="100" width="320" /></a></div>
<br />
<b><br /></b>
Sus valores pueden ser <i>Smooth </i>o <i>Previous version compatible</i>. Con <i>Previous version compatible</i>, el modelo de eventos sigue siendo el mismo que en versiones anteriores de GeneXus. <br />
Cuando se convierte una base de conocimiento de una versión anterior a la nueva, GeneXus toma el <i>Previous version compatible</i> como valor por defecto, mientras que para nuevas bases de conocimiento es <i>Smooth</i>. <b> </b>Esta propiedad se encuentra también a nivel de objeto (webPanels y transacciones) , por lo tanto se pueden tener objetos con <i>Smooth </i>(los nuevos objetos que desarrollemos) y objetos con <i>Previous versions compatible</i>.<br />
<br />
<b>¿Cómo usar Smooth UX con K2BTools?</b><br />
<br /></div>
En la última versión de K2BTools para GeneXus Evolution 3, se soporta Smooth UX, tanto en los patrones como en el WebPanelDesigner. <br />
En los patrones la generación con Smooth UX se activa en el nodo <i>K2BTools->General</i> usando la propiedad <i>WebUserExperience</i>. Por defecto esta propiedad toma el valor de la propiedad WebUserExperience del modelo GeneXus.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIC5R5z9mhJ3FPnzMplHE87ri5pVCH9UW2qvMlUJqn1pRmOXL9fOvpg4DSLpmt5Q3wqwSQZHpvEt616dX_p2iu1XDwAQJdyQ7jdeVKDRagOPXwd0pvAuuO_x431giSqrO_liY3w2zFb-s/s1600/SmoothUXK2BTools.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIC5R5z9mhJ3FPnzMplHE87ri5pVCH9UW2qvMlUJqn1pRmOXL9fOvpg4DSLpmt5Q3wqwSQZHpvEt616dX_p2iu1XDwAQJdyQ7jdeVKDRagOPXwd0pvAuuO_x431giSqrO_liY3w2zFb-s/s1600/SmoothUXK2BTools.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifMuwpi0M5_s2rVqaGvH5pBfHGNcQOwNye7VYGQv8VPOmVX180UlCHysS9Hy0dI9MoMUNNzW5AMdWVxLwkyj0WOokYwqxn9LpT52c1kKNBnhrR0XYIU7ObFVES90ra_dlkYdRPzq3oNNM/s1600/WebUserExperience.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifMuwpi0M5_s2rVqaGvH5pBfHGNcQOwNye7VYGQv8VPOmVX180UlCHysS9Hy0dI9MoMUNNzW5AMdWVxLwkyj0WOokYwqxn9LpT52c1kKNBnhrR0XYIU7ObFVES90ra_dlkYdRPzq3oNNM/s1600/WebUserExperience.png" /></a></div>
En el WebPanelDesigner, se lee la propiedad del WebPanel. Si el WebPanel tiene smooth UX activado, se genera todo usando esa funcionalidad y sino se sigue generando el código de versiones anteriores.<br />
<br />
<b>¿Cómo migrar a Smooth UX con K2BTools?</b><br />
<b><br /></b>
Al estar parado en un mayor nivel de abstracción con K2BTools, en el código estándar generado por los patrones la migración es automática. El único caso que el usuario deberá analizar son las acciones de usuario. En este caso en el nodo action de la instancia del pattern aparecerá una nueva propiedad de nombre RefreshGrid, que indica si luego de ejecutar la acción se refresca la grilla o no. Por defecto, para que todo siga igual, su valor es true pero si ya se sabe que la acción no requiere que la grilla se refresque, se puede modificar para evitar refrescar en forma redundante.<br />
<br />
Sobre el WebPanelDesigner, lo único que se debe tener en cuenta son las subrutinas de usuario asociadas a una acción. En tal caso se deberá analizar si se necesita ejecutar un Grid.Refresh() para refrescar la grilla, o no lo requiere.<br />
<br />
De esta forma de una manera muy fácil y sencilla uno tiene su aplicación migrada al nuevo modelo Smooth, logrando que su aplicación sea más ágil, visualmente atractiva, y que el desarrollador entienda con mayor claridad cómo funciona el modelo de eventos.<br />
<br />
Actualmente agregamos en el marketplace K2BTools for GeneXus Evolution 3 como producto independiente para que puedan probar el funcionamiento de K2BTools con Smooth y para continuar liberando versiones de K2BTools que aprovechan todas las ventajas que da la Evolution 3 de GeneXus. Una vez culminado el proceso de prueba, lo agregaremos como setup dentro del producto K2BTools.<br />
<br />
La versión de K2BTools For Evolution 3 la puden descargar desde <a href="http://marketplace.genexus.com/product.aspx?k2btoolsforevolution3,es">aquí</a><br />
Cualquier sugerencia puede contactarse con el equipo de soporte de K2BTools (<a href="mailto:support@k2btools.com">support@k2btools.com</a>) o escribirnos a través del foro <a href="http://www.k2btools.com/comunidad/foro?es">http://www.k2btools.com/comunidad/foro?es</a><br />
<br />
<br />
Federico Dominioni.Anonymoushttp://www.blogger.com/profile/08947670438445313847noreply@blogger.com2tag:blogger.com,1999:blog-1703807005122508259.post-86004133791563832312013-12-23T08:11:00.001-08:002013-12-23T08:11:19.958-08:00K2BTools en el 2013! <div style="text-align: justify;">
Se termina un nuevo año y con ello queremos compartir con ustedes los acontecimientos y novedades más importantes que han surgido a lo largo de este 2013 aportando a la comunidad de GeneXus y a la innovación en el desarrollo de aplicaciones desde un concepto <i><b>For real business applications.</b></i></div>
<div style="text-align: justify;">
<i><b><br /></b></i></div>
<ul>
<li style="text-align: justify;"><b>Con el comienzo del 2013 se lanzo K2BTools 7.0 .</b></li>
</ul>
<br />
<div style="text-align: justify;">
En este versión una de las principales novedades fue la inclusión del Web Panel Designer dentro del la suite de K2BTools. La herramienta mediante la cual es posible crear Web Panels muy complejos y en muy poco tiempo en GeneXus y lo mejor de todo de manera muy sencilla. Herramienta que fue premiada en el XXIII Encuentro GeneXus 2013 por el aporte a la innovación.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg64hK58QMUG2hyBMefGJxHOmzgkFSPbqJXmykzLcsKh2DDLO28hPpKWEoy-JodH7yta-4Kf5huBer79czEanktw9L7rNpFjjBrEpmPOmmGTwX0nSnx3tUFlok4Ou9hGjYiWxpI1zZwc2I/s1600/10069708303_f324afdeb1_b.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"> </a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg64hK58QMUG2hyBMefGJxHOmzgkFSPbqJXmykzLcsKh2DDLO28hPpKWEoy-JodH7yta-4Kf5huBer79czEanktw9L7rNpFjjBrEpmPOmmGTwX0nSnx3tUFlok4Ou9hGjYiWxpI1zZwc2I/s1600/10069708303_f324afdeb1_b.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"> <img border="0" height="131" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg64hK58QMUG2hyBMefGJxHOmzgkFSPbqJXmykzLcsKh2DDLO28hPpKWEoy-JodH7yta-4Kf5huBer79czEanktw9L7rNpFjjBrEpmPOmmGTwX0nSnx3tUFlok4Ou9hGjYiWxpI1zZwc2I/s200/10069708303_f324afdeb1_b.jpg" width="200" /></a></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjO0jQtsiFTRlVjSj3kW3tMaEnrP944ZlZG5gtIUXbROWdsst7gNFw6C8XZX-IovGUXeueUr_pC_ClJDel76PlqI9dgBdggk4Vk1az-kbnXxRcK6G8EMclpnTn9G4RZAZ6oPHpU6nUX2s/s1600/IMG_2344.JPG" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjO0jQtsiFTRlVjSj3kW3tMaEnrP944ZlZG5gtIUXbROWdsst7gNFw6C8XZX-IovGUXeueUr_pC_ClJDel76PlqI9dgBdggk4Vk1az-kbnXxRcK6G8EMclpnTn9G4RZAZ6oPHpU6nUX2s/s200/IMG_2344.JPG" width="200" /></a><br />
<br />
<br /></div>
<div style="text-align: justify;">
<div style="text-align: justify;">
Otras novedades de la versión 7.0 fue la incorporación de la acción "Add grid from Data Provider" mediante la cual es posible cargar una grilla a partir de un Data Provider de manera muy sencilla. También en esta versión se realizaron mejoras en los filtros logrando desarrollar aplicaciones Multi Tenant de forma más fácil. Se perfeccionó el desarrollo de aplicaciones multi idioma entre otras cosas.</div>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
</div>
<ul>
<li><b>En Septiembre se lanzó K2BTools 7.1.</b></li>
</ul>
<div>
<div style="text-align: justify;">
<b> </b>En esta versión la principal novedad fue la gran mejora en la interfaz del usuario final. La misma está dada por un nuevo look & feel y nuevas funcionalidades que potencian la herramienta. A continuación podemos obsevar algunas imagnes del nuevo tema en donde por ejemplo observamos un WWProducts totalmente mejorado y la vista de una transacción del clientes con la interfaz renovada.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWYOI_KFmXaHs8TrbGYFBajqElk-FSNny4jXo5WWoMwCc4XD_rX8pnVtdnqX-2Tyg09iEiW92U4-c5SOd9q9y4s8240MdM_f3Z5lNX8BJwJRL9op07uibm9_ARCl-GGqu-lCHKLxzS2LM/s1600/Products.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWYOI_KFmXaHs8TrbGYFBajqElk-FSNny4jXo5WWoMwCc4XD_rX8pnVtdnqX-2Tyg09iEiW92U4-c5SOd9q9y4s8240MdM_f3Z5lNX8BJwJRL9op07uibm9_ARCl-GGqu-lCHKLxzS2LM/s400/Products.png" width="400" /></a></div>
<br />
<br /></div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBPipzd0QxO0oMnh5MNiRFUM34hHmSLo7vySUxQQEynM0JQETXpm7Yt4GXIYZDm_S-e__Dy8fJV_zKMI39CJphCIbSFWci3_VJQ1eh6HrRhzJUf3HrSk7hfMs_It3A_lx9zAC4vbJzY40/s1600/Customer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="335" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBPipzd0QxO0oMnh5MNiRFUM34hHmSLo7vySUxQQEynM0JQETXpm7Yt4GXIYZDm_S-e__Dy8fJV_zKMI39CJphCIbSFWci3_VJQ1eh6HrRhzJUf3HrSk7hfMs_It3A_lx9zAC4vbJzY40/s400/Customer.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div style="text-align: justify;">
Además en la versión 7.1 se agregó la posibilidad de seleccionar en tiempo de ejecución qué atributos se desean mostrar en una grilla. También es posible una integración mucho más sencilla de GXQuery y utilizar más controles provistos por GXUI Library. Además de esto se agregó mucha más flexibiliad en el uso del patrón K2BTrnForm, permitiendo agregar web Components, botones de acción, regiones de usuario, atributos requeridos y subniveles en cualquier ubicación.</div>
<div style="text-align: justify;">
<br /></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsyyIZue0DpmWiD3SAVrDx6PfjemEtgoTJ9SD0YZgLnIoU4b8bczrYlTwqWkl3br9v4k9ZmJUbIwHW8V7MRoX0C975BkJERfcCGdlMTCmBEJRQAUGUvoLkDGN2g6P5qwR1IuMq9PiQtcc/s1600/2013-12-20_1509.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: justify;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsyyIZue0DpmWiD3SAVrDx6PfjemEtgoTJ9SD0YZgLnIoU4b8bczrYlTwqWkl3br9v4k9ZmJUbIwHW8V7MRoX0C975BkJERfcCGdlMTCmBEJRQAUGUvoLkDGN2g6P5qwR1IuMq9PiQtcc/s200/2013-12-20_1509.png" width="196" /></a><br />
<div style="text-align: justify;">
Por último destacar la integración con el <a href="http://wiki.k2btools.com/k2btools/servlet/hwiki?Wiki+Home,">wiki</a> de K2B Tools que fue incorporada en esta versión para que el usuario pueda tener la ayuda que necesite directamente desde el IDE GeneXus.</div>
<br />
<div style="text-align: justify;">
<br /></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4DTHOudUtdVburfRiGCDTlbx0bP3ZGd2UJcWb9ZeNQr4erGEkUYs9OVx5lAiTfiDHM4-HJ8HjGEa1YxrvKxVR4XdbaVO09YtLXnwmlB9r4g-YFZoildz0nOliNEFdtK3lxD4WFKk5uak/s1600/2013-12-20_1452.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: justify;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4DTHOudUtdVburfRiGCDTlbx0bP3ZGd2UJcWb9ZeNQr4erGEkUYs9OVx5lAiTfiDHM4-HJ8HjGEa1YxrvKxVR4XdbaVO09YtLXnwmlB9r4g-YFZoildz0nOliNEFdtK3lxD4WFKk5uak/s320/2013-12-20_1452.png" width="257" /></a><br />
<ul>
<li><b>Otra herramienta liberada fue "WWtoK2BTools":</b></li>
</ul>
<div>
<div style="text-align: justify;">
Herramienta que permite convertir WebPanels generados con el Pattern Work With de GeneXus al Pattern K2BEntityServices de K2B Tools. Esta herramienta soporta tanto la conversión individual de cada instancia como la conversión de varias instancias simultáneamente. </div>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Por más información sobre esta herramienta pueden entrar en el siguiente <a href="http://wiki.k2btools.com/k2btools/servlet/hwiki?WW+To+K2BTools">enlace</a>.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
<br /></div>
<div>
<div>
<ul>
<li><b>Por otro lado se liberó K2B Audit 3.0 y luego K2B Audit 3.5:</b></li>
</ul>
</div>
</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-JqbgJjn2AU9BYiYl3wO0oCHasH_AHpM6EbiuXihzMEg1uu570Bk3zYU29hmjQAj2A37jWewC06y0SaemZAqpmjswgQShek13MKTE72NZOT1wEH_cjFxYh9FSKCE8eLGHGZE3pHpN8wc/s1600/2013-12-20_1522.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-JqbgJjn2AU9BYiYl3wO0oCHasH_AHpM6EbiuXihzMEg1uu570Bk3zYU29hmjQAj2A37jWewC06y0SaemZAqpmjswgQShek13MKTE72NZOT1wEH_cjFxYh9FSKCE8eLGHGZE3pHpN8wc/s320/2013-12-20_1522.png" width="320" /></a><br />
<div style="text-align: justify;">
En <a href="http://blog.k2btools.com/2013/01/k2b-audit-30.html">K2B Audit 3.0</a> se aumentó la cantidad de datos incluidos dentro de los registros de Auditoría, brinda la capacidad de escoger qué atributos se auditarán y mejora la información de explotación permitiendo mostrar además del nombre del atributo su descripción. De esta manera el análisis sobre la historia de modificaciones de cada registro es mucho más rico.</div>
<br />
<div style="text-align: justify;">
Luego se lanzó <a href="http://marketplace.genexus.com/product.aspx?k2bauditfreeedition,es">K2B Audit 3.5 </a> donde su principal novedad fue el soporte para DB2 for ISeries v.1.</div>
</div>
<div>
<br /></div>
<div>
<br />
<b><br /></b>
<b><br /></b>
<b><br /></b>
<br />
<ul>
<li><b>Integración con GAM:</b></li>
</ul>
</div>
</div>
<div>
<div>
Otro de los importantes temas abarcados a lo largo de este año fue la integración con el GAM (GeneXus Access Manager), donde se generó un backend hecho 100% con K2BTools. Vinculado a ello se publicó el artículo "<a href="http://blog.k2btools.com/2013/10/gam-y-k2btools-aplicando-esquema-de.html">GAM y K2BTools, aplicando esquema de seguridad avanzada a nuestros proyectos</a> " en donde de detalla más en profundidad sobre el tema. Se puede encontrar más información en nuestro <a href="http://wiki.k2btools.com/k2btools/servlet/hwiki?K2BTools+security+fast+start+modules,">wiki</a>.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgadvxenEWTdn_Kcl4pxDcavUoSo84csEheAbgSg_jPk2ZXsu9qAMCVFJOg0k4bqN-65qx6TqFox-HHO-HYvn_Ce5FioCGFZic7MuF2pws4NNP4p8pQeWygHO75bOsRecOr5yluPQsFjS4/s1600/2013-10-17_1201.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgadvxenEWTdn_Kcl4pxDcavUoSo84csEheAbgSg_jPk2ZXsu9qAMCVFJOg0k4bqN-65qx6TqFox-HHO-HYvn_Ce5FioCGFZic7MuF2pws4NNP4p8pQeWygHO75bOsRecOr5yluPQsFjS4/s400/2013-10-17_1201.png" width="400" /></a></div>
<div>
<br /></div>
<ul>
<li style="text-align: justify;"><b>En el mes de Octubre llegó el XXIII Encuentro GeneXus en donde estuvimos presentes como todos los años:</b></li>
</ul>
<div>
<div style="text-align: justify;">
Como sucede año a año K2BTools hizo su participación en el Encuentro GeneXus. Este año estuvimos presentes realizando un fuerte trabajo en el stand de K2BTools en donde se presentó de forma reiterada y continua las nuevas versiones de K2BTools y de K2B Audit antes mencionadas.</div>
</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<div style="text-align: justify;">
Pero no solo fue eso. También, como siempre, estuvimos brindando diferentes charlas que las detallamos a continuación:</div>
</div>
<div>
<ul><ul>
<li style="text-align: justify;"><b>K2BTools: for real business applications</b> :</li>
</ul>
</ul>
<div style="text-align: justify;">
"Alguien que está de nuestro lado, alguien que puede lograr que grandes aplicaciones sean factibles"... es un comentario cada vez más frecuente entre quienes usan K2BTools. Conozca las ventajas de K2BTools y hacia dónde vamos para que cada vez más, grandes proyectos se hagan realidad.</div>
<div>
<br /></div>
</div>
<iframe allowfullscreen="" frameborder="0" height="290" src="//www.youtube.com/embed/lNWxPvNNdBg" width="540"></iframe>
<br />
<div style="text-align: justify;">
<br /></div>
<div>
<ul><ul>
<li><b>Conociendo K2BAudit: la mejor manera de auditar tu aplicación:</b></li>
</ul>
</ul>
<div style="text-align: justify;">
Saber qué pasó con los datos es un requerimiento común en las aplicaciones actuales. ¿Quién modificó determinado valor?¿Cuándo?¿En qué operación?. ¡Conoce que tan sencillo y completo es obtener esta imformación con K2BAudit!<br />
<br /></div>
<iframe allowfullscreen="" frameborder="0" height="290" src="//www.youtube.com/embed/1JOBGdGEEGo" width="540"></iframe>
<br />
<ul><ul>
<li><b>Desarrollando con K2BTools:</b></li>
</ul>
</ul>
<div>
En un mundo complejo como el de hoy, es fundamental contar con una herramienta que nos asista para realizar proyectos exitosos. Conozca de una manera práctica como se utiliza K2BTools y qué beneficios aporta.</div>
<br /></div>
<iframe allowfullscreen="" frameborder="0" height="290" src="//www.youtube.com/embed/T4TfCQ57a_Y" width="540"></iframe>
<br />
<div>
<br />
<br />
<div style="text-align: justify;">
Además de las charlas también se realizó el "Café con K2BTools". Instancia en donde se aprovechó para discutir sobre las nuevas funcionalidades que se dieron en la charla de Roadmap, se intercambiaron diferentes ideas, tips y soluciones entre todos los participantes. </div>
</div>
<div style="text-align: justify;">
<br /></div>
<div>
<div style="text-align: justify;">
Y por último algo a destacar que ya mencionamos al comienzo del artículo, es que al culminar el evento Federico Dominioni, líder de nuestro equipo de desarrollo de K2BTools recibió en manos de Nicolás Jodal el reconocimiento por el aporte a la innovación a través de la novedosa herramienta <b>K2B WebPanelDesigner</b>. </div>
</div>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<ul>
<li><b>Para cerrar llegó el turno del Webinar del WebPanelDesigner: </b></li>
</ul>
<div>
En el mes de Noviembre se llevó a cabo el Webinar sobre el WebPanelDesigner. En el mismo se repasaron las principales características de la herramienta y los beneficios que aporta al desarrollo con GeneXus. En donde se dejó en claro el mensaje de que ahora "<i>la forma de crear WebPanels cambió para siempre".</i></div>
<div>
<i><br /></i></div>
<div>
Les dejamos a continuación el video para que lo puedan volver a ver.</div>
<iframe allowfullscreen="" frameborder="0" height="290" src="//www.youtube.com/embed/yJ7D0D_sNz4" width="540"></iframe>
<br />
<br />
Para ir cerrando queremos agradecerles a todos nuestros clientes, socios y amigos por la confianza que hemos recibido en este año. Para el 2014 esperamos seguir aportando mucho más en la innovación y seguir creciendo juntos con la ayuda y el aporte de todos. Nuestros deseos de prosperidad para todos ustedes en estas fiestas. ¡Muchas felicidades!<br />
<br />
<b>Equipo de K2BTools</b><br />
For real business applications.<br />
<br />
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<br />pcollazohttp://www.blogger.com/profile/00341129885596942757noreply@blogger.com0tag:blogger.com,1999:blog-1703807005122508259.post-83507189368968439492013-10-29T08:31:00.000-07:002015-07-06T11:27:21.331-07:00GAM y K2BTools, aplicando esquema de seguridad avanzada a nuestros proyectos<div dir="ltr" style="line-height: 1; margin-bottom: 10pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">K2BTools nos ofrece dos variantes para la implementación de seguridad en nuestros proyectos web:</span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.1500000000000001; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">K2BFastStart</span><span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, en caso de que el proyecto web sea una aplicación pequeña, con requerimientos de seguridad básicos</span><span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span></div>
<div dir="ltr" style="line-height: 1.1500000000000001; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
</li>
<li style="text-align: justify;"><span style="font-family: Calibri; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">K2BFastStartGAM</span><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">, en el resto de los casos. </span></li>
</ul>
<div style="text-align: justify;">
<span style="font-family: Calibri;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span></div>
<div style="text-align: justify;">
<span id="docs-internal-guid-40151019-c764-0669-91cd-fe92032c9c5f"><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Esta entrada pretende compartir un par de líneas gruesas que nos permitirán la implementación del segundo caso </span><span style="font-family: Calibri; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">K2Btools-GAM</span><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">, que ha venido debatiéndose en el foro en los últimos meses. En caso de requerir mas detalles sobre el primero, podrán descargar documentación </span><a href="http://www.k2btools.com/descargas/documentos?es" style="text-decoration: none;"><span style="color: blue; font-family: Calibri; font-size: 15px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">aquí</span></a><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">.</span></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span id="docs-internal-guid-40151019-c766-b85e-3738-dfaa98db95d5"><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Lo primero que debemos hacer para implementar el GAM en nuestro proyecto web es habilitarlo en las Preferences del Modelo: </span></span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjodJcWoodwc8dGtt22-fDDVFqgypRv50wmwj7Xgc0_pCTA-5UFWqedpSXb9Mi8GDsTKPnzbJdMG55zDkPMUQ8X25greQSdchYA4NlY5V3WBGLz3nr1nMj_enFU8Sy6SSZtfiBv90cPbHo/s1600/1.PNG" imageanchor="1" style="font-family: Calibri; font-size: 15px; margin-left: 1em; margin-right: 1em; text-align: center; white-space: pre-wrap;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjodJcWoodwc8dGtt22-fDDVFqgypRv50wmwj7Xgc0_pCTA-5UFWqedpSXb9Mi8GDsTKPnzbJdMG55zDkPMUQ8X25greQSdchYA4NlY5V3WBGLz3nr1nMj_enFU8Sy6SSZtfiBv90cPbHo/s1600/1.PNG" /></a> <span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">a partir de lo cual esté realizará la importación de todos los objetos externos necesarios que facilitan el acceso a la </span><span style="color: blue; font-family: Calibri; font-size: 15px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><a href="http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Category%3AGAM+API" style="text-decoration: none;">API GAM</a> ,</span></div>
<div style="text-align: justify;">
<span style="color: blue; font-family: Calibri; font-size: 15px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq2ehB0of6bobaDyweC7PkDu_gxcRe8O3H3abqtu6HIidc3CeiztLL2iOQGA8332rLyZkrUn7nOSaD9pMCzOLe4aZDX_m7waOyjL2nxY5Ym5xsCX3ZZIiGcyp3_j7JrHA3CrJX7JsYc-g/s1600/2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="257" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq2ehB0of6bobaDyweC7PkDu_gxcRe8O3H3abqtu6HIidc3CeiztLL2iOQGA8332rLyZkrUn7nOSaD9pMCzOLe4aZDX_m7waOyjL2nxY5Ym5xsCX3ZZIiGcyp3_j7JrHA3CrJX7JsYc-g/s400/2.PNG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOZDr9yLCKdvGhUO5x9FUr-cPCWYGtoEzQZszoS6ebaCPYGiScvgkMkd1qFzsQKz8iTIh2GDnNa7N9_fu9o3vH2g0G6-N17AWPtimOu57-I2dbAB_7OVHJ0xfeaYLHAnjp1bZueCTZrXI/s1600/3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOZDr9yLCKdvGhUO5x9FUr-cPCWYGtoEzQZszoS6ebaCPYGiScvgkMkd1qFzsQKz8iTIh2GDnNa7N9_fu9o3vH2g0G6-N17AWPtimOu57-I2dbAB_7OVHJ0xfeaYLHAnjp1bZueCTZrXI/s1600/3.PNG" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Lo siguiente que se debe hacer es cambiar la siguiente propiedad:</span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj8Ur1iRE6n0uadOGrtnuDMLtAg7omR39Q6XsEuAPWqCtC4h-Ex4Kx70Jobs-lgybzkY03mM8xDjLIn_sVvSx3D-V1NPYCwuqyhKrleeQpeOKYTNNW5yx2uq6QTkq7tLNstP8yEob0NL4/s1600/2013-10-18_1411.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj8Ur1iRE6n0uadOGrtnuDMLtAg7omR39Q6XsEuAPWqCtC4h-Ex4Kx70Jobs-lgybzkY03mM8xDjLIn_sVvSx3D-V1NPYCwuqyhKrleeQpeOKYTNNW5yx2uq6QTkq7tLNstP8yEob0NL4/s1600/2013-10-18_1411.png" /></a></div>
<div style="text-align: justify;">
<br />
<br /></div>
<div style="text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiix_YtGHdje48FPtinGGwQLox-knuCt2DzxX0o876p9G7aG382ZNXJhBpfEdYD26CJfP0Me1kaD3QK07aXsTYbjqDXvyCtcGvGTcSJnG8s_wxxAy8TCQzkZ3ebeRN1xKu-c5QpKvGyIn8/s1600/wiki.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: justify;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiix_YtGHdje48FPtinGGwQLox-knuCt2DzxX0o876p9G7aG382ZNXJhBpfEdYD26CJfP0Me1kaD3QK07aXsTYbjqDXvyCtcGvGTcSJnG8s_wxxAy8TCQzkZ3ebeRN1xKu-c5QpKvGyIn8/s1600/wiki.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: justify;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiix_YtGHdje48FPtinGGwQLox-knuCt2DzxX0o876p9G7aG382ZNXJhBpfEdYD26CJfP0Me1kaD3QK07aXsTYbjqDXvyCtcGvGTcSJnG8s_wxxAy8TCQzkZ3ebeRN1xKu-c5QpKvGyIn8/s1600/wiki.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: justify;"><br /></a><span id="docs-internal-guid-40151019-c769-51ed-2d56-127ac49b8025"><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span></span><br />
<div style="text-align: justify;">
<span id="docs-internal-guid-40151019-c769-51ed-2d56-127ac49b8025"><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><span style="vertical-align: baseline;">Seguido a lo cual procedemos a importar </span><span style="font-weight: bold; vertical-align: baseline;">FastStartGAM.xpz</span><span style="vertical-align: baseline;"> el cual se podrá descargar de la </span><a href="http://wiki.k2btools.com/k2btools/servlet/hwiki?K2BTools+security+fast+start+modules," style="text-decoration: none;"><span style="color: blue; text-decoration: underline; vertical-align: baseline;">Wiki</span></a><span style="vertical-align: baseline;"> a la cual podrán acceder también en todo momento desde el IDE de Genexus, a partir de la versión 7.1, con la nueva opción Go to K2B Tools Wiki.</span></span></span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiso9umYSxT7xI4gN2gCQK2NxKuKgftvWXKi-sxL0YyfWn2FaFWO2YRwO-bcdjJBepWh7f-i38GVwhq2LAuGekfO6oUs55KYbDnDKvWwYmXJ8OwC9YPK7ly9FWkxnXM3Hn3ZR-cU6JsMBg/s1600/2013-10-29_1130.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="177" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiso9umYSxT7xI4gN2gCQK2NxKuKgftvWXKi-sxL0YyfWn2FaFWO2YRwO-bcdjJBepWh7f-i38GVwhq2LAuGekfO6oUs55KYbDnDKvWwYmXJ8OwC9YPK7ly9FWkxnXM3Hn3ZR-cU6JsMBg/s320/2013-10-29_1130.png" width="320" /></a> <br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiix_YtGHdje48FPtinGGwQLox-knuCt2DzxX0o876p9G7aG382ZNXJhBpfEdYD26CJfP0Me1kaD3QK07aXsTYbjqDXvyCtcGvGTcSJnG8s_wxxAy8TCQzkZ3ebeRN1xKu-c5QpKvGyIn8/s1600/wiki.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiix_YtGHdje48FPtinGGwQLox-knuCt2DzxX0o876p9G7aG382ZNXJhBpfEdYD26CJfP0Me1kaD3QK07aXsTYbjqDXvyCtcGvGTcSJnG8s_wxxAy8TCQzkZ3ebeRN1xKu-c5QpKvGyIn8/s1600/wiki.PNG" /></a></div>
<span style="font-family: Calibri; font-size: 15px; white-space: pre-wrap;">Por último, es necesario cambiar los objetos que nos coloca GAM por defecto a nivel de propiedades del modelo, por los que nos aporta el FastStarGAM.xpz: </span></div>
</div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlocI8pnwLI39oIy_592t5JQc5Hr1sD2Maos-NkJ8NOSaLNUAVKyfWVKzkDY5XG-ew80Z1oAFt5cj2NHnQHQPQMw_G3qsk1ttMaPjYtoJma_Qkfj2OIPUisErbN-D9JCwzgckNCuv-Q-4/s1600/23.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlocI8pnwLI39oIy_592t5JQc5Hr1sD2Maos-NkJ8NOSaLNUAVKyfWVKzkDY5XG-ew80Z1oAFt5cj2NHnQHQPQMw_G3qsk1ttMaPjYtoJma_Qkfj2OIPUisErbN-D9JCwzgckNCuv-Q-4/s1600/23.PNG" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span id="docs-internal-guid-40151019-c76e-9d41-c04a-820fef029deb"><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Realizados estos tres pasos, procedemos a correr la aplicación, contando ahora con una nueva opción en nuestro menú a través de la cual podemos administrar el esquema de seguridad avanzada que nos ofrece GeneXus con GAM (Genexus Access Manager), con las facilidades de usabilidad que nos aporta K2BTools.</span></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXeRjjbYIEwOrJLlx_RAPsTNhDcPmfBl5hx7i-LxzlKi2OixQ5TgAl2Gaj33c43K6WkK2nJ0tL_S8F-7vvJgSvW07-5qcuYPbiwxx8fIyyYCu7qfOjIjJyjMl6uxoEklGp9ymJEIsOZ88/s1600/2013-10-17_1200.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXeRjjbYIEwOrJLlx_RAPsTNhDcPmfBl5hx7i-LxzlKi2OixQ5TgAl2Gaj33c43K6WkK2nJ0tL_S8F-7vvJgSvW07-5qcuYPbiwxx8fIyyYCu7qfOjIjJyjMl6uxoEklGp9ymJEIsOZ88/s1600/2013-10-17_1200.png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1B6gHjjOj5Y0HqFyjz_lz6l9ML4STKW-MBQrnt96KUW-ou1lh4MeKNtou22_8WreU8LFQ21CojABTnSl9qJ8vwq_MV-9r6GoW3LbIO_0WeA5KGyyWYLvfxp5wum29XcZoF6s7OUXmsIU/s1600/2013-10-17_1201.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1B6gHjjOj5Y0HqFyjz_lz6l9ML4STKW-MBQrnt96KUW-ou1lh4MeKNtou22_8WreU8LFQ21CojABTnSl9qJ8vwq_MV-9r6GoW3LbIO_0WeA5KGyyWYLvfxp5wum29XcZoF6s7OUXmsIU/s400/2013-10-17_1201.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span id="docs-internal-guid-40151019-c772-6fee-2fd8-b058e5fc3aed"><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Desde este módulo podemos administrar todas las opciones de seguridad que nos habilita el GAM una vez ha sido integrado a GeneXus. Estas son: </span></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span id="docs-internal-guid-40151019-c772-2dc9-312b-57b5e8f4ea83"></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Administrar usuarios, asignarle roles, actualizar sus datos => </span><span style="background-color: transparent; color: black; font-family: Calibri; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">k2bfsgwwuser</span></div>
</li>
</ul>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj96uyinxucj7ce7HXgLHYKESsmTq5wriEUMLpfnXbNOUWzaAmI-l8zVNRvMFsfSpPmG6m4N_Wn2g1jX5OvjczUDs2NGto4f_bNdYUE5GVz3maJQjPh-U5OOUpYR5mM6q3jxMb0tmGwz8E/s640/2013-10-17_1256.png" style="font-family: Arial; font-size: 15px; font-weight: bold; line-height: 1;" width="640" /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqAlHkvqFSRnV3grgBDqHjeiHUcX_6f1Wsi1wiXrWD7O98HI1Ceuet6NpxICxdWFXoiAV282VIrWzEEDsTrxf6G6FELXsZ2Jw1eTK_y554vMXc44XK8hUxyoWp32OA3VHnt_fb6TLuQIs/s1600/2013-10-17_1430.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqAlHkvqFSRnV3grgBDqHjeiHUcX_6f1Wsi1wiXrWD7O98HI1Ceuet6NpxICxdWFXoiAV282VIrWzEEDsTrxf6G6FELXsZ2Jw1eTK_y554vMXc44XK8hUxyoWp32OA3VHnt_fb6TLuQIs/s640/2013-10-17_1430.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ul>
<li><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Administrar roles. Asignar actividades a cada rol => </span><span style="font-family: Calibri; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">k2bfsgwwrole</span></li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAnh8xt_EYBm3Pq6_MjVy8ImQsRE6VO0o9eEv2b5M5GrP6WO80EjK0amncH_xYnIJoiz6B_492FDBcbBBwI_ohgsL73Da3km5SWDToZKDFyAl7chTINpD6NLIeOKaKJEj_asGrytUneCY/s1600/2013-10-17_1531.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="293" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAnh8xt_EYBm3Pq6_MjVy8ImQsRE6VO0o9eEv2b5M5GrP6WO80EjK0amncH_xYnIJoiz6B_492FDBcbBBwI_ohgsL73Da3km5SWDToZKDFyAl7chTINpD6NLIeOKaKJEj_asGrytUneCY/s400/2013-10-17_1531.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirPk6IkPDgERVpQwLG9fSa0V9Cx6lkKmQUgD4KsGVuYgTo5tgcdynr4jC4vQmneIggR4Yy7Ow25KcYZrY6NoeJDax0_DDdQUc8laUn07b6Debl8u2naFxsqy7JAX8l7aPqsJMs_7ONTLU/s1600/2013-10-18_1224.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="441" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirPk6IkPDgERVpQwLG9fSa0V9Cx6lkKmQUgD4KsGVuYgTo5tgcdynr4jC4vQmneIggR4Yy7Ow25KcYZrY6NoeJDax0_DDdQUc8laUn07b6Debl8u2naFxsqy7JAX8l7aPqsJMs_7ONTLU/s640/2013-10-18_1224.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ul>
<li><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Administrar aplicaciones, Agregarles permisología =></span><span style="font-family: Calibri; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">k2bfsgwwapplication</span></li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjCMYy7vEXfT7ZgfCud1vfChtPJvDG7euZ0hTS-x0PafOC0BW3cCklmd2kV9QguAJITok_wTLgrh-HboS407GzEfClZE-uvdOanUeEMyll0iTBfYGgq8zApHyFVZOhn53YTIw61f_AMbU/s1600/2013-10-18_1327.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="305" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjCMYy7vEXfT7ZgfCud1vfChtPJvDG7euZ0hTS-x0PafOC0BW3cCklmd2kV9QguAJITok_wTLgrh-HboS407GzEfClZE-uvdOanUeEMyll0iTBfYGgq8zApHyFVZOhn53YTIw61f_AMbU/s640/2013-10-18_1327.png" width="640" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjCMYy7vEXfT7ZgfCud1vfChtPJvDG7euZ0hTS-x0PafOC0BW3cCklmd2kV9QguAJITok_wTLgrh-HboS407GzEfClZE-uvdOanUeEMyll0iTBfYGgq8zApHyFVZOhn53YTIw61f_AMbU/s1600/2013-10-18_1327.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ul>
<li><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Administrar tipos de autenticación => </span><span style="font-family: Calibri; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">k2bfsgwwauthtype</span></li>
</ul>
<div>
<span style="font-family: Calibri;"><span style="font-size: 15px; white-space: pre-wrap;"><b><br /></b></span></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjto4s0Z7hGC6GPTc2sPY1sIfPKSbKHKZBwU0BnVEYEoqTHIzxt3knFyAAraT-JzIelmKgRQeKaw7T3MAcqnn15z55k17_G9l52y_sFzbsJZ82dvgdtNiIE2A7QSXEaw1TbTiTqLQ43t0E/s1600/2013-10-18_1333.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjto4s0Z7hGC6GPTc2sPY1sIfPKSbKHKZBwU0BnVEYEoqTHIzxt3knFyAAraT-JzIelmKgRQeKaw7T3MAcqnn15z55k17_G9l52y_sFzbsJZ82dvgdtNiIE2A7QSXEaw1TbTiTqLQ43t0E/s640/2013-10-18_1333.png" width="640" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjto4s0Z7hGC6GPTc2sPY1sIfPKSbKHKZBwU0BnVEYEoqTHIzxt3knFyAAraT-JzIelmKgRQeKaw7T3MAcqnn15z55k17_G9l52y_sFzbsJZ82dvgdtNiIE2A7QSXEaw1TbTiTqLQ43t0E/s1600/2013-10-18_1333.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ul>
<li><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Definir políticas de seguridad => </span><span style="font-family: Calibri; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">k2bfsgwwsecuritypolicy</span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBjeZQI07hslryVKRWWhn5X3XPicAuRvSBwLcuDAj8lwA3Ivi4IO5uCT6Aw25fR5adDd1tIM9HQAwvn5WQ780RmnB4Ay1dqtROMz7WIEXzvIEiENY9GEQtErobLR6JwkyJi6ILmJLRxCo/s1600/2013-10-18_1339.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="326" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBjeZQI07hslryVKRWWhn5X3XPicAuRvSBwLcuDAj8lwA3Ivi4IO5uCT6Aw25fR5adDd1tIM9HQAwvn5WQ780RmnB4Ay1dqtROMz7WIEXzvIEiENY9GEQtErobLR6JwkyJi6ILmJLRxCo/s640/2013-10-18_1339.png" width="640" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBjeZQI07hslryVKRWWhn5X3XPicAuRvSBwLcuDAj8lwA3Ivi4IO5uCT6Aw25fR5adDd1tIM9HQAwvn5WQ780RmnB4Ay1dqtROMz7WIEXzvIEiENY9GEQtErobLR6JwkyJi6ILmJLRxCo/s1600/2013-10-18_1339.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a></div>
<div>
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: left;">
</div>
<ul>
<li><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Realizar configuraciones al repositorio => </span><span style="font-family: Calibri; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">k2bfsgrepositoryconfiguration</span></li>
</ul>
<div>
<span style="font-family: Calibri;"><span style="font-size: 15px; white-space: pre-wrap;"><b><br /></b></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-QJHquOadEEfr7Qe0EdHs_6LKzoXSGpdmDgWI9OsJBzq_BcFgLEw87oW7Z_83KHb0F5YaGyBSP8JR7aidGcyAAiUQcYdPzxuZKrVKFeyaVL-_sPm_DTBMa1nFLV__vPEUq18IU4YQTwM/s1600/2013-10-18_1341.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="492" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-QJHquOadEEfr7Qe0EdHs_6LKzoXSGpdmDgWI9OsJBzq_BcFgLEw87oW7Z_83KHb0F5YaGyBSP8JR7aidGcyAAiUQcYdPzxuZKrVKFeyaVL-_sPm_DTBMa1nFLV__vPEUq18IU4YQTwM/s640/2013-10-18_1341.png" width="640" /></a></div>
<div>
<span style="font-family: Calibri;"><span style="font-size: 15px; white-space: pre-wrap;"><b><br /></b></span></span></div>
<br />
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<ul>
<li><span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Configurar conexiones => </span><span style="font-family: Calibri; font-size: 15px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;">k2bfsgwwconnections</span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLogpxleKB0gMO0mEfXUb5GTrOfyG3pIgH53Lw3zmEhyphenhyphenxpbAKuIucHAE-MC_aMvXO4qc-ZgrwghwLeYrRdPuqJWl1YnGaGm6oxkB4EF_mGq0Vy_4i1eiT4IYo-R9delmJRq4xlGMdF5dE/s1600/2013-10-18_1347.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="152" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLogpxleKB0gMO0mEfXUb5GTrOfyG3pIgH53Lw3zmEhyphenhyphenxpbAKuIucHAE-MC_aMvXO4qc-ZgrwghwLeYrRdPuqJWl1YnGaGm6oxkB4EF_mGq0Vy_4i1eiT4IYo-R9delmJRq4xlGMdF5dE/s640/2013-10-18_1347.png" width="640" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLogpxleKB0gMO0mEfXUb5GTrOfyG3pIgH53Lw3zmEhyphenhyphenxpbAKuIucHAE-MC_aMvXO4qc-ZgrwghwLeYrRdPuqJWl1YnGaGm6oxkB4EF_mGq0Vy_4i1eiT4IYo-R9delmJRq4xlGMdF5dE/s1600/2013-10-18_1347.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLogpxleKB0gMO0mEfXUb5GTrOfyG3pIgH53Lw3zmEhyphenhyphenxpbAKuIucHAE-MC_aMvXO4qc-ZgrwghwLeYrRdPuqJWl1YnGaGm6oxkB4EF_mGq0Vy_4i1eiT4IYo-R9delmJRq4xlGMdF5dE/s1600/2013-10-18_1347.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLogpxleKB0gMO0mEfXUb5GTrOfyG3pIgH53Lw3zmEhyphenhyphenxpbAKuIucHAE-MC_aMvXO4qc-ZgrwghwLeYrRdPuqJWl1YnGaGm6oxkB4EF_mGq0Vy_4i1eiT4IYo-R9delmJRq4xlGMdF5dE/s1600/2013-10-18_1347.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLogpxleKB0gMO0mEfXUb5GTrOfyG3pIgH53Lw3zmEhyphenhyphenxpbAKuIucHAE-MC_aMvXO4qc-ZgrwghwLeYrRdPuqJWl1YnGaGm6oxkB4EF_mGq0Vy_4i1eiT4IYo-R9delmJRq4xlGMdF5dE/s1600/2013-10-18_1347.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a></div>
<div>
<span style="font-family: Calibri;"><span style="font-size: 15px; white-space: pre-wrap;"><b><br /></b></span></span></div>
</div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri;"><span style="font-size: 15px; line-height: 15px; white-space: pre-wrap;">Como se puede apreciar en las imágenes arriba referidas, con K2BTools podemos ahora integrar toda la potencia de la seguridad GAM a nuestras aplicaciones web/smart devices, facilitando la administración centralizada desde el mismo frontend, en solo tres pasos:
</span></span></div>
<div style="text-align: justify;">
<ol>
<li><span style="font-family: Calibri; font-size: 15px; line-height: 15px; white-space: pre-wrap;">Activar el GAM</span></li>
<li><span style="font-family: Calibri; font-size: 15px; line-height: 15px; white-space: pre-wrap;">Importar el FastStartGAM.xpz </span></li>
<li><span style="font-family: Calibri; font-size: 15px; line-height: 15px; white-space: pre-wrap;">Cambiar los dos objetos por defecto en el Web specific de las preferences del Modelo: K2BFSGLogin y K2BNotAuthorized </span></li>
</ol>
<span style="font-family: Calibri;"><span style="font-size: 15px; line-height: 15px; white-space: pre-wrap;">
K2BTools atiende criterios de usabilidad que aportan mucha riqueza y valor a nuestras aplicaciones web y, en materia de seguridad, con ambas variantes (básica o avanzada) atienden muy bien la octava heurística de Nielsen: Estética y diseño minimalista, siendo que solo presenta al usuario, por defecto, las opciones a la que tiene acceso, evitando distraerle o frustrarle con visualización de acciones “apagadas”. </span></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri;"><span style="font-size: 15px; line-height: 15px; white-space: pre-wrap;">
Para finalizar, les cuento que el FastStartGAM.xpz está en proceso de mejoras, por los que sus revisiones, recomendaciones y aportes serán de gran ayuda al equipo de desarrollo de K2BTools. Una vez logre el punto de acabado, se espera sea integrado en la IDE de GeneXus en futuras versiones de la suite de patrones que nos aportan K2BTools, que con cada nueva versión potencian nuestras capacidades a nivel de gestión y desarrollo de aplicaciones en tiempos cada vez mas óptimos.
</span></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri;"><span style="font-size: 15px; line-height: 15px; white-space: pre-wrap;"><br /></span></span></div>
<div style="text-align: justify;">
<span style="font-family: Calibri;"><span style="font-size: 15px; line-height: 15px; white-space: pre-wrap;">Esperando se animen a probar y aportar sus comentarios,
Carmen Pedrique
Controlps, C.A
</span></span></div>
<div style="text-align: justify;">
<br /></div>
pcollazohttp://www.blogger.com/profile/00341129885596942757noreply@blogger.com10tag:blogger.com,1999:blog-1703807005122508259.post-18191928480620743972013-07-22T07:01:00.000-07:002013-07-22T07:01:09.153-07:00Creando Paneles de Multiple Selección con K2B Tools<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;">
<div style="text-align: start;">
<span style="text-align: justify;">Para la mayoría de las aplicaciones Web es necesario tener una cantidad importante de selectores. Por ejemplo, cuando ingresamos una factura necesitamos seleccionar el proveedor, el lugar de entrega, los productos a incluir en la misma. Cuando realizamos consultas, probablemente necesitemos seleccionar el conjunto de clientes para los cuales queremos consultar las ventas, el conjunto de depósitos para los cuales queremos listar el stock.<br />Para seleccionar cada uno de estos elementos, necesitamos un selector, y eso es válido tanto para la </span><span style="font-size: 13px; text-align: justify;">parte transaccional como la de explotación de la aplicación. </span></div>
</div>
<div style="background-color: white;">
<div style="text-align: justify;">
<span style="color: #222222; font-family: arial, sans-serif; font-size: 13px;"><br /></span></div>
<span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; text-align: justify;">Cuando la selección es de un solo elemento, como por ejemplo el cilente para una factura, esto normalmente se hace con GeneXus en forma simple con un combo, suggest o un prompt simple como se muestra en la imagen. </span><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px;"></span><br />
<span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; text-align: justify;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPn2JAaMgUVpFuPjG7yEPj1P5pOAII1xMGVJOY_0OW3v1HAFkOJlOI7BMNOONGAwB_6GPb1A_9CUid8cQ4Tt9puMORVBWPqiFvjSFgM6IRZ3mWy7lMMv9yNkS3h1pLeIpMKkvncOzLyqU/s1600/2013-07-09_1412.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPn2JAaMgUVpFuPjG7yEPj1P5pOAII1xMGVJOY_0OW3v1HAFkOJlOI7BMNOONGAwB_6GPb1A_9CUid8cQ4Tt9puMORVBWPqiFvjSFgM6IRZ3mWy7lMMv9yNkS3h1pLeIpMKkvncOzLyqU/s1600/2013-07-09_1412.png" /></a></div>
<span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; text-align: justify;"><br /></span></div>
<div style="background-color: white;">
<div style="text-align: justify;">
<span style="color: #222222; font-family: arial, sans-serif; font-size: 13px;"><br /></span></div>
<span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; text-align: justify;">Sin embargo, cuando el dominio sobre el cual quiero seleccionar es grande, por ejemplo si tenemos muchos productos para seleccionar, y si ademas queremos seleccionar más de un valor necesito un panel un poco mas sofisticado, lo cual no es sencillo de implementar. Algunos e</span><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; text-align: justify;">jemplos de estos escenarios: productos válidos para una factura, productos que vende un vendedor, clientes para los cuales quiero consultar ventas, depósitos para los cuales quiero listar su stock, etc. </span><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px;"></span><br />
<div style="text-align: justify;">
<br /></div>
</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px; text-align: justify;">
Para cada uno de estos selectores, por ejemplo viendo el selector de productos, seguramente sea necesarios proveer al menos las siguientes funcionalidades:<br />
<br />
<ul>
<li><span style="font-size: 13px;">Ver y filtrar por algunas características de los productos para ubicar fácilmente cuales seleccionar</span></li>
<li><span style="font-size: 13px;">Seleccionar un producto en forma individual o varios en forma masiva.</span></li>
<li><span style="font-size: 13px;">Visualizar en forma simple, cuales productos tengo para seleccionar y cuales ya seleccioné. </span></li>
<li><span style="font-size: 13px;">Poder paginar en los productos a seleccionar.</span></li>
<li><span style="font-size: 13px;">Poder eliminar algunos valores ya seleccionados también de forma individual o masiva.</span></li>
</ul>
</div>
<div style="background-color: white;">
<div style="text-align: justify;">
<span style="color: #222222; font-family: arial, sans-serif; font-size: 13px;"><br /></span>
<span style="color: #222222; font-family: arial, sans-serif; font-size: 13px;">Esta funcionalidad es necesaria de implementar para cada uno de los selectores, y no es trivial hacerlo. Pensemos en todos los elementos de la aplicación para los cuales necesitamos un selector de este tipo, son muchísimos y es bueno hacerlo si queremos lograr una aplicación usable y potente. </span></div>
<div style="text-align: justify;">
<span style="color: #222222; font-family: arial, sans-serif; font-size: 13px;"><br /></span><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px;"><b>Es por eso que en la herramienta de K2BTools - WebPanelDesigner,<i> </i>existe una acción que nos permite generar la selección múltiple de una forma muy fácil y en muy poco tiempo. </b></span><b style="color: #222222; font-family: arial, sans-serif; font-size: 13px;">A continuación les dejamos un video en donde se muestra un claro escenario de uso y ejemplo de implementación.</b><br />
<br />
<br />
<br />
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="266" src="http://www.youtube.com/embed/J_FKBhK-axA?feature=player_detailpage" width="320"></iframe>
</div>
</div>
pcollazohttp://www.blogger.com/profile/00341129885596942757noreply@blogger.com1tag:blogger.com,1999:blog-1703807005122508259.post-45925947647824527192013-06-17T10:05:00.000-07:002013-06-20T08:07:00.514-07:00Mi experiencia con K2BTools<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b><u>Introducción</u></b></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
A continuación les voy a contar de mi experiencia en el uso de K2BTools. Les cuento que soy un usuario que hace poco tiempo que empezó a desarrollar en GeneXus por lo que mi experiencia en el desarrollo de aplicaciones con GeneXus no es mucha. Lo que les quiero compartir son algunos ejemplos que me parecen interesantes destacar, que marcan lo importante que puede resultar utilizar K2BTools en una aplicación GeneXus.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Lo que hice fue implementar una pequeña aplicación de dos maneras distintas, una forma fue usando K2BTools y la otra sin usar K2BTools.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Al realizar esta prueba las cosas que más resaltan a grandes rasgos son las diferencia que encontré en la productividad que nos ofrece K2BTools en cuanto a tiempo, funcionalidades y facilidad de uso. Por ejemplo, cuando estaba haciendo la aplicación sin utilizar K2BTools encontré que hay funcionalidades que ésta nos brinda que son muy difíciles de implementar, que agregan mucho a la aplicación en cuanto a diseño y productividad, que ponerse a implementarlas llevan mucho tiempo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b><u>Desarrollo de la actividad.</u></b></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
Lo primero que hice fue desarrollar la aplicación utilizando K2BTools, en donde apliqué todos los patrones que éstas nos ofrecen (EntityServices, Prompt y TrnForm) y el Web Panel Designer. <br />
Al haber hecho esto primero, cuando me puse a implementar la aplicación sin utilizar K2BTools ya tenía una idea clara de lo que quería llegar a construir, por lo que me fue más fácil pensar que es lo que tenía que hacer. De lo contrario en muchos casos no hubiera sabido ni por donde empezar.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>Ejemplos en el desarrollo de la aplicación.</b></div>
<div style="text-align: justify;">
<b><br /></b>
</div>
<div style="text-align: justify;">
Uno de los ejemplos que quería compartir con ustedes es con el uso del Pattern K2B Trn Form. <br />
Al aplicar dicho patrón a una transacción, en este caso Clientes, con un número grande de atributos pude crear una interfaz para ingresar nuevos clientes bastante prolija y completa tan solo agregando y quitando diferentes nodos al árbol del patrón. Utilicé diferentes controles y componentes que ofrecen los patterns para facilitar el diseño de interfaz. Todo esto siempre sin tener que tocar nada en el WebForm de la transacción, algo que me facilitó muchísimo e hizo que no pierda tanto tiempo en el armado y diseño del form.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQehnFuH9RzSX0zSn0bsN6F3qWRGxQJ-mhq_6fBYH2kfXDLI9i3MMjmJrebwNdMgVrhVMe5aLHuFmIAqCBnalpdhgAjL6OjaJoZWnXARBLosb5ZFRrcpau2hS4H11y2dtP_Uv-lSWcFSI/s1600/TrnFormConNodos.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: justify;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQehnFuH9RzSX0zSn0bsN6F3qWRGxQJ-mhq_6fBYH2kfXDLI9i3MMjmJrebwNdMgVrhVMe5aLHuFmIAqCBnalpdhgAjL6OjaJoZWnXARBLosb5ZFRrcpau2hS4H11y2dtP_Uv-lSWcFSI/s1600/TrnFormConNodos.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br />
<br />
<br />
Como se ve en la imagen, uno de los nodos que se destacan son los nodos <i>Line Separator</i> los cuales me resultaron de mucha utilidad para separar los atributos según el tipo de información a la que se corresponden. Por ejemplo, los atributos están separados por "Personal Information" y "Occupation". Esto además ofrece la opción de colapsar y descolapsar la información en la pantalla por si se quiere o no mostrar. También se destacan los nodo <i>Tab, </i>que permiten crear tabs fácilmente, y los nodos <i>Group. </i>Estos últimos permiten, por ejemplo, agrupar atributos dentro de un mismo tipo de información. Como se ve en la imagen dentro de el Tab Location hay dos grupos distintos que son "Country", con toda la información referida al país del cliente, y el grupo "Address" con toda la información referida a la dirección. En el otro Tab "Contact" está la información de contacto (e-mail, teléfono,etc.).</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgttrlPJcb2Yev08vk0QA8HVY-j0PFFmjZ2jGos93gXRdRfncPDwc-yo5x57a5_KlUNQGHzilxqskMlTfKxXHvl1jHdh5xtOWpRMYicnjw2PXN6glFLH81mMc56-ODE-hre2YAwU51cB88/s1600/customerultima2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: justify;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgttrlPJcb2Yev08vk0QA8HVY-j0PFFmjZ2jGos93gXRdRfncPDwc-yo5x57a5_KlUNQGHzilxqskMlTfKxXHvl1jHdh5xtOWpRMYicnjw2PXN6glFLH81mMc56-ODE-hre2YAwU51cB88/s1600/customerultima2.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
En la aplicación sin usar K2BTools al querer implementar algo similar a lo anterior me encontré con que era más difícil de lo que pensaba y me llevo bastante más tiempo. Incluso hubo varias funciones que no pude implementar.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Otro ejemplo que me interesaba contarles es sobre lo fantástico que me pareció el Web Panel Designer. En la aplicación fue necesario construir un WebPanel con múltiple selección que me permita seleccionar varios productos al mismo tiempo, por ejemplo para armar una factura. Para hacer esto lo único que tuve que hacer es un clic. Como se muestra en la imagen a continuación el Web Panel Designer nos ofrece la opción "Add Multiple Selection from Transaction" que al hacer clic en ella automáticamente crea la múltiple selección de la transacción que queramos utilizar. <br />
Luego se le pueden agregar los controles que anteriormente les conté (Line Separator, Tabs, Groups) y obtener una múltiple selección completa y con una interfaz muy prolija. Todo esto en muy pocos minutos y haciendo solamente un clic.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh__HwhkqsbVPr8RpQFf0K6JPLHQqA9_nG6reEzp98KkqsxbULEn9iJd7xMu_1QFwGEyg9C5JL0wtgZCr77Mra6sqJqTEkA7to8UN4aPzpSD3HRlymZxixqyn7LLAzKFSHF5mZbFSyvssw/s1600/multiple_selccion.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh__HwhkqsbVPr8RpQFf0K6JPLHQqA9_nG6reEzp98KkqsxbULEn9iJd7xMu_1QFwGEyg9C5JL0wtgZCr77Mra6sqJqTEkA7to8UN4aPzpSD3HRlymZxixqyn7LLAzKFSHF5mZbFSyvssw/s1600/multiple_selccion.png" /></a></div>
<br />
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiujj6QcoX8plVFJqd5tSulLk5vsXEKiJc1Mo3jcdivQ2wuPHaPVyibSj-dbKE1b37toLusxlXQ-acelUZmqK4T_TK8oWiaafZ8OAj-B6RZ_1Mn2alNNK24WmaFyZvy2z_oRwRYCeyj-AA/s1600/select2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiujj6QcoX8plVFJqd5tSulLk5vsXEKiJc1Mo3jcdivQ2wuPHaPVyibSj-dbKE1b37toLusxlXQ-acelUZmqK4T_TK8oWiaafZ8OAj-B6RZ_1Mn2alNNK24WmaFyZvy2z_oRwRYCeyj-AA/s1600/select2.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Cuando me puse a implementar la múltiple selección sin utilizar Web Panel Designer la verdad que se me complicó bastante y lo que logré hacer se acerca en poco a lo que hice usando Web Panel Designer y además el tiempo que me llevó fue mucho mayor. La verdad que este tipo de web panel tiene una estructura que resulta muy común en diferentes aplicaciones y tenerlo tan accesible y fácil para usarlo resulta muy productivo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
A modo de conclusión sinceramente decirles para mis futuras aplicaciones vería como inviable comenzar a desarrollar sin contar con herramientas que tengan la potencia que tiene K2BTools que me permite crear mucho más y en muy poco tiempo.</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<br />
Pablo Collazo.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div>
<ul>
</ul>
</div>
pcollazohttp://www.blogger.com/profile/00341129885596942757noreply@blogger.com0tag:blogger.com,1999:blog-1703807005122508259.post-16116834745757503922013-01-29T08:53:00.001-08:002013-01-29T08:53:12.821-08:00K2B Audit 3.0Hace poco más de un mes mostramos las <a href="http://blog.k2btools.com/2012/12/se-viene-k2btools-70.html">nuevas funcionalidades que se vienen con K2B Tools 7.0</a>, ahora le llega el turno a <a href="http://www.k2btools.com/k2baudit" target="_blank">K2B Audit</a>, otro producto que integra nuestra suite.<br />
<br />
Para aquellos que no conozcan este producto, agregamos una breve descripción:<br />
<br />
K2B Audit es una herramienta que permite auditar los cambios realizados a la base de datos de cualquier aplicación GeneXus de forma completamente transparente al desarrollador, generando triggers dentro de la base de datos.<br />
<br />
Al trabajar a nivel de DBMS, se auditan los cambios realizados tanto desde la aplicación GeneXus, como desde cualquier otra aplicación, o los realizados manualmente sobre la base de datos.<br />
<br />
Durante la ejecución de la aplicación se graban registros de auditoria en cada operación realizada sobre las tablas que se desea auditar. Posteriormente pueden ser consultados para encontrar cuáles fueron las modificaciones realizadas a un registro particular, viendo los valores anteriores y posteriores a las modificaciones, en qué momento se realizaron, y cuál fue el usuario que provocó el cambio.<br />
<br />
Para tener una idea más completa de la solución, los invitamos a ver el video abajo, perteneciente a nuestro <a href="http://www.youtube.com/k2btools" target="_blank">canal en youtube</a>, que muestra más a fondo las capacidades de la herramienta.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/bzFs83U2pgA?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<h3>
<b>Nuevas funcionalidades</b></h3>
<div>
Esta versión de K2B Audit tiene varias mejoras, aumentando la cantidad de datos incluidos dentro de los registros de auditoría y la capacidad de consultarlos por distintas dimensiones. De esta forma se enriquece el análisis sobre la historia de modificaciones de cada registro.<br />
<br /></div>
<h4>
Selección de atributos a auditar</h4>
<div>
A partir de esta versión el desarrollador podrá determinar, dentro de una transacción auditada, cuáles atributos se auditarán y cuáles no. Para esto se contará con una propiedad, llamada “Audit Attribute”, a nivel de atributo dentro de la transacción. </div>
<div>
Esta propiedad será visualizada en los atributos que forman parte de la tabla base de la transacción asociada.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtnWT_FaZDg4Hlfr_LdEWsejolum26foLhsqdiojP_nj_WoUXs_fy6_4z0umFMI6UQY0eUlKIE59D0psvx79WfFA0WNVC4ngK993h2KaUbJmJp6HV61gIFSvF7ueCWH8iY30i9Qy1uc8s/s1600/auditattribute.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtnWT_FaZDg4Hlfr_LdEWsejolum26foLhsqdiojP_nj_WoUXs_fy6_4z0umFMI6UQY0eUlKIE59D0psvx79WfFA0WNVC4ngK993h2KaUbJmJp6HV61gIFSvF7ueCWH8iY30i9Qy1uc8s/s1600/auditattribute.jpg" /></a></div>
<br />
Para atributos que se encuentran en la tabla base de la transacción, pero no están en la transacción en sí, existe otra propiedad para determinar si estos atributos deben o no ser auditados.<br />
<br /></div>
<h4>
Descripción de los atributos auditados</h4>
<div>
En esta nueva versión, en el momento de generar los triggers, se actualizará la descripción de los atributos en la base de datos de auditoría. Con esta información, usuarios no familiarizados con el esquema de la base de datos podrán contar con descripciones más fáciles de entender.<br />
<br /></div>
<h4>
Información sobre UTL incluida en datos de auditoría</h4>
<div>
Se agrega funcionalidad en los triggers para almacenar, junto con los datos que fueron modificados en una operación, información sobre la UTL en que la operación fue realizada. Por ejemplo se podrá saber en qué fecha se realizó el commit de la UTL, o cuál fue el objeto que realizó el commit.</div>
<div>
<br /></div>
<div>
Además, se incluyen opciones en la explotación de datos de auditoría para, a partir de una operación auditada, ver todas las operaciones que fueron realizadas dentro de la misma UTL.</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKLJewtS8ypgUckZYd9A7N4AtI1wJ5i4T__i5oZDQ0bvMXMxaqq0f646yFFOMHw9gfde-kjspEubN5pvLL8GMThI84WHQn02J14d4uJa3enOQg-Se0HEV_6YSTmqUvuX_7iw8l_E5YbJM/s1600/analyzebyutl.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="323" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKLJewtS8ypgUckZYd9A7N4AtI1wJ5i4T__i5oZDQ0bvMXMxaqq0f646yFFOMHw9gfde-kjspEubN5pvLL8GMThI84WHQn02J14d4uJa3enOQg-Se0HEV_6YSTmqUvuX_7iw8l_E5YbJM/s640/analyzebyutl.jpg" width="640" /></a></div>
<br /></div>
<div>
Estos cambios harán más sencilla la tarea de analizar los registros de auditoría, al poder tomar más información sobre cómo se realizaron los cambios, y qué programa lo hizo.<br />
<br /></div>
<h4>
K2BAuditAnalyzer</h4>
<div>
K2BAuditAnalyzer incluye también varias mejoras. Recordemos que esta herramienta es la que permite al usuario final consultar en forma amigable y potente, toda la información de auditoria recogida durante la operación de la aplicación. <br />
<br /></div>
<div>
Dentro de las mejoras se destaca que en esta nueva versión se podrá configurar cómo se desea ejecutar el proceso de conversión de registros de auditoria para que sean consultables. <br />
Esto es importante para el caso en que se tienen bases de datos con alta carga de operaciones, donde la información recogida es mucha, por lo que el proceso de conversión puede llevar mucho tiempo.</div>
<div>
En K2B Audit 3.0, se incluyen parámetros que el usuario puede ajustar, permitiendo incluso ejecutar varias instancias en paralelo para aprovechar al máximo los recursos disponibles. También mientras los procesos se ejecutan, se podrá tener un estatus de cuántos registros se llevan convertidos. Al finalizar se podrán obtener valores de cuánto tiempo llevó la conversión y cuántos registros fueron convertidos. </div>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/14144231318575488980noreply@blogger.com0tag:blogger.com,1999:blog-1703807005122508259.post-83211538307677622112012-12-03T05:52:00.001-08:002013-01-29T08:56:15.673-08:00Se viene K2BTools 7.0..Se viene la versión de K2BTools 7.0 y aquí describiremos cuáles son las principales funcionalidades que contendrá.<br />
<br />
<b>K2B WebPanel Designer</b><br />
<br />
La primera novedad: se termina el proceso de Beta de K2BWebPanelDesigner y se libera la release, la cual estará incluida en el setup de K2BTools. K2BWebPanelDesigner usará las mismas licencias que K2BTools y se habilitará una versión free edition que permitirá construir hasta veinte Web Panels sin restricciones sobre el tamaño de la KB.<br />
La release que se libera, contará con más funcionalidades respecto a las incluídas en la RC, la más importante es facilitar aún más la forma de agregar grillas en los Web Panels generados.<br />
<br />
<b>Grillas desde Data Providers</b><br />
<br />
<span style="background-color: white; color: #222222;">En las aplicaciones cada vez es más necesario encapsular la navegación sobre los datos, independizarlos de la fuente desde la que son obtenidos y lograr una buena performance en su carga. Esto se puede hacer en GeneXus mediante el objeto dataprovider.</span><br />
<a href="http://wiki.gxtechnical.com/commwiki/servlet/apgetwikiimage?5973,6" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="Image:DataProvider Input Output" border="0" src="http://wiki.gxtechnical.com/commwiki/servlet/apgetwikiimage?5973,6" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<span style="background-color: white; color: #222222;">En esta release, de una manera sencilla, es posible utilizar un Data Provider para cargar las grillas. Para ello, K2BWebPanelDesigner incorpora un nuevo tipo de grilla basada en Data Provider. Se agregan las acciones Add FreeStyle Grid / Add Grid from Data Provider para permitir seleccionar el Data Provider con el que se desea cargar la grilla y automáticamente se creará la grilla basada en éste.</span><br />
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZAsRZBANObeV2T-W028xKdtnq3dcUGuH7t2LQYIM7WcNEPnhhiJAuUMqBMBSQUfNG0cZUwQWQmQyVEp13zTUmX-GpsmeEe9fHRGAM9qSVHmj_lThBmz0qWhGvRBAqoIpS5Uw2GwCVOt4/s1600/AddGridFromDataProvider.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZAsRZBANObeV2T-W028xKdtnq3dcUGuH7t2LQYIM7WcNEPnhhiJAuUMqBMBSQUfNG0cZUwQWQmQyVEp13zTUmX-GpsmeEe9fHRGAM9qSVHmj_lThBmz0qWhGvRBAqoIpS5Uw2GwCVOt4/s1600/AddGridFromDataProvider.png" /></a></div>
<br />
Esta grilla contendrá todos los campos especificados en el sdt de salida.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5qSKFK_WH5qWnmELiXCRx2ifH9vQXnHoLKItLutGXYEMnTI7NTRFYdWtHaGq1IlTPFMrEPvZTiZvy2MbfsuudVwlxeBSkg574ZKtX6tOnHwabE7Dyajw7tio7tgdZlvRNqCFedqdzCR0/s1600/ProductToDataProvider.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5qSKFK_WH5qWnmELiXCRx2ifH9vQXnHoLKItLutGXYEMnTI7NTRFYdWtHaGq1IlTPFMrEPvZTiZvy2MbfsuudVwlxeBSkg574ZKtX6tOnHwabE7Dyajw7tio7tgdZlvRNqCFedqdzCR0/s1600/ProductToDataProvider.png" /></a></div>
Además:<br />
<br />
<ol>
<li><span style="background-color: white; color: #222222;">Si el Data Provider posee órdenes definidos, se tomará para el mismo, el orden seleccionado en la grilla.</span></li>
<li><span style="background-color: white; color: #222222;">Si el Data Provider posee filtros definidos, se intentarán mapear (por nombre) con los filtros de la grilla. En caso de no poder realizar el mapping, el usuario lo podrá hacer manualmente.</span></li>
<li><span style="background-color: white; color: #222222;">Si el Data Provider presenta paginado, se utilizará ese paginado en lugar del de la grilla , haciendo que la carga sea mucho más eficiente.</span></li>
</ol>
</div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPNJLfIDD5MNbzKjJx0z7GGgp28cqSzffeYJaUne0T8zFn5FLNG3KvV9F2wgZHhtiboeVp-OD8hYYnO946yeatuPsQQc0uq6a7Yf0NdvwhRjZo-niQ8s5QfuRCybzGd5iwWcgodjqo_qw/s1600/GetProducts.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="67" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPNJLfIDD5MNbzKjJx0z7GGgp28cqSzffeYJaUne0T8zFn5FLNG3KvV9F2wgZHhtiboeVp-OD8hYYnO946yeatuPsQQc0uq6a7Yf0NdvwhRjZo-niQ8s5QfuRCybzGd5iwWcgodjqo_qw/s640/GetProducts.png" width="640" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrhLkl-UaLsRXX5UHZ9Qg1NP5DIHoZZHmNLOtp7oZyRkLO8PXRqhtDMcPUhLpb3pXsc9A-BehG6dOs3LRUbbs0_Kw9fCkmDhN_b-l7Ld8eDjFYFhYGcLSrQeJTGuMun4cnPtai8Zoz09U/s1600/GridGetProducts.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrhLkl-UaLsRXX5UHZ9Qg1NP5DIHoZZHmNLOtp7oZyRkLO8PXRqhtDMcPUhLpb3pXsc9A-BehG6dOs3LRUbbs0_Kw9fCkmDhN_b-l7Ld8eDjFYFhYGcLSrQeJTGuMun4cnPtai8Zoz09U/s1600/GridGetProducts.png" /></a></div>
<b>Mejores búsquedas</b> <br />
<br />
<br />
<div style="background-color: white; color: #222222;">
Estas no serán las únicas funcionalidades de la nueva versión de K2BTools, también mejoramos las búsquedas permitiendo de forma fácil cambiar la forma en que se realizan en los campos strings.</div>
<div style="background-color: white; color: #222222;">
Se permitirá buscar por "contains" en lugar de "begins with". Esto se permitirá especificar en los settings generales del WebPanelDesigner y de K2BTools. Por defecto será: <attName> like &<varName>, pero esto podrá ser modificado para poder tener las condiciones de esta manera: <attName> like "%" + &<varName> +"%"</div>
</div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpuRH0irRRvMjzAoHX5RqvNP9IKd9rJJ5lN9DzmBIPFYdL8dt85mvMPvq6PWMncywpAKaANq-bRgpyJZAaN5oF0pvMeAuNvkajMgCJmNgOLiSuZ1LXgVLDRT6_E-ORwHKRCAF-I9CUBaw/s1600/stringsearch.pgn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpuRH0irRRvMjzAoHX5RqvNP9IKd9rJJ5lN9DzmBIPFYdL8dt85mvMPvq6PWMncywpAKaANq-bRgpyJZAaN5oF0pvMeAuNvkajMgCJmNgOLiSuZ1LXgVLDRT6_E-ORwHKRCAF-I9CUBaw/s1600/stringsearch.pgn.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSNERaj8nm66-XehFXitPUHssrW4htaSB3wOfbfHeBC6EnIfeP_3YCbaaJAKpHvd2Wd-LgyOXO9PH5waS5rJxVrutmFbAmhX0SgHuMAyYp7hALFrK_SqSNYpQNyAfIX-ryktYsx_K6l3U/s1600/ConditionsDefault.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="69" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSNERaj8nm66-XehFXitPUHssrW4htaSB3wOfbfHeBC6EnIfeP_3YCbaaJAKpHvd2Wd-LgyOXO9PH5waS5rJxVrutmFbAmhX0SgHuMAyYp7hALFrK_SqSNYpQNyAfIX-ryktYsx_K6l3U/s640/ConditionsDefault.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<b>Universal Data Selector</b> <br />
<br />
<span style="background-color: white; color: #222222;">Cada vez es mayor la cantidad de aplicaciones multitenant que son desarrolladas, y para esto es necesario poder definir de forma sencilla condiciones que apliquen a todas las grillas que muestran datos. Para hacer esto qué mejor que usar el objeto Data Selector que GeneXus provee. En esta versión se podrá definir un universal data selector.</span></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPOrYq6KSCCcZZ03b1Ndu758JL8ItOmW7LocOBQL7h8dZ_fl8ownt0x-E0LnFTODDPZF03ZsR7yYrqfNCbMtKB4eXMol3yE8WQG5y2fvIZIOPpIk6Z5Y43-jKydlKZeGwOGGwS4RO14-E/s1600/UniversalDataSelector.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPOrYq6KSCCcZZ03b1Ndu758JL8ItOmW7LocOBQL7h8dZ_fl8ownt0x-E0LnFTODDPZF03ZsR7yYrqfNCbMtKB4eXMol3yE8WQG5y2fvIZIOPpIk6Z5Y43-jKydlKZeGwOGGwS4RO14-E/s1600/UniversalDataSelector.png" /></a></div>
<br />
<span style="background-color: white; color: #222222;">Este DataSelector va a ser usado en todos los objetos generados por los patrones K2B Entity Services y K2B Prompt. La única condición que tiene que cumplir es recibir por parámetro una variable que represente el &context. Con esto se logra de manera rápida tener en todos los objetos dicho filtro</span></div>
<div>
<br /></div>
<div>
<b>¿Y qué más?</b><br />
<br />
<br />
<div style="background-color: white; color: #222222;">
Unas cuantas mejoras de usabilidad. Mejoramos el proceso de especificación de literales para que sea más sencillo la traducción a otros lenguajes, optimizamos la carga de actividades de seguridad, mejoramos los reportes pdf para que tengan en cuenta el control info de los atributos presentes, y además en la XEv2 haremos que la integración con el GAM sea aún más sencilla.</div>
<div>
<br /></div>
<br />
<br /></div>
<div>
<b>¿Cu</b><b>ándo?</b></div>
<div>
<span style="background-color: white; color: #222222;">Estimamos que K2BTools 7.0 será liberado a principios del 2013, para arrancar el año con todo... no te lo pierdas!!!!!</span></div>
<div>
<br /></div>
<div>
<b>¿Y después?</b><br />
<br />
<span style="background-color: white; color: #222222;">En breve publicaremos otro artículo basado en la charla de roadmap que dimos en el evento contándoles lo nuevo para el 2013 y permitiéndoles participar sobre qué funcionalidad prefieren.</span></div>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/08947670438445313847noreply@blogger.com2tag:blogger.com,1999:blog-1703807005122508259.post-73709166856467744172012-10-11T09:31:00.000-07:002012-10-11T09:31:09.509-07:00K2BTools en el XXII Encuentro GeneXus<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="background-color: white; color: #222222;">Finalizó un encuentro más de la comunidad GeneXus, excelente en todo sentido, donde K2BTools tuvo una participación muy intensa.</span><br />
<div style="background-color: white; color: #222222;">
<div>
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Zclsroldl3M/UHROKA5OwNI/AAAAAAAAABU/Z4QVva1xqdU/s1600/DSC05205.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-Zclsroldl3M/UHROKA5OwNI/AAAAAAAAABU/Z4QVva1xqdU/s320/DSC05205.JPG" style="cursor: move;" width="240" /></a></div>
<br />
Para aquellos que no pudieron participar les queremos contar como vivimos este nuevo encuentro, las conferencias que se dieron alrededor de K2BTools y dejarles también el acceso a todo el material de las mismas. </div>
<div style="background-color: white; color: #222222;">
<br /></div>
<div style="background-color: white; color: #222222;">
<div class="separator" style="clear: both; text-align: center;">
</div>
El lunes comenzó el encuentro bien temprano con un fuerte trabajo en el stand, donde presentamos en forma reiterada y continua el K2BWebPanelDesigner. En cada break se acercaba muchísima gente al stand, donde pudimos mostrarles cómo construir interfaces ricas y complejas en unos pocos minutos con la nueva herramienta K2BWebPanelDesigner, así como también el resto de los componentes de K2BTools. Esta situación continuó durante todo el evento, lo que nos dejó cansados pero muy contentos. <br />
<br />
El trabajo en el stand fue muy satisfactorio; nos permitió mostrar las herramientas mano a mano, evacuar dudas, recibir sugerencias, y enriquecernos en la interacción con todas las personas de la comunidad GeneXus que se acercaban.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-7HVX3MimBZ8/UHRMMcKbGsI/AAAAAAAAAAU/pLD-YDjYot4/s1600/2012-10-02+17.05.04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="285" src="http://3.bp.blogspot.com/-7HVX3MimBZ8/UHRMMcKbGsI/AAAAAAAAAAU/pLD-YDjYot4/s320/2012-10-02+17.05.04.jpg" width="320" /></a></div>
<br /></div>
<div style="background-color: white; color: #222222;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQYz1qF-dmzW1PlD0MUs3lphXsZuA9qA9o8GoItyvLJ7PcrmQ-4t7zSlK5HMYv-l3lnVdi4-_zEz_DU03AN-w8Wbmhl6pABpbziI0udT0DzP_DWA-apAuM0sty9_7kIHj6Q6VnSypHCqM/s1600/419495_10151228474996343_195059216_n.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQYz1qF-dmzW1PlD0MUs3lphXsZuA9qA9o8GoItyvLJ7PcrmQ-4t7zSlK5HMYv-l3lnVdi4-_zEz_DU03AN-w8Wbmhl6pABpbziI0udT0DzP_DWA-apAuM0sty9_7kIHj6Q6VnSypHCqM/s320/419495_10151228474996343_195059216_n.jpg" width="320" /></a></div>
<br />
<br />
<br />
El martes fue "el día de las charlas de K2BTools" a partir de las 10:30 en la sala Florida. </div>
<div style="background-color: white; color: #222222;">
Daniel Giosa e Ignacio Tisnés comenzaron con su charla <a href="http://www.genexus.com/encuentro2012/xxii-encuentro-genexus--materiales?es,0,,2809" style="color: #1155cc;" target="_blank">Conociendo K2BTools</a>, donde mostraron para usuarios que no conocían la herramienta los componentes que integran K2BTools, su funcionamiento y analizaron los beneficios que se pueden obtener de ellos.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-jc_ThsVMi0o/UHVmpQFV13I/AAAAAAAAACg/mxlfUQF4Z3A/s1600/8047933711_b57415fc5a_c.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="214" src="http://1.bp.blogspot.com/-jc_ThsVMi0o/UHVmpQFV13I/AAAAAAAAACg/mxlfUQF4Z3A/s320/8047933711_b57415fc5a_c.jpg" width="320" /></a><a href="http://2.bp.blogspot.com/-1yHTdgy1h-Q/UHRMqVC3uTI/AAAAAAAAAAc/-T0lc94q1NU/s1600/8047939688_654c2f0ed2_c.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="214" src="http://2.bp.blogspot.com/-1yHTdgy1h-Q/UHRMqVC3uTI/AAAAAAAAAAc/-T0lc94q1NU/s320/8047939688_654c2f0ed2_c.jpg" width="320" /></a></div>
</div>
<div style="background-color: white; color: #222222;">
<br /></div>
<div style="background-color: white; color: #222222;">
<br />
A las 11.00 hrs. Gonzalo Mendioroz, Anibal Chavez, y Jose Luis Chalar en su charla <a href="http://www.genexus.com/encuentro2012/xxii-encuentro-genexus--materiales?es,0,,292">ProXcrm Gestión automatizada de sus Negocios, Clientes y Contactos</a> presentaron cómo desarrollaron un CRM desde cero en tres meses, con un único desarrollador, con excelentes resultados, y la productividad que lograron usando K2BTools. Esta charla sorprendió a todo el equipo.</div>
<div style="background-color: white; color: #222222;">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-QnavL2nYOvI/UHRM5y9uS6I/AAAAAAAAAAk/SH6bR4w_pjw/s1600/DSC05218.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-QnavL2nYOvI/UHRM5y9uS6I/AAAAAAAAAAk/SH6bR4w_pjw/s320/DSC05218.JPG" width="320" /></a></div>
<br /></div>
<div style="background-color: white; color: #222222;">
<br />
A las 11:45 hrs. Federico Dominioni presentó <a href="http://www.genexus.com/encuentro2012/xxii-encuentro-genexus--materiales?es,0,,2808" style="color: #1155cc;" target="_blank">K2BWebPanelDesigner</a> la nueva herramienta para construir interfaces muy potentes en pocos minutos. En esta charla Federico nos contó de que se trata la herramienta, y además construyó varios Web Panels en la propia charla con ella. En menos de 8 minutos implementó Web Panels que usando únicamente GeneXus lleva de 8 a 11 horas construir.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-D3OQzFKK0q0/UHVnPef82fI/AAAAAAAAACw/iHXLhj59TsQ/s1600/8047535951_1a59c6b0c5_c.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="http://1.bp.blogspot.com/-D3OQzFKK0q0/UHVnPef82fI/AAAAAAAAACw/iHXLhj59TsQ/s320/8047535951_1a59c6b0c5_c.jpg" style="cursor: move;" width="320" /></a><a href="http://1.bp.blogspot.com/-_gdOy4OH6JU/UHRNP6MvD4I/AAAAAAAAAA0/Hx_G5XVQ0UI/s1600/8047540734_c10998254c_c.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="http://1.bp.blogspot.com/-_gdOy4OH6JU/UHRNP6MvD4I/AAAAAAAAAA0/Hx_G5XVQ0UI/s320/8047540734_c10998254c_c.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
</div>
<div style="background-color: white; color: #222222;">
</div>
<div style="background-color: white; color: #222222;">
<br />
Para finalizar las charlas del martes, a las 12:15 hrs. Mayda Kurdian y Federico Dominioni presentaron <a href="http://www.genexus.com/encuentro2012/xxii-encuentro-genexus--materiales?es,0,,2810" style="color: #1155cc;" target="_blank">K2BTools: Presente y próximos pasos</a>. Se detallaron las nuevas funcionalidades en las que K2BTools está trabajando y se mostraron algunas de ellas. <br />
Mayda contó el "para qué" de cada funcionalidad y su concepto, mientras que, Federico mostró algunas en funcionamiento. Destacaron como todas ellas contribuyen a la misión de K2B Tools: productividad, integridad conceptual, flexibilidad y calidad en la construcción de aplicaciones con GeneXus.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-nggsHPzo1jk/UHRYxq3gwTI/AAAAAAAAABs/CQwZsuCvTl0/s1600/8047955114_bd858b5966_z.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="http://3.bp.blogspot.com/-nggsHPzo1jk/UHRYxq3gwTI/AAAAAAAAABs/CQwZsuCvTl0/s320/8047955114_bd858b5966_z.jpg" width="320" /></a></div>
</div>
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]-->
<br />
<div style="background: none repeat scroll 0% 0% white;">
<span style="font-size: small;"><span lang="ES" style="color: #222222; font-family: "Arial","sans-serif";"><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--></span></span></div>
<div style="background: none repeat scroll 0% 0% white;">
<span style="font-size: small;"><span lang="ES" style="color: #222222; font-family: "Arial","sans-serif";"><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
</span></span></div>
<div style="background: white;">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-z0dfA_rhuyA/UHVm0VQ8enI/AAAAAAAAACo/-B3q6IceUNU/s1600/8047956100_7f7bca0f58_c.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="http://2.bp.blogspot.com/-z0dfA_rhuyA/UHVm0VQ8enI/AAAAAAAAACo/-B3q6IceUNU/s320/8047956100_7f7bca0f58_c.jpg" style="cursor: move;" width="320" /></a></div>
<span style="font-size: small;"><span lang="ES" style="color: #222222; font-family: "Arial","sans-serif"; mso-ansi-language: ES;"><br /></span></span>
<span style="font-size: small;"><span lang="ES" style="color: #222222; font-family: "Arial","sans-serif"; mso-ansi-language: ES;">Luego del almuerzo, a las 14:30 hrs. con la
hermosa vista del piso 25 del Hotel Raddison, en un ambiente muy distendido se
realizó el "Café con K2BTools". Además del interesante aporte de
todos los allí presentes, que fueron el centro del "<span style="font-size: small;">C</span>afé con", se
aprovechó para discutir sobre las nuevas funcionalidades que se dieron en la
charla de roadmap, intercambiamos ideas, tips y soluciones entre todos.
<br />Gracias a esta actividad, surgieron varias sugerencias e interesantes
funcionalidades en las cuales ya estamos trabajando.</span></span></div>
<span style="font-size: small;">
</span><br />
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.727272033691406px;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-rYL9xsIPRao/UHRN79u_4GI/AAAAAAAAABM/MXfBLlgEIzo/s1600/8048250009_c3a6c82f48_c.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="http://4.bp.blogspot.com/-rYL9xsIPRao/UHRN79u_4GI/AAAAAAAAABM/MXfBLlgEIzo/s320/8048250009_c3a6c82f48_c.jpg" width="320" /></a></div>
</div>
<div style="background-color: white; color: #222222;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.727272033691406px;">
Finalmente, llegó el miércoles donde arrancamos bien temprano con Carlos Crispo que nos presentó un interesante sistema integral de Gestión de Depósitos desarrollado totalmente con GeneXus y K2BTools en su charla </div>
<a href="http://www.genexus.com/encuentro2012/xxii-encuentro-genexus--materiales?es,0,,2951" style="color: #1155cc;">Optimizar Procesos Logísticos con SIGA</a>. El sistema permite manejar desde simples emprendimientos, hasta los más complejos y con muy buena conectividad con otros sistemas.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-PgN1XJitf0Y/UHVk-8c88iI/AAAAAAAAACM/IX0cOm11F_c/s1600/8050363194_cb8f78f57c_c.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="264" src="http://1.bp.blogspot.com/-PgN1XJitf0Y/UHVk-8c88iI/AAAAAAAAACM/IX0cOm11F_c/s400/8050363194_cb8f78f57c_c.jpg" width="400" /></a></div>
<div style="background-color: white; color: #222222;">
<br />
<br /></div>
<div style="background-color: white; color: #222222;">
<br /></div>
<div style="background-color: white; color: #222222;">
Como conclusión: un evento que disfrutamos muchísimo, nos dio la posibilidad de conocer a muchos usuarios de K2BTools que no conocíamos, de interactuar más con la comunidad GeneXus y darnos cuenta de que estamos transitando por el camino correcto. Queremos continuar en este camino con su ayuda.<br />
<br />
Muchas gracias.</div>
<div style="background-color: white; color: #222222;">
Equipo K2BTools.<br />
<br />
<span lang="ES" style="font-family: "Calibri","sans-serif"; font-size: 11pt; line-height: 16px;">Pueden acceder a las </span><span lang="ES-UY" style="font-family: "Calibri","sans-serif"; font-size: 11pt; line-height: 16px;"><a href="http://www.facebook.com/media/set/?set=a.10151228473261343.504297.73850786342&type=1"><span lang="ES" style="font-family: "Verdana","sans-serif"; font-size: 8pt; line-height: 11.199999809265137px;">fotos</span></a></span><span lang="ES-UY" style="color: #6a6b6d; font-family: "Verdana","sans-serif"; font-size: 8pt; line-height: 11.199999809265137px;"> </span><span lang="ES" style="font-family: "Calibri","sans-serif"; font-size: 11pt; line-height: 16px;">de K2B Tools en el XXII Encuentro GeneXus.</span><br />
<span lang="ES" style="font-family: "Calibri","sans-serif"; font-size: 11pt; line-height: 16px;"><br /></span></div>
Anonymoushttp://www.blogger.com/profile/08947670438445313847noreply@blogger.com0tag:blogger.com,1999:blog-1703807005122508259.post-18915790831569604392012-05-23T09:17:00.001-07:002013-02-01T11:45:57.608-08:00Los diez mandamientos de K2BWebPanelDesigner<br />
<div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;">
</div>
<br />
<img alt="Still shot from the movie: The Ten Commandments." height="267" src="http://parentpreviews.com/legacy-pics/ten_commandments.jpg" width="400" /><br />
<br />
<br />
K2BWebPanelDesigner es una herramienta única en el mercado que permite construir web panels de una manera rápida y sencilla. A partir de una única especificación realizada en una parte nueva del objeto llamada K2BDesigner, se crea y mantiene las diferentes partes de un webpanel.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtBfaeG8CuNV7GNmfUkFtjMXdRBMI_jLk4UuPTY6jTKJ0lgpQ0QIa2kn_x3AF6YU50QhPalcHF3NIttBa6-670ClHNx5qh582nhL8QeuE9aeKebcsKcoVBvY7O96VF7LdnE4AeZHfLDyo/s1600/Picture1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtBfaeG8CuNV7GNmfUkFtjMXdRBMI_jLk4UuPTY6jTKJ0lgpQ0QIa2kn_x3AF6YU50QhPalcHF3NIttBa6-670ClHNx5qh582nhL8QeuE9aeKebcsKcoVBvY7O96VF7LdnE4AeZHfLDyo/s400/Picture1.png" width="400" /></a><br />
<br />
<br />
<br />
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
Para poder usarlo de manera óptima hay que tener en cuenta sus diez mandamientos.<br />
Así que apróntese para recibir esta revelación en este post.
<br />
<br />
<a href="http://0.tqn.com/d/chemistry/1/0/q/h/donottouch.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="http://0.tqn.com/d/chemistry/1/0/q/h/donottouch.jpg" width="200" /></a><br />
<b><br /></b>
<b>Mandamiento 1 - No tocarás el WebForm:</b>
<br />
<br />
El WebForm es completamente generado por K2BWebPanelDesigner. Así que deja que la herramienta haga su trabajo. Puedes construir todo en la parte K2BDesigner. Este mandamiento tiene una única excepción: el mandamiento ocho. Pero eso lo veremos más adelante... por ahora, no toques el WebForm!<br />
<br />
<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhe5MLUqtTZH8LxmfDaBVSMElbN0kLe0n05BJ2d8bnPebi_mOMRkUd_1S7r-f-NFYb4Nv-NlRDICUzEfMghWGdjAs6_OP17w-R1_vT4wnmsXsYYrYlEImn4UMMp3Pe2EQz-ZUVv921YRY/s1600/AddGridFromTransaction.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="104" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhe5MLUqtTZH8LxmfDaBVSMElbN0kLe0n05BJ2d8bnPebi_mOMRkUd_1S7r-f-NFYb4Nv-NlRDICUzEfMghWGdjAs6_OP17w-R1_vT4wnmsXsYYrYlEImn4UMMp3Pe2EQz-ZUVv921YRY/s320/AddGridFromTransaction.png" width="320" /></a><b>Mandamiento 2 - No construirás nodo por nodo</b><br />
K2BWebPanelDesigner parte de un webform vacío, por lo tanto no posee instancia por defecto como los patrones que parten de una transacción. Pese a esto no tendrás que construir todo nodo por nodo sino que cuentas con ayudas potentes para construir varios nodos en un solo click. Un ejemplo de esto es la funcionalidad de Add Grid From Transaction donde seleccionando una transacción es posible tener la grilla con sus atributos, filtros y órdenes.<br />
<br />
<a href="http://images.thetruthaboutcars.com/2012/02/features-editor-no-html-2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="http://images.thetruthaboutcars.com/2012/02/features-editor-no-html-2.png" width="171" /></a><b><br /></b><br />
<b>Mandamiento 3 - Te abstraerás de la la plataforma web</b><br />
<b><br /></b>
Si te fijas en la estructura de árbol del diseñador no aparecen conceptos de html como pueden ser: tables, divs, td, tr, etc. Uno trabaja con conceptos más abstractos de forma tal que la estructura quede más clara y entendible. K2BWebPanelDesigner se encarga de convertir dicha especificación a la plataforma web.<br />
<br />
<b><br /></b>
<b><br /></b>
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirP13lANxKlqyS5PnPHJ9zXWyifkKBrSnKFOGOQgOUYri2QCEFu65tXRdfNdpFYrdpTHssnoC_TY0uSjp_L5_sIlpXANAgzA2X-xFqjxQ4nZ8wVdplmQD3P4fEkcda_4Rxxcy24aI9c64/s1600/rulesareallmine.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="173" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirP13lANxKlqyS5PnPHJ9zXWyifkKBrSnKFOGOQgOUYri2QCEFu65tXRdfNdpFYrdpTHssnoC_TY0uSjp_L5_sIlpXANAgzA2X-xFqjxQ4nZ8wVdplmQD3P4fEkcda_4Rxxcy24aI9c64/s400/rulesareallmine.png" width="400" /></a></div>
<b>Mandamiento 4 - Las reglas son todas tuyas</b><br />
<b><br /></b>
El WebPanelDesigner no genera ninguna regla así que usuario de K2BWebPanelDesigner puede operar libremente con las reglas del objeto.<br />
<br />
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMUNhyK_Q8g8MxlTL35j5j59nlWhyphenhyphenYam1CAzI_mNYA3ma8eeLvK109C20nXWPo0cKvbde083rfCWx7AiY1s-X9_6EwISxuyykRvMMs8bQrh3HR4dDj8bD5uBgzF228kMhG9KA5EgAK5HA/s1600/FotoVariables.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="249" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMUNhyK_Q8g8MxlTL35j5j59nlWhyphenhyphenYam1CAzI_mNYA3ma8eeLvK109C20nXWPo0cKvbde083rfCWx7AiY1s-X9_6EwISxuyykRvMMs8bQrh3HR4dDj8bD5uBgzF228kMhG9KA5EgAK5HA/s320/FotoVariables.png" width="320" /></a><br />
<b>Mandamiento 5 - Puedes definir variables</b><br />
<br />
En la parte K2BDesigner se definen las variables que aparecen en pantalla de forma automática, así como otras variables que usa el K2BWebPanelDesigner o que éste define para hacer más fácil el desarrollo(ej: Windows, Context, TrnContext). Aquellas variables adicionales que serán utilizadas en nuestro código pero no estarán en pantalla deberán ser definidas directamente en la parte de variables del objeto GeneXus.<br />
<br />
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<a href="http://t3.gstatic.com/images?q=tbn:ANd9GcRlYAioe1wrqrsceqac1cXh0PrHLWfYXUAhnmR6D2Hs96A-wGOsGRawo7V1Dw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://t3.gstatic.com/images?q=tbn:ANd9GcRlYAioe1wrqrsceqac1cXh0PrHLWfYXUAhnmR6D2Hs96A-wGOsGRawo7V1Dw" /></a><br />
<b>Mandamiento 6 - Compartirás los eventos</b><br />
Cuando vamos a compartir algo, está bueno tener bien claro qué es de cada uno.<br />
Así que para ser justos, el usuario tendrá su propia sección para escribir código y K2BWebPanelDesigner va a tener la suya.<br />
<br />
La forma en que se comparte el código de los eventos es sencilla:<br />
<br />
<ul>
<li>Todos los bloques de eventos son de K2BWebPanelDesigner</li>
<li>Todas las subrutinas que empiezan con U_ son del usuario de K2btools.</li>
</ul>
<div>
<br /></div>
<div>
Pero no se preocupe. K2BWebPanelDesigner no es egoísta. Tiene el mismo gesto que el niño en la foto. Genera en cada evento invocaciones a subrutinas que comienzan con U_ para que el usuario pueda escribir su propio código. Mediante este código es posible definir el comportamiento de una acción, implementar cómo es la carga de una grilla, escribir código en el evento refresh, start, o cambiar el comportamiento del código generado por K2BWebPanelDesginer.</div>
<div>
<br /></div>
<div>
Como ejemplo si defines la siguiente acción</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgef5gr4RypCiO6eXLgGNpDK94UPcQBcPaHXzA3P5eD6D7thzyhnjRArUVCO64oN7NzY8JArWUQV-LR8VHTJ9myNOTeUnqzYKI76Xq6Y_PsF-heSTN2T2nu3Ce35w7-xgOOiKasBijg1VI/s1600/SelectCustomer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgef5gr4RypCiO6eXLgGNpDK94UPcQBcPaHXzA3P5eD6D7thzyhnjRArUVCO64oN7NzY8JArWUQV-LR8VHTJ9myNOTeUnqzYKI76Xq6Y_PsF-heSTN2T2nu3Ce35w7-xgOOiKasBijg1VI/s1600/SelectCustomer.png" /></a></div>
<div>
<br /></div>
<div>
K2BWebPanelDesigner generará un evento que invocará a una subrutina que será implementada por el usuario. </div>
<div>
<br /></div>
<div>
<div>
<div>
Event 'E_SelectCustomer'</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>// ---- K2BTools - Do Not Change, Editor Method ----</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>Do 'U_SelectCustomer'</div>
<div>
EndEvent</div>
</div>
<div>
<br /></div>
<div>
Sub 'U_SelectCustomer' // Subrutina a ser implementada por el usuario.</div>
<div>
<br /></div>
<div>
EndSub</div>
<div>
<br />
A dicha acción se le puede configurar seguridad, confirmación condicional, si es multi row o no. Todo el código encargado en resolver dichas cuestiones será encapsulado en el evento, dejando como único punto a resolver para el usuario la implementación de la acción, independizándose de cómo es invocada.</div>
<div>
<br /></div>
<div>
Como ayuda en una acción no es necesario ir a la parte de los eventos y buscar la subrutina. Parado en la acción se puede seleccionar "Go To Event" y acceder directamente a la subrutina. Las que se pueden implementar son aquellas en las que aparece el ícono con el usuario.</div>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2yW0BXRtsflPzs96MmpGBx754i8BxV0x4sAJiI13-Y4WCAbKBZac0u1P9wz6EtZL84gybXGSUoG7uQpCadbFRldeEo_423I_JcV51zNWKHwxT0tcHxsbda6M1311XdOWtS007f0unh8E/s1600/GoToEvent.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="111" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2yW0BXRtsflPzs96MmpGBx754i8BxV0x4sAJiI13-Y4WCAbKBZac0u1P9wz6EtZL84gybXGSUoG7uQpCadbFRldeEo_423I_JcV51zNWKHwxT0tcHxsbda6M1311XdOWtS007f0unh8E/s400/GoToEvent.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<i><br /></i>
<i><br /></i>
<a href="http://allmylegalforms.com/wp-content/uploads/2011/07/name-change-blackboard.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="132" src="http://allmylegalforms.com/wp-content/uploads/2011/07/name-change-blackboard.jpg" width="200" /></a><b>Mandamiento 7 - No te preocuparás del renombre de los controles:</b>
<br />
<b><br /></b>
Supongamos que en el código que se mostró anteriormente la subrutina de nombre U_SelectCustomer<br />
se encarga de almacenar el cliente actual en una variable en pantalla de nombre &CurrentCustomerId.<br />
<br />
<div>
<br /></div>
<div>
Sub 'U_SelectCustomer'</div>
<div>
&CurrentCustomerId = CustomerId</div>
<div>
EndSub</div>
<br />
<i><br /></i>
Asumamos que por puro capricho, se renombra esa acción y se le coloca el nombre de ChangeCustomer. También a la variable en pantalla CurrentCustomerId se le renombra a MyCustomerId<br />
Pues bien, basta de miedos, K2BWebPanelDesigner detectará que se está renombrando la acción y la variable; y renombrará automáticamente el código.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgruL0bkVnsKSQ6F5gFQPqZTKT3abv2GJ-lZyCKqcBDkSJH-zq5VMZoE5cnw9WsA3wIf_1RrKQk6oUaQD0Ra0Cdy9UpIh3dOZKbbrfwnDPp2GDKMst33pxxmXof_mDYMlDkyT3t8BQF9-I/s1600/RenameVariable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgruL0bkVnsKSQ6F5gFQPqZTKT3abv2GJ-lZyCKqcBDkSJH-zq5VMZoE5cnw9WsA3wIf_1RrKQk6oUaQD0Ra0Cdy9UpIh3dOZKbbrfwnDPp2GDKMst33pxxmXof_mDYMlDkyT3t8BQF9-I/s1600/RenameVariable.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzIbGoRJ_3mkxnYjHljAIGNrrp2aDlxMADIyUVjjUdnBRGfAVICtXBd6AxeQkduxpwRzU-wPAGIprE-yrGQkqxPzAOkfhD1X4arJr2qC5HoOI8vsjW_Dfixy8fJ5Iyfp_nrRlHmfF1PM4/s1600/RenameMethod.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzIbGoRJ_3mkxnYjHljAIGNrrp2aDlxMADIyUVjjUdnBRGfAVICtXBd6AxeQkduxpwRzU-wPAGIprE-yrGQkqxPzAOkfhD1X4arJr2qC5HoOI8vsjW_Dfixy8fJ5Iyfp_nrRlHmfF1PM4/s1600/RenameMethod.png" /></a></div>
<br />
<br />
<i><br /></i>
<br />
<div style="clear: left; float: left; font-style: italic; margin-bottom: 1em; margin-right: 1em;">
</div>
<i><br /></i>
<br />
<div style="font-style: italic;">
Sub 'U_ChangeCustomer'</div>
<div style="font-style: italic;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>&MyCustomerId = CustomerId</div>
<div style="font-style: italic;">
EndSub</div>
<div style="font-style: italic;">
<br /></div>
<div style="font-style: italic;">
Event 'E_ChangeCustomer'</div>
<div style="font-style: italic;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>// ---- K2BTools - Do Not Change, Editor Method ----</div>
<div style="font-style: italic;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>Do 'U_ChangeCurrentCustomer'</div>
<div style="font-style: italic;">
EndEvent</div>
<div style="font-style: italic;">
<br /></div>
<div style="font-style: italic;">
<br /></div>
<div style="font-style: italic;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifdWnkVIi5hQupJ_PYIOUH-rbXU-C4dltXys3p-z5d7QvagbKWvhZ503uLcE79_4JuV11wS1bIQCu78ZvVjpIm_bYLRy2U56if7QQ4nzR1zTUggUVaIp1XzReQrhsg9SqbrEBPwCD8roQ/s1600/magia+1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifdWnkVIi5hQupJ_PYIOUH-rbXU-C4dltXys3p-z5d7QvagbKWvhZ503uLcE79_4JuV11wS1bIQCu78ZvVjpIm_bYLRy2U56if7QQ4nzR1zTUggUVaIp1XzReQrhsg9SqbrEBPwCD8roQ/s200/magia+1.jpg" width="198" /></a><br />
<div style="font-style: italic;">
<br /></div>
<div style="font-style: italic;">
<br /></div>
<div style="font-style: italic;">
<br /></div>
<div style="font-style: italic;">
<br /></div>
<div style="font-style: italic;">
<br /></div>
<div style="font-style: italic;">
<br /></div>
<div style="font-style: italic;">
<br /></div>
¿Magia?... no, no. Es K2BWebPanelDesigner.
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="font-style: italic;">
<b style="font-style: normal;"><br /></b>
<b style="font-style: normal;"><br /></b>
<b style="font-style: normal;"><br /></b>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkY1H-P0vNxrlFXFeYk_fEVrNtfoZjh-PN9zvhg1nNGZLWuhQDFVXEUkkYRcbJlGX8skVt7OLbjZu7L37sZ7IDkrSFaQJ-37JNzHqHXAuB6KinEJnDf-1pjYu12mMA73Ei5-G39R6MNxI/s1600/UserRegion.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="220" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkY1H-P0vNxrlFXFeYk_fEVrNtfoZjh-PN9zvhg1nNGZLWuhQDFVXEUkkYRcbJlGX8skVt7OLbjZu7L37sZ7IDkrSFaQJ-37JNzHqHXAuB6KinEJnDf-1pjYu12mMA73Ei5-G39R6MNxI/s320/UserRegion.png" width="320" /></a><b style="font-style: normal;">Mandamiento 8 - Podrás tocar el web form sólo cuando sea estrictamente necesario</b></div>
<div>
Bien, es hora de flexibilizar el mandamiento uno. Para esto vamos a permitir agregar una user region que generará un div dentro del cual se podrá ir a la parte del web form y colocar lo que se desee ahí dentro. Puedes incorporar allí lo que desees.</div>
<br />
<i><br /></i>
<i><br /></i>
<i><br /></i>
<i><br /></i>
<i><br /></i>
<i><br /></i>
<i><br /></i>
<br />
<b><br /></b>
<b><br /></b>
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_jBI2hzNhKkcjm5au55nYG4fjqlDh6kkVnSXlnreCXPCJzy6fgULZTxZYK8tI_aeB2SR90b1YyF9orylBkFcJNyKkQMNHEW9JL3JQRuJyaGpZjdNkGmULuzP-UYQ5pieGpotIqOpk4z8/s1600/ReleaseK2BOBjectDesigner.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="244" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_jBI2hzNhKkcjm5au55nYG4fjqlDh6kkVnSXlnreCXPCJzy6fgULZTxZYK8tI_aeB2SR90b1YyF9orylBkFcJNyKkQMNHEW9JL3JQRuJyaGpZjdNkGmULuzP-UYQ5pieGpotIqOpk4z8/s320/ReleaseK2BOBjectDesigner.png" width="320" /></a></div>
<b>Mandamiento 9 - Lo que K2BWebPanelDesigner junta el usuario puede separar</b><br />
<b><br /></b>
Una vez que aplicas K2BWebPanelDesigner, puede surgir el temor o miedo de ¿ahora para siempre mi web panel será mantenido por el diseñador? Si le quiero pasar el web panel a alguien que no tiene la herramienta ¿cómo hago? Muy sencillo. Lo que K2BWebPanelDesigner junta el usuario lo puede separar y puedes eliminar la parte del WebPanelDesigner, para pasar a mantener el objeto a mano, parándote en el mismo y seleccionando en el menú Edit->Release K2BObjectDesigner. Esto lo único que hace es eliminar la parte K2BDesginer. No elimina ni los eventos, variables, ni el web form ya generado.<br />
<b><br /></b>
<b><br /></b>
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik9zArZfdw8pB6JpoBIOsZbG6Uv-WeuNXHwCfQJjKoDyJmrjSCaDbgiPFY3aQ-fHv5Er1U_Zo9hmdYeRSV7oP3P-mRi2axffuEKHAiGIGSVBtO_Dpu9h6NPf-CFU7hbOxUjGHFNoRp1fs/s1600/History.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik9zArZfdw8pB6JpoBIOsZbG6Uv-WeuNXHwCfQJjKoDyJmrjSCaDbgiPFY3aQ-fHv5Er1U_Zo9hmdYeRSV7oP3P-mRi2axffuEKHAiGIGSVBtO_Dpu9h6NPf-CFU7hbOxUjGHFNoRp1fs/s1600/History.png" /></a></div>
<b>Mandamiento 10 - Puedes volver en el histórico</b><br />
<b><br /></b>
Algunos dicen que pasado pisado. Quizás lo digan porque utilizan sólo patrones para generar web panels. En ese caso; el pattern y el web panel son objetos diferentes, y si deseo volver atrás debo volver atrás en el pattern y también en el WebPanel. Pero con K2BWebPanelDesigner, al formar parte de la especificación del objeto es muy fácil volver atrás. Incluso si deseas pasarle un web panel a alguien que no tiene el K2BWebPanelDesginer puedes usar el mandamiento 9 para liberarlo; se lo pasas y luego vuelves en el histórico al objeto cuando tenía K2BWebPanelDesigner aplicado.<br />
<br />
<br />
<b><br /></b>
Estos son los únicos diez mandamientos que tienes que aprender para usar esta herramienta. Puedes descargar la herramienta desde <a href="http://marketplace.genexus.com/viewproductversion.aspx?254,4,0,0," target="_blank">aquí</a>. No necesitas tener K2BTools instalada para usarlo.<br />
Esperamos tu review dentro del market place y por cualquier consulta puedes preguntar desde el marketplace o suscribirte a nuestro <a href="http://www.k2btools.com/comunidad/foro?es" target="_blank">foro</a>.<br />
<br />
Puedes ver <a href="http://www.youtube.com/watch?v=iCFtmp5QpGE">aquí</a> un video de cómo crear un WebPanel con K2BWebPanelDesigner en menos de 5 minutos. <br />
<br />
Estamos en contacto.<br />
<br />
Federico Dominioni<br />
K2BTools<br />
<br />
<br />
<br />
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/08947670438445313847noreply@blogger.com5tag:blogger.com,1999:blog-1703807005122508259.post-78296039756709317502012-03-06T05:09:00.001-08:002013-03-19T09:57:04.972-07:00Aprendiendo K2BTools<br />
<div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;">
<img height="132" src="http://gregdetisionlinesuccess.com/wp-content/uploads/2011/06/people-learning.jpg" width="200" /></div>
<br />
<br />
<div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;">
</div>
<br />
<br />
¿Deseas probar K2BTools? ¿Quieres aprender a usarlo? ¿Se agrega un nuevo integrante a tu equipo de desarrollo y no sabes cómo capacitarlo?<br />
<br />
Pues simplemente sigue los pasos de este artículo y estarás capacitado para probar y desarrollar con K2BTools.<br />
<br />
<b><span style="font-size: large;">Instalación</span></b><br />
Lo primero que hay que hacer es instalar la versión de K2BTools, ya que para aprender K2BTools hay que usarlo y para usarlo hay que tenerlo instalado :) <br />
Para esto la mejor manera es ir a <a href="http://www.k2btools.com/" target="_blank">nuestro sitio</a> Verás una imagen que dice "K2BTools", seleccionas "Bajar" y en la siguiente página das click en "Descargar".<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaZymJjhc1N4lf0pT3usktEvcsYww3JtSX5Q_siUIDFYkYp1sRLnZv8eri-8L4pLuWKWe6btT1lTJIp5QXGZyQu3KBjFbC83R6jQRXSPDoCMnw-ECA02gV1f3aM6-WnKiKd2eP-nlkhzY/s1600/DownloadK2BTools.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaZymJjhc1N4lf0pT3usktEvcsYww3JtSX5Q_siUIDFYkYp1sRLnZv8eri-8L4pLuWKWe6btT1lTJIp5QXGZyQu3KBjFbC83R6jQRXSPDoCMnw-ECA02gV1f3aM6-WnKiKd2eP-nlkhzY/s320/DownloadK2BTools.png" width="235" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUZJDOXKRQTolYQ0TXZtTee2uBRAjCHEYbaHHyXNERVHdEFWIgSG8kkWGnvjfBauEbg8ENR-aoI0PWj8K-DfHHRWhT2gT62Y_S_5IQN7MbjBemzrtWyegjqy8VHc-DUZfBcqyc8-CPUiE/s1600/Descargar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="90" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUZJDOXKRQTolYQ0TXZtTee2uBRAjCHEYbaHHyXNERVHdEFWIgSG8kkWGnvjfBauEbg8ENR-aoI0PWj8K-DfHHRWhT2gT62Y_S_5IQN7MbjBemzrtWyegjqy8VHc-DUZfBcqyc8-CPUiE/s320/Descargar.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Al seleccionar descargar, se redirigirá a la página del marketplace donde está el producto para ser descargado.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBh36AGiQ8L1e4vsL8xF5ytqMh8ia8HYp_H76lZxUahj9ZZBFt2ZXvkLbi0bMDfETdOpP-2vquNXWqUy2pBc86VKurXXuY2mZQTneGVPwm4CuN5T7H-5EUPTnZ8bPCRrUS0c1q6uF0pso/s1600/K2BToolsFreeEditionMarketplace.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBh36AGiQ8L1e4vsL8xF5ytqMh8ia8HYp_H76lZxUahj9ZZBFt2ZXvkLbi0bMDfETdOpP-2vquNXWqUy2pBc86VKurXXuY2mZQTneGVPwm4CuN5T7H-5EUPTnZ8bPCRrUS0c1q6uF0pso/s400/K2BToolsFreeEditionMarketplace.png" width="400" /></a></div>
<br />
<br />
Para descargar hay que seleccionar el botón de download asociado a la versión de GeneXus para la cual se desea instalar K2BTools (XEv1 o XEv2).<br />
<br />
Te preguntarás: Pero a mi me gustaría usar la versión full no la free edition ¿Dónde la descargo? <br />
Pues la respuesta es que <b>son</b> <b>el mismo</b> <b>setup</b>. La diferencia es como vas a activar la licencia después, que lo veremos en la sección "Autorización".<br />
Cuando tengas la versión descargada lo único que debes hacer es correr el setup. Este preguntará el path del directorio donde está instalado GeneXus. En la mayoría de los casos no necesitas cambiar nada y solo es dar "siguiente". En caso que estes usando una versión trial de GeneXus, deberás ingresar el path manualmente pues el default path va siempre contra la versión liberada.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizN1Kn8g_B_dtlHEvU8_-0NxDa-KCxhKnIjXoHsJnZKFI0in_dMgUzLUSafavEVN5s2IjkSFKrtUog-WOv8FodYigwtTCz2wKTB6662VrqcN_9Q1MEpj5Y_ykwyQ1oAloNHMX4pQjwCeo/s1600/SelectInstalationFolder.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="326" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizN1Kn8g_B_dtlHEvU8_-0NxDa-KCxhKnIjXoHsJnZKFI0in_dMgUzLUSafavEVN5s2IjkSFKrtUog-WOv8FodYigwtTCz2wKTB6662VrqcN_9Q1MEpj5Y_ykwyQ1oAloNHMX4pQjwCeo/s400/SelectInstalationFolder.png" width="400" /></a></div>
<br />
<br />
<b><span style="font-size: large;">Autorización</span></b><br />
Una vez que se tiene instalada la versión se deberán seguir los pasos para autorizarla y poder usarla. Para esto, la primera vez que se abra GeneXus aparecerá en la barra de menú del Developer Environment la opción "K2BTools". Ahí seleccionando se desplegarán otras opciones, entre ellas "Autorizar K2BTools".<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI1pBNIa3OhKFUPzL9-YvpIHmcmjHxlcZw_oN5z9PW3_LeJ5LUyInVbuV0x-Q7gKfZof-gRd2meesU6c2LLl6r4wag9Xhlt-e26YfiknHejyT5Z2Bkr-EU-ZhUhsWNbvAhlZGXnYT6CBA/s1600/AuthorizeK2BTools.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI1pBNIa3OhKFUPzL9-YvpIHmcmjHxlcZw_oN5z9PW3_LeJ5LUyInVbuV0x-Q7gKfZof-gRd2meesU6c2LLl6r4wag9Xhlt-e26YfiknHejyT5Z2Bkr-EU-ZhUhsWNbvAhlZGXnYT6CBA/s1600/AuthorizeK2BTools.png" /></a></div>
<br />
<br />
La forma de autorizar K2BTools es similar a la de cualquier producto GeneXus. Se cuenta con un license manager en la cual podrás seleccionar el producto a autorizar. <br />
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2e_T4pQUUGRH_Gvgz_B2mDCFkpm3p5hxazcIJ0AvOBiQ_SoNoJFg36ov9Ufw-Db8xFFq7hSAhpeRR26siIoRU4HkJfGj_i-y4ReK8vHq1UTrgXzhh_k_nAgp7pdB5HtVEndFHqFiopnY/s1600/LicenceManager.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="215" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2e_T4pQUUGRH_Gvgz_B2mDCFkpm3p5hxazcIJ0AvOBiQ_SoNoJFg36ov9Ufw-Db8xFFq7hSAhpeRR26siIoRU4HkJfGj_i-y4ReK8vHq1UTrgXzhh_k_nAgp7pdB5HtVEndFHqFiopnY/s400/LicenceManager.png" width="400" /></a></div>
<b><br /></b>
Existen dos tipos de licencia de K2BTools:<br />
<b><br /></b>
<b>K2BTools Free Edition:</b> Es una edición gratuita que permite mantener hasta 20 instancias de cada patrón. La licencia se otorga ilimitada, o sea no tienes límite de tiempo, puedes usarlo indefinidamente, siempre y cuando mantengas esa cantidad de instancias. Esta cantidad es suficiente para desarrollar una aplicación pequeña o para probar la versión.<br />
<br />
<b>K2BTools: </b>La otra licencia es la licencia Full que no tiene ninguna restricción en cantidad de objetos. Si has adquirido licencias y tienes disponibles lo mejor será optar por solicitar esta licencia.<br />
<br />
Solicita la licencia online y una vez activada ya puedes entrar a trabajar con K2BTools.<br />
<br />
<b><span style="font-size: large;">Comenzando con K2BTools</span></b><br />
Bien, pues para comenzar con K2BTools tienes que apoyarte en <a href="http://www.k2btools.com/files/guia-comenzando-con-k2b-tools?es" target="_blank">esta guía</a>.<br />
Esta es la guía fundamental que no puede faltarle a ninguna persona que quiera empezar a probar o capacitarse con K2BTools.<br />
Así que sigue los pasos de la guía y no olvides ver los videos "Comenzando con" de cada uno de los patrones.<br />
<br />
<b>1 - Comenzando con K2BEntityServices</b><br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/reW0NUQwcvA?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<b>2 - Comenzando con K2BTrnForm</b><br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/-BQTDlC16Gs?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<b>3 - Comenzando con K2BPrompt</b><br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/OjJD02u7LRY?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
Lo más importante para aprender a usar la versión: desarrollar ustedes mismos con K2BTools y para eso la forma más simple es hacer el taller guiado que se sigue paso a paso. Los pasos están bien detallados, y no requieres tener conocimientos de GeneXus para poder seguirlo.<br />
El taller lo puedes descargar desde <a href="http://www.k2btools.com/files/taller-k2b-tools?es" target="_blank">aquí</a><br />
<br />
Para hacer todos los ejercicios del taller vas a tener que usar una herramienta novedosa que hemos incorporado a K2BTools y que permiten construir web panels genéricos. La herramienta se llama K2B WebPanelDesigner. En este <a href="http://blog.k2btools.com/2011/11/webpanel-designer-una-manera-innovadora.html" target="_blank">artículo del blog</a> hay buena información sobre ella. <br />
<br />
<b><span style="font-size: large;">Para saber más</span></b><br />
Para complementar los conocimientos o si de pronto deseas más información puedes recurrir también a videos de las charlas realizadas en el Encuentro de usuarios GeneXus 2011 en Montevideo.<br />
<br />
<b>Descubra K2BTools y alcance un nuevo nivel de productividad: </b><br />
Parte 1 :<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/MhrO_6r7rLY/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/MhrO_6r7rLY&fs=1&source=uds" />
<param name="bgcolor" value="#FFFFFF" />
<embed width="320" height="266" src="http://www.youtube.com/v/MhrO_6r7rLY&fs=1&source=uds" type="application/x-shockwave-flash"></embed></object></div>
<br />
Parte 2:<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/9RyGYWC4kno?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<br />
<br />
Si quieres obtener información en un nivel más gerencial recomendamos este video.<br />
<br />
<b>K2BTools su alidado en nuevos proyectos con GeneXus</b><br />
Parte 1:<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/mhZsMRCQzf4?feature=player_embedded' frameborder='0'></iframe></div>
<br />
Parte 2:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/B07HMlm4TRk?feature=player_embedded' frameborder='0'></iframe></div>
<br />
Finalmente si deseas saber en qué estamos trabajando, y algo de roadmap, recomiendo esta charla.<br />
<br />
<br />
<b>K2BTools: actualizad y próximos pasos</b><br />
<b><br /></b>
Parte 1:<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/5egDCuL8cPs?feature=player_embedded' frameborder='0'></iframe></div>
<br />
Parte 2:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/30FfPPxxFKg?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<b><span style="font-size: large;">Soporte</span></b><br />
El soporte de la versión K2BTools Free Edition es únicamente a través del foro. Así que si estás probando la versión te recomiendo suscribirte <a href="http://www.k2btools.com/comunidad/foro?es" target="_blank">aquí</a>. Para la versión de K2BTools, además del foro, se pueden reportar incidentes usando el sistema de Issue Tracking . Para esto la forma más fácil es mandar un mail a support@k2btools.com . Para que nosotros sepamos que tienes licencias de K2BTools, debes mandar este mail desde la dirección de correo electrónico que figura en tu usuario de Gxtechnical.<br />
<br />
<br />
<br />
Así que estamos en contacto.<br />
<br />
Federico Dominioni.<br />
fdominioni@k2business.com<br />
<br />
<br />
<br />
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/08947670438445313847noreply@blogger.com1tag:blogger.com,1999:blog-1703807005122508259.post-17854898910968597592012-03-05T05:41:00.001-08:002012-03-05T06:27:49.356-08:00¡Atención Brasil! Blog de K2BTools en portugués<br />
<div class="MsoNormal" style="text-align: justify;">
<span lang="ES-TRAD">Ahora la comunidad
brasilera podrá disfrutar de artículos de interés acerca de K2BTools en idioma portugués.
Fabricio de los Santos, director de <a href="http://evol2.delfasoft.com.br/delfasoft.aspx" target="_blank">Delfasoft</a> y agente de K2BTools en Brasil,
compartirá periódicamente posts acerca de diferentes temáticas. ¡Súmate tu
también!</span></div>
<div class="MsoNormal" style="text-align: justify;">
<br /></div>
<div class="MsoNormal" style="text-align: justify;">
<a href="http://www.k2btools.com/blogportugues"><span lang="ES-TRAD">www.k2btools.com/blogportugues</span></a></div>K2B Toolshttp://www.blogger.com/profile/04215138846518077491noreply@blogger.com0tag:blogger.com,1999:blog-1703807005122508259.post-1274442463330450182012-01-19T10:26:00.000-08:002012-01-19T10:26:05.187-08:00Múltiple selección con K2B WebPanelDesigner<b>Selecciones múltiples</b><br />
<div>
<b><br /></b></div>
<div>
<div>
<div>
<b id="internal-source-marker_0.2850931554567069"><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Muchas veces se tiene la necesidad, de seleccionar determinados elementos de una colección y realizar una acción con todos ellos. La acción a realizar con los items seleccionados varía mucho, pero la complejidad inicial radica en resolver la interfaz que posibilite la selección de estos elementos.</span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Para esto K2B WebPanelDesigner permite definir grillas de múltiple selección que resuelven toda la operativa de seleccionar elementos de una grilla hacia otra; almacenando los items seleccionados en un sdt, para que el desarrollador en su código pueda realizar cualquier acción con ellos.</span></b><br />
<b><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></b><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIPatRbZl1vm9DDwh3780EYVFgKvfvEgEB_xZ7VcVsSrV2YZo0AZdaXPGIauxkK4904-9XywQQWj9tfWSDZ7-rrK8uF5FSJ4F1QqXhXMx7cUNm41imj6Cd-foq730sfq58W_TVCnooUSI/s1600/GrillaMultipleSeleccion.png" imageanchor="1" style="margin-left: auto; margin-right: auto; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIPatRbZl1vm9DDwh3780EYVFgKvfvEgEB_xZ7VcVsSrV2YZo0AZdaXPGIauxkK4904-9XywQQWj9tfWSDZ7-rrK8uF5FSJ4F1QqXhXMx7cUNm41imj6Cd-foq730sfq58W_TVCnooUSI/s1600/GrillaMultipleSeleccion.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">A la izquierda la grilla de elementos a seleccionar, a la derecha los elementos seleccionados</td></tr>
</tbody></table>
</div>
</div>
</div>
<div>
<b style="font-family: Arial; font-size: 15px; white-space: pre-wrap;">Especificación:</b></div>
<div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><b><br /></b></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial; font-size: 15px; white-space: pre-wrap;">Para especificar la múltiple selección en el K2B WebPanel Designer parado en un nodo adecuado (webform, columns, tabs , group, etc) hacer un add de un nodo Multiple Selection.</span></div>
<div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><b><br /></b></span></span></div>
<div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><b><br /></b></span></span></div>
<div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><b><br /></b></span></span></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtWzlaFkWRee99a4LgtGMpwAowSLqW4Np1wt56nobKUdKyfQEW98d3qJZCg9O8TNrNwXrsYdRCGc_fKMEeq9blUwMOYALbrLY9KY485EIJd4huIHVxbm5EPeyYwuf-cVpcRtIkGSZj4o8/s1600/AddMultipleSelection.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtWzlaFkWRee99a4LgtGMpwAowSLqW4Np1wt56nobKUdKyfQEW98d3qJZCg9O8TNrNwXrsYdRCGc_fKMEeq9blUwMOYALbrLY9KY485EIJd4huIHVxbm5EPeyYwuf-cVpcRtIkGSZj4o8/s320/AddMultipleSelection.png" width="320" /></a></div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><b><br /></b></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><b><br /></b></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><u><br /></u></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">Debajo de este nodo se deberá especificar la grilla en la que estarán basados los items que se van a seleccionar. La otra grilla será generada automáticamente a partir de la especificación de la primera.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">Es posible dar de alta esta grilla basada en una transacción mediante la acción Add Grid From Transaction. </span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii4QZaZenejHFoWBkqe_HjncQWZC90jmBnDXz5Xgdi67GPiYgAbAMLz7X-GyoWngx3WYGndwOBB1NiYpMX891HhJlpRuZv61RI5iKUk_9CxYkB17_OHHrGLChFlJQL4r65zGOSJRnO9GA/s1600/AddGrid+from+transaction.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii4QZaZenejHFoWBkqe_HjncQWZC90jmBnDXz5Xgdi67GPiYgAbAMLz7X-GyoWngx3WYGndwOBB1NiYpMX891HhJlpRuZv61RI5iKUk_9CxYkB17_OHHrGLChFlJQL4r65zGOSJRnO9GA/s400/AddGrid+from+transaction.png" width="400" /></a></div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">Es posible también especificar un free style grid para mostrar los elementos a seleccionar.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">Una vez que se agrega la grilla, se deberá especificar en qué sdt quedarán almacenados los elementos seleccionados. </span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">En el nodo multiple selection se cuenta con una propiedad SDT.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzcsJgqeaLrA9zBKvFP-yT-e9jy_PqvFTi41EPE2FVa_Aom52NmTGmJK8Y4SQdVuc9mMpCRjsjqiffu_ENQd5ZpZRnKaC544d0XwkbyoCtMUvanLlJc8AvJwjbTTciZfQVxnrcVv2geaE/s1600/MultipleSelectionSDT.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzcsJgqeaLrA9zBKvFP-yT-e9jy_PqvFTi41EPE2FVa_Aom52NmTGmJK8Y4SQdVuc9mMpCRjsjqiffu_ENQd5ZpZRnKaC544d0XwkbyoCtMUvanLlJc8AvJwjbTTciZfQVxnrcVv2geaE/s1600/MultipleSelectionSDT.png" /></a></div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">La asignación de este SDT se puede hacer de dos maneras, automática o manual.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">Para realizarlo de manera automática, parado en el nodo multiple selection se cuenta con una acción Generate Multiple Selection SDT.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3ZyVFTA8fTd1IEWGt8UYLF0GpdupIJsZMEZ1xZjfbjFkroJl3-Q4ns2Dc4rzbn_Rv0VTHhzWFPYGzzYq5DzEkV5XESf4L59d0kk_csdet1gCIlybGwH5Jn6ziniZoRQikVNjsASuIJ0s/s1600/GenerateMultiSelectionSDT.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3ZyVFTA8fTd1IEWGt8UYLF0GpdupIJsZMEZ1xZjfbjFkroJl3-Q4ns2Dc4rzbn_Rv0VTHhzWFPYGzzYq5DzEkV5XESf4L59d0kk_csdet1gCIlybGwH5Jn6ziniZoRQikVNjsASuIJ0s/s320/GenerateMultiSelectionSDT.png" width="320" /></a></div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">Esto lo que hace es a partir de la especificación de la grilla genera un sdt y lo asigna a la propiedad SDT del nodo multiple selection.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">Si ya se tiene creado el SDT, la otra opción es asignarlo manualmente en la propiedad. La única condición que debe cumplir el SDT para poder ser asignado es que por cada variable en la grilla debe haber un campo con el mismo nombre de la variable en el sdt.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">Con esta configuración se obtiene en ejecución el comportamiento de múltiple selección de items.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIPatRbZl1vm9DDwh3780EYVFgKvfvEgEB_xZ7VcVsSrV2YZo0AZdaXPGIauxkK4904-9XywQQWj9tfWSDZ7-rrK8uF5FSJ4F1QqXhXMx7cUNm41imj6Cd-foq730sfq58W_TVCnooUSI/s1600/GrillaMultipleSeleccion.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIPatRbZl1vm9DDwh3780EYVFgKvfvEgEB_xZ7VcVsSrV2YZo0AZdaXPGIauxkK4904-9XywQQWj9tfWSDZ7-rrK8uF5FSJ4F1QqXhXMx7cUNm41imj6Cd-foq730sfq58W_TVCnooUSI/s1600/GrillaMultipleSeleccion.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><b>Configuración:</b></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><b><br /></b></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">En las propiedades de las variables dentro de la grilla se cuenta con la categoría múltiple selection.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5PdsccJOapBJ5WBjYlJk1Je2B0pCOFB1-RLmSay1-BJsXwzIOWhR-ZMr8Y3Xt6e0rsrPj4Masilnlxj272wnJW0f8LP3W5rK-cZSqqWd15WuBdu7ASdj539ZH2-7FXj9NFj2lUtjzLds/s1600/MultipleSelectionShowInSelectedGrid.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5PdsccJOapBJ5WBjYlJk1Je2B0pCOFB1-RLmSay1-BJsXwzIOWhR-ZMr8Y3Xt6e0rsrPj4Masilnlxj272wnJW0f8LP3W5rK-cZSqqWd15WuBdu7ASdj539ZH2-7FXj9NFj2lUtjzLds/s1600/MultipleSelectionShowInSelectedGrid.png" /></a></div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">ShowInSelectedGrid: Permite especificar si la variable se va a visualizar en la grilla de items seleccionados o solamente en la grilla de items a seleccionar. Esto permite definir items que no se van a visualizar en la otra grilla.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">SelectedKey: Permite establecer si la variable forma parte de la clave de los items. Esta información es la que permite cuando se selecciona un elemento, que dicho elemento no se muestre en la grilla de items a seleccionar. </span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><b>Customización:</b></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><b><br /></b></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">Una vez hecha esta especificación, se pueden utilizar todos los elementos presentes en el K2B WebPanelDesigner. Se pueden definir acciones (combo, botones, imágenes ,texto) y programarlas, iterando sobre el sdt de items seleccionados.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">En la siguiente imagen se muestra una especificación de una pantalla de selección múltiple que permite seleccionar productos a comprar y generar una factura a partir de ellos.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">En la grilla de items a seleccionar se cuenta con una acción para ver el detalle del producto, una variable &Count en la que el usuario puede setear la cantidad de unidades de producto que se van a comprar. </span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">Además en la medida que el usuario va seleccionando los productos se va actualizando un resumen (nodo Summary) indicando el total a pagar. La acción de confirm permite aceptar la compra de esos productos y cancel es para cancelar la compra. En el tab history se especifica el historial de compras del cliente.</span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaz2vzo_OBRoGBTmIOyM-lR1VWUji6V7SEmEg79T0IEYTRfRqapvHUtWewPAbwLIyEQkfRtOJOPJD70rf0vNOKQQxWRHOx-GQ1gQ3f4Mvoubma8ZhgzUZSnRxx-eeURBRxg8rYD0ngaR0/s1600/MultipleSelectionTotal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaz2vzo_OBRoGBTmIOyM-lR1VWUji6V7SEmEg79T0IEYTRfRqapvHUtWewPAbwLIyEQkfRtOJOPJD70rf0vNOKQQxWRHOx-GQ1gQ3f4Mvoubma8ZhgzUZSnRxx-eeURBRxg8rYD0ngaR0/s1600/MultipleSelectionTotal.png" /></a></div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">A partir de esa especificación se genera el siguiente web panel.</span></span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKqdqkN0BUdCzLG_lhz-JOPVln3BAgUJXQao-5wssBNMmXD9dZMyGGqmExs716q1WzB47S589nZfSVU5_F8WeTuhltHI4ytUtIYwSM8vGHG0helvrynuH3nCN1DxkJ04M9rrTEDRsrmzo/s1600/SuperMultiple.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="313" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKqdqkN0BUdCzLG_lhz-JOPVln3BAgUJXQao-5wssBNMmXD9dZMyGGqmExs716q1WzB47S589nZfSVU5_F8WeTuhltHI4ytUtIYwSM8vGHG0helvrynuH3nCN1DxkJ04M9rrTEDRsrmzo/s640/SuperMultiple.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">Puedes descargar K2B WebPanelDesigner desde </span></span><a href="http://www.k2btools.com/portada/nuevo-web-panel-designer?es">http://www.k2btools.com/portada/nuevo-web-panel-designer?es</a> <br />
¿Te animás a construir to web panel de múltiple selección en menos de tres minutos?<br />
<br />
<br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;"><br /></span></span><br />
<span style="font-family: Arial;"><span style="font-size: 15px; white-space: pre-wrap;">Federico Dominioni</span></span></div>Anonymoushttp://www.blogger.com/profile/08947670438445313847noreply@blogger.com0tag:blogger.com,1999:blog-1703807005122508259.post-88140921265164040922011-12-12T12:06:00.000-08:002011-12-15T04:38:04.257-08:00K2B Audit, la forma más sencilla de auditar su aplicación<div style="background-color: transparent;">
<span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;">Saber qué pasó con los datos es un requerimiento común en las aplicaciones de hoy en día. ¿Quién modificó determinado valor?, ¿cuándo? ¿quiénes fueron los que modificaron la lista de precios de mi producto?</span><br />
<span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;"><br /></span><br />
<span class="Apple-style-span" style="font-family: Verdana; font-size: 15px; font-weight: bold; white-space: pre-wrap;">¿Por qué auditar?</span><br />
<div style="font-family: Verdana,sans-serif;">
<span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Cuando se piensa en habiltiar la auditoría de una aplicación muchas veces se piensa solo con el objetivo de encontrar </span><span style="background-color: transparent; font-family: Verdana; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Verdana,sans-serif;">irregularidades en el uso del sistema. Sin embargo, la auditoría nos da mucho más: al permitir tener un historial completo de las modificaciones que se realizaron sobre los datos de nuestro negocio, nos permite por ejemplo: encontrar errores de operación (y nos da los datos para revertirlos) y nos brinda información valiosa de cómo varían nuestros datos en el tiempo.</span></span><br />
<span style="background-color: transparent; font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Verdana,sans-serif;"> </span></span> </div>
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div style="background-color: transparent;">
</div>
<div style="background-color: transparent;">
</div>
<div style="background-color: transparent;">
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Una linda tentación</span></div>
<div style="background-color: transparent;">
<div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;">
<img height="145" src="https://lh5.googleusercontent.com/6ZTbg2XR0gRXiIBlt5D76Yae6g1RjEH0LQlGHapM3L5YVl0ortXMlYQTYBfRDhyeuH2MqaXM4y1ssdtNQGcds38HVLHis1hwuCCvvRGlwOUJBPWcrxA" width="200" /><span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<span class="Apple-style-span" style="white-space: pre-wrap;"><span class="Apple-style-span" style="font-family: Verdana,sans-serif;">Cuando decidimos auditar una aplicación GeneXus, una muy linda tentación es agregar reglas en la transacción para almacenar en una estructura los atributos que se modifican. ¿Por qué no? La transacción es el objeto en el que GeneXus centraliza todos los cambios en la base de datos.</span></span></div>
<div style="background-color: transparent;">
<span style="background-color: transparent; color: black; font-family: Verdana,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Para que esta aseveración sea correcta uno se debe asegurar que:</span><br />
<span style="background-color: transparent; color: black; font-family: Verdana,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span><br />
<ul>
<li style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Verdana,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Todas las modificaciones de las entidades sean realizadas usando la transacción (ya sea con su interfaz o usada como business component).</span></li>
<li style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Verdana,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Solo la aplicación hace modificaciones en la base de datos.
</span></li>
</ul>
<span class="Apple-style-span" style="font-family: Verdana,sans-serif; white-space: pre-wrap;">El hecho de utilizar siempre el business component para actualizar la base de datos cuando lo hacemos en forma programática es una muy buena práctica de desarrollo. El problema es que no siempre es posible hacer esto. También puede suceder que la aplicación a auditar ya esté desarrollada y testeada y hacer esos cambios puede ser muy costoso. Haciendo esto tampoco nos aseguramos tener en un 100% los datos auditados, dado que no solo nuestra aplicación puede hacer modificaciones en la base de datos.
</span><span class="Apple-style-span" style="font-family: Verdana;"><span class="Apple-style-span" style="font-size: 15px;"><b>¿Hay otra manera?
</b></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvN7mLgR3n_9vmMUp1ONjjD796Aa3mONLSAqt2G3CpUiJaLJEPqZk21BXRAJJHmLDc8xb7_V02s0MIyNsrdNwFvnB-HDdjPMMHIs3D6g5aPiVFeFQQUibBhCK2mfwhpv9ftEFPuJMEnJY/s1600/another-way.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvN7mLgR3n_9vmMUp1ONjjD796Aa3mONLSAqt2G3CpUiJaLJEPqZk21BXRAJJHmLDc8xb7_V02s0MIyNsrdNwFvnB-HDdjPMMHIs3D6g5aPiVFeFQQUibBhCK2mfwhpv9ftEFPuJMEnJY/s200/another-way.jpg" width="149" /></a></div>
<span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;">Sí, hay otra manera. </span><br />
<span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;">Las transacciones no solamente centralizan las modificaciones de las entidades sino que definen la estructura de un modelo de datos. </span><span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;">Leyendo los modelos de datos podemos saber qué atributos están presente en cada una de las tablas y esa información podemos usarla para generar código propio del DBMS. </span><br />
<span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;">Entonces con una herramienta podríamos, a partir de la estructura de la transacción, crear automáticamente los triggers que permitan registrar los cambios en la base, almacenando valor anterior y posterior de cada cambio. </span><br />
<span class="Apple-style-span" style="font-family: Verdana;"><span class="Apple-style-span" style="white-space: pre-wrap;"><br /></span></span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><b>K2B Audit</b> es una herramienta que hace justamente eso. Permite generar código de triggers para auditar las tablas. </span><span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;">Para esto cuentan con opciones que permiten:</span><br />
<span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;"><br /></span><br />
<span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;"><b>1.</b> Seleccionar qué transacciones se van a auditar.</span><br />
<ul>
</ul>
<img height="139px;" src="https://lh3.googleusercontent.com/NqGcWcQaER8JFhoaOpcluCgyFXxeepTttU3DvFZIXyroZzRFbP_zlz7ywRzJ5mtCUljAAh32eP_VyVxfDZBjgzF73VUGBVMbjJJgWBlKqBWgx9OaSUM" width="216px;" /><img height="338px;" src="https://lh5.googleusercontent.com/jbIzHJ4oowksMyHeA_sXFAMd3Trb2daFzfmLaKNYN3HmD_p1miRV4qmeTvA7iUltV5KfTReA68tck3sgJMlqRm-TYuRBNqVppbBTs9A147wD0zYYABk" width="456px;" /><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline;"><b>2.</b> Crear procedimientos que generan el código de triggers.</span></span></div>
<div style="background-color: transparent;">
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div style="background-color: transparent;">
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="36px;" src="https://lh4.googleusercontent.com/bHUbJQqbsdfrGYYIyaht01ctrOuciBy_2HfVoj7ngy3eForgg7xu12EvvGkoQYJ_zTX1GTbggbXxp6_OheHuaDdOyejJomr9KW66a74afLQtgADk9W8" style="white-space: normal;" width="238px;" /></span><span class="Apple-style-span" style="font-family: Verdana; font-size: 14px; white-space: pre-wrap;"><br /></span></div>
<div style="background-color: transparent;">
<span class="Apple-style-span" style="font-family: Verdana; font-size: 14px; white-space: pre-wrap;"><b>
3.</b> Ejecutar el código de creación de triggers (Reorganize).</span><br />
<ul>
</ul>
<br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><img height="136px;" src="https://lh5.googleusercontent.com/k8W8SumvvMdIGkO2Zikf5llEkzxerr6j9eNPsnlwjosq_G3HGgTb7S9C0fVpolDPrjZZUlWVt2EywlMZ13ymJz7CynupXaCjzaKi1zoTCC0CGv0R0Hg" width="233px;" /><br />
<span class="Apple-style-span" style="font-family: Verdana; font-size: 15px; font-weight: bold; white-space: pre-wrap;">
¿Qué usuario se audita?</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqqc4a_ZNvinHBA1_g2eWZnq7BWM0WIQpIJ0GQYtzjuNdE01qmEXBNkNsgTz_ehyphenhyphenWY4DhoSgSDx-av3ALEO2Y8C47M3PvJp3el95YDpVtJDbty4Qu4vkIebjOD1YNUHClVTp_JDt4x5ZE/s1600/User.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqqc4a_ZNvinHBA1_g2eWZnq7BWM0WIQpIJ0GQYtzjuNdE01qmEXBNkNsgTz_ehyphenhyphenWY4DhoSgSDx-av3ALEO2Y8C47M3PvJp3el95YDpVtJDbty4Qu4vkIebjOD1YNUHClVTp_JDt4x5ZE/s200/User.png" width="200" /></a></div>
<span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;">Por lo general, desde la aplicación uno se conecta a la base de datos bajo un usuario único, por tanto esto muy pocas veces aporta información para la auditoría. Lo que se quiere realmente es auditar el usuario que se logueó a la aplicación.
</span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">¿Cómo se hace esto? GeneXus brinda la posibilidad de hacer que un procedimiento se ejecute después de que la aplicación se conecte con la base de datos (afterconnect).
</span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">K2B Audit hace uso de esta facilidad y provee un procedimiento que se ejecuta en el afterconnect y lo que hace es configurar el usuario en una variable local del DBMS, para que luego sea utilizada por los triggers.</span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Todo muy lindo, ¿y la performance?</span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigoXIks5Fyq6rWkmiZ9U2AByBXNFZj3CYQ6Y6uXvhyphenhyphenhUPkw-udBTT2jJCizPF0dQyOzjDGGdaBSll7i96YHIfwSdqqEOr8ChstZyHssy_g0Y8tt0qXvs9ZtGrbwS7FlL2dEyLSIlI0GCk/s1600/performance-tools.jpg" imageanchor="1" style="clear: left; display: inline !important; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigoXIks5Fyq6rWkmiZ9U2AByBXNFZj3CYQ6Y6uXvhyphenhyphenhUPkw-udBTT2jJCizPF0dQyOzjDGGdaBSll7i96YHIfwSdqqEOr8ChstZyHssy_g0Y8tt0qXvs9ZtGrbwS7FlL2dEyLSIlI0GCk/s200/performance-tools.jpg" width="200" /></a><br />
<span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;">Evidentemente siempre vamos a degradar en algo la performance teniendo auditoría. Aún en la solución de implementarla dentro de la transacción, se genera un overhead importante en la aplicación.
Como forma de minimizar el overhead, lo que hacen los triggers es grabar la información de forma no estructurada, para que el trigger consuma el mínimo de tiempo posible. Luego en los momentos que la carga del sistema es baja, se podrá ejecutar un procedimiento que se encarga de estructurar esa información para que sea consultable y analizable.</span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<br />
<span class="Apple-style-span" style="font-family: Verdana; font-size: 15px; font-weight: bold; white-space: pre-wrap;">Explotación</span><br />
<span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;">K2B Audit cuenta con una herramienta web (K2BAuditAnalyzer) que permite analizar los datos auditados.</span><br />
<br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Esta aplicación provee distintos tipos de consultas: Desde consultas básicas por operación; esto es fecha hora de modificación, usuario que hizo las mismas; hasta consultas más avanzadas filtrando por datos específicos de la aplicación. </span><br />
<br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><img height="440px;" src="https://lh6.googleusercontent.com/znSrzdFpMplkqCL30H_d3Fu3LwIMN2MwroEZnVeGJUsgdO1RgsSV5euCqfpuDlDtHOqYBq6KAJNeJrsV5IUScYjSdeYj1Q4eijwgC2nOYS4ovjwnjrk" width="694px;" /><br />
<span class="Apple-style-span" style="font-family: Verdana; white-space: pre-wrap;"><br /></span><br />
Por ejemplo, estas consultas permiten saber quienes modificaron la factura AKA342, quienes modificaron el atributo Sueldo del Funcionario “Juan Carlos”, etc. Este tipo de consultas es posible definirlas dinámicamente desde la aplicación de explotación de auditoría.<br />
<br />
<img height="593px;" src="https://lh4.googleusercontent.com/9ynpDwDc1cRpZg0uu9dxChYWb2Akv1nYsq1_XzZhir8cECdl5vx6JzIX26iZkaGGxDykyz85k6wX9tQueyscSOuoR6tnc1FPgUC_5ixV3bbhjUMog54" width="600px;" /><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<br />
<span class="Apple-style-span" style="font-family: Verdana; font-size: 15px; font-weight: bold; white-space: pre-wrap;">¿Cómo lo pruebo?</span><span class="Apple-style-span" style="font-family: Verdana;"><span class="Apple-style-span" style="white-space: pre-wrap;"><b><br /></b></span></span><span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Desde el marketplace </span><a href="http://marketplace.genexus.com/viewproductversion.aspx?189,1,0,0,"><span style="background-color: transparent; color: #000099; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://marketplace.genexus.com/viewproductversion.aspx?189,1,0,0,</span></a><span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> o desde el sitio </span><a href="http://www.k2btools.com/"><span style="background-color: transparent; color: #000099; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">www.k2btools.com</span></a><span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> se puede bajar una versión free edition que permite auditar hasta 5 tablas. Una vez instalado, se puede seguir el manual que está en la página para configurar la KB. No es necesario tener instalado K2BTools para usar K2BAudit.
</span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Links recomendados:</span><span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Pueden acceder a las charla “K2BAudit la forma más sencilla de auditar su aplicación” realizada en el XXI Encuentro Genexus: </span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Parte 1: </span><a href="http://www.youtube.com/watch?v=bzFs83U2pgA&feature=related"><span style="background-color: transparent; color: #000099; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.youtube.com/watch?v=bzFs83U2pgA&feature=related</span></a><span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Parte 2: </span><a href="http://www.youtube.com/watch?v=OkX9ViVgLOM&feature=related"><span style="background-color: transparent; color: #000099; font-family: Verdana; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.youtube.com/watch?v=OkX9ViVgLOM&feature=related</span></a><span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="background-color: transparent; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>K2B Toolshttp://www.blogger.com/profile/04215138846518077491noreply@blogger.com0tag:blogger.com,1999:blog-1703807005122508259.post-66615927181882300312011-11-11T08:37:00.001-08:002012-10-18T13:16:15.774-07:00WebPanel Designer: Una manera innovadora de construir Web Panels<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Frecuentemente los desarrolladores intentamos evitar la construcción de web panels por la pérdida de productividad que implica e intentamos realizar todas las pantallas con el patrón "trabajar con", lo cual muchas veces no nos da la mejor usabilidad. <br />
Presentamos el nuevo producto K2B WebPanelDesigner que soluciona esta problemática, y no requiere tener otras herramientas de K2BTools para ser utilizado.<br />
<br />
<span style="background-color: transparent; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-weight: bold; text-decoration: none; vertical-align: baseline;">Introducción</span><span style="background-color: transparent; font-family: Arial; font-size: 10pt; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">La construcción de soluciones basadas en patrones es muy útil a la hora de desarrollar una aplicación de forma rápida, homogénea y con las mejores prácticas de desarrollo.</span><br />
<span style="background-color: transparent; color: #980000; font-family: Arial; font-size: 10pt; text-decoration: underline; vertical-align: baseline;"><br class="kix-line-break" /></span><span style="background-color: transparent; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">Con el objetivo de poder especificar todos los web panels, incluyendo aquellos que no cumplen con un patrón, se ha sobre utilizado la tecnología de patrones. Si bien esta solución es válida, porque se logra alcanzar mayor productividad, existen mejores soluciones para resolver determinados escenarios.</span><br />
<span style="background-color: transparent; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><br />
<br />
<span class="Apple-style-span" style="font-family: Arial; font-size: 15px; font-weight: bold;">Uso de Patrones</span><br />
<span style="background-color: transparent; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">Uno de los escenarios por el que surgieron los patrones en GeneXus es para crear todos los componentes de mantenimiento de una entidad de manera automática. A partir de una transacción se genera una instancia por defecto y el usuario, con poca o ninguna modificación, logra generar los objetos que resuelven ese comportamiento. <br class="kix-line-break" />En general, cuando la realidad a especificar sigue determinado patrón, esta se puede especificar a un alto nivel de abstracción, sin requerir posteriormente demasiada customización por parte del usuario. </span><span style="background-color: transparent; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"><br class="kix-line-break" /></span><br />
<span style="background-color: transparent; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX9fXbHp2Hzj2-slaiLxVoRkp6uJEOnrR3wHHYta0erneJ8b1vKeMhjfHy5JjSrLn24P3PbHixw80QWzaevwVWsCkcIs6UrKKTnKiFK93lYmpD3viOs0pZ3jII_nUDP9DYZUmMIcgAA_8/s1600/patterns.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX9fXbHp2Hzj2-slaiLxVoRkp6uJEOnrR3wHHYta0erneJ8b1vKeMhjfHy5JjSrLn24P3PbHixw80QWzaevwVWsCkcIs6UrKKTnKiFK93lYmpD3viOs0pZ3jII_nUDP9DYZUmMIcgAA_8/s400/patterns.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 13px;"><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 11px; font-weight: bold;">Fig1: Instancia por defecto a la izquierda, a la derecha objetos generados.<br />
</span></td></tr>
</tbody></table>
<span style="background-color: transparent; text-decoration: none; vertical-align: baseline;"></span><span class="Apple-style-span" style="font-family: Arial;"><span class="Apple-style-span" style="font-size: 11px;"><b><br />
</b></span></span><span style="background-color: white; font-family: Arial; font-size: 10pt; font-weight: bold; text-decoration: none; vertical-align: baseline;">¿Qué pasa cuando queremos desarrollar un web panel que no sigue ningún patrón?</span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">En un web panel pueden haber múltiples grillas, acciones, formularios, etc. Si utilizamos</span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">un patrón GeneXus para crear el web panel</span><span style="background-color: white; font-family: Arial; font-size: 10pt; font-weight: bold; text-decoration: none; vertical-align: baseline;">, </span><span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">una primer consecuencia que trae es que al crearlo, no se puede inferir su especificación por defecto, ya que no hay patrón a seguir. Por lo tanto, el usuario deberá especificarlo de forma completa desde cero. Esta es una de las razones por las que se necesita mayor poder de edición y mayor libertad para customizar el comportamiento particular que va a tener ese web panel. </span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><img height="483" src="https://lh6.googleusercontent.com/AHyoXUpK_RV-TvpGYUWgZEvpN3tDXkglhEYiqCAk6s0Kyal1mt2_kwItO4fU0fMpEDppmPCayKBDFlXyXZP38j1DX1D0qNQjKK8CCKSLHtYEy8BTHaQ" style="margin-left: auto; margin-right: auto;" width="640" /></td></tr>
<tr><td class="tr-caption" style="font-size: 13px;"><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 11px; font-weight: bold;">Figura 2 : Objeto que no cumple con un patrón específico: posee múltiples grillas, tabs, secciones ,etc.<br />
</span></td></tr>
</tbody></table>
<span class="Apple-style-span" style="font-family: Arial;"><span class="Apple-style-span" style="font-size: 11px;"><b><br />
</b></span></span><span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">Hasta ahora la solución que proponía K2BTools era el Pattern K2BWebPanelBuilder mejorando mucho la productividad si lo comparamos con hacer este mismo objeto manualmente. Continuando con la búsqueda de la mejor solución, cambiamos el K2BWebPanelBuilder para </span><span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">que la especificación en lugar de hacerse usando la herramienta patterns se pueda realizar dentro del mismo web panel y en un nivel mayor de abstracción.</span><span style="background-color: white; font-family: Arial; font-size: 10pt; font-weight: bold; text-decoration: none; vertical-align: baseline;"> </span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">Este</span><span style="background-color: white; font-family: Arial; font-size: 10pt; font-weight: bold; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">diseñador de web panels se llama K2BWebPanelDesigner (actualmente en proceso de beta) con el cual creemos es la forma de mejorar la construcción de web panels junto con GeneXus. <br />
<br class="kix-line-break" />Esta forma de especificar Web Panels brinda al usuario una mejor usabilidad, más inteligencia y más potencia respecto al uso anterior del patrón.</span><br />
<span class="Apple-style-span" style="font-family: Arial; font-size: x-small;"><br />
</span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"><b>Algunas de sus mejoras son las siguientes: </b></span><span style="background-color: white; vertical-align: baseline;"><br class="kix-line-break" /></span><br />
<ul>
<li><span class="Apple-style-span" style="font-family: Arial; font-size: x-small;"><span class="Apple-style-span" style="background-color: white; font-size: 13px;">Es más fácil acceder a la especificación ya que la misma es parte del propio web panel. </span> </span></li>
</ul>
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><img height="256px;" src="https://lh5.googleusercontent.com/vcbpMbFFdpizcQ_Gaz-U7ArND6Pswf7C5j9J3_gg95zyONGw0xumtR7yw_4NKd4vzcTgkLDoqFx34DfOZ34m9qUXI5t4vw9f5rascyLeGI4W80JJGyM" style="margin-left: auto; margin-right: auto;" width="301px;" /></td></tr>
<tr><td class="tr-caption" style="font-size: 13px;"><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 11px; font-weight: bold;">Figura 3 : K2BDesigner es una parte nueva del web panel.<br />
</span></td></tr>
</tbody></table>
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><span style="background-color: white; text-decoration: none; vertical-align: baseline;"><br class="kix-line-break" /></span><span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span>
<ul>
<li><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 13px;">La especificación integrada como una parte dentro del mismo objeto, mejora y facilita enormemente su uso, ya que permite:</span></li>
<ul>
<li><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 13px;">Tener dentro del historial del objeto tanto la especificación como las demás partes, quedando asi el registro de todos los cambios de forma integrada.</span></li>
<li><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 13px;">Al exportar los web panels no es necesario exportar el objeto y la instancia (y acordarse); sino es suficiente solo con la exportación del objeto .</span></li>
<li><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 13px;">Facilita el trabajo de GXServer debido a que no es necesario preocuparse en subir la especificación por separado del objeto.</span></li>
<li><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 13px;">Al ser un diseñador que forma parte del objeto nunca se ejecutarán procesos en background, aumentando la performance y la velocidad del trabajo en la KB.</span></li>
</ul>
</ul>
<br />
<ul>
<li><span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">La especificación se realiza mediante nodos y propiedades que son </span><span style="background-color: white; font-family: Arial; font-size: 10pt; font-weight: bold; text-decoration: none; vertical-align: baseline;">dinámicas</span><span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">, permitendo por ejemplo:</span></li>
<ul>
<li><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 13px;">Que nodos y propiedades sean visibles dependiendo del contexto y de las demás propiedades.</span></li>
<li><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 13px;">Que se eliminen propiedades que no aplican al contexto y dificultan la tarea del programador al especificar.</span></li>
</ul>
</ul>
<ul></ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0FJUs5kbG82Ot1laCToYohFxdOvMdVbAOm5P-lF-sUyJVK9bW8s-eyp_Qc3Fa0qrpMTKV7RbY4xupgWktcA9CsY0JY8Hc9H5zvr_bifCUpY9j9PyN9uBERHRpVF0sMCWBPJEYDqlL-BI/s1600/ImagenTypeButton.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0FJUs5kbG82Ot1laCToYohFxdOvMdVbAOm5P-lF-sUyJVK9bW8s-eyp_Qc3Fa0qrpMTKV7RbY4xupgWktcA9CsY0JY8Hc9H5zvr_bifCUpY9j9PyN9uBERHRpVF0sMCWBPJEYDqlL-BI/s1600/ImagenTypeButton.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span id="internal-source-marker_0.7384567745027112" style="background-color: white; font-family: Arial; font-size: 8pt; font-weight: bold; text-decoration: none; vertical-align: baseline;">Figura 4: Editor dinámico. Cuando se modifica la propiedad Type de Button a Image aparecen nuevas propiedades. </span></td></tr>
</tbody></table>
<div>
<div dir="ltr" style="margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: white; font-family: Arial; font-size: 8pt; font-weight: bold; text-decoration: none; vertical-align: baseline;"><br class="kix-line-break" /></span><span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span></div>
<ul>
<li><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 13px;">Se mejoran además varios aspectos del trabajo con nodos y propiedades, por ejemplo: </span></li>
<ul>
<li><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 13px;">Se mejora la inteligencia de los defaults de las propiedades. El valor por defecto puede ser inferido de varias propiedades, incluso de cualquier dato de la KB.</span></li>
<li><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 13px;">Cada nodo tiene su propio identificador y el diseñador se encarga de que los mismos no se repitan. Esto facilita el copy and paste o el cut and paste desde otra instancia, sin generar inconsistencias.</span></li>
<li><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 13px;">Desde un nodo se puede navegar a los eventos generados por él, agilizando así el acceso a la subrutina para customizarla.</span></li>
</ul>
</ul>
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><img height="215px;" src="https://lh6.googleusercontent.com/g2O8dMh4V26ONytO5-FUiN6ntoUlLKBU7VlM6NAiBIyAJuf0gHHtQiodfnxKIJJ89q9iat5pWqeXG5hL4Y5On2tSC8rjJUqPa3ejYq60e0LxQQKvbwM" style="margin-left: auto; margin-right: auto;" width="400px;" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span class="Apple-style-span" style="background-color: white; font-family: Arial; font-size: 11px; font-weight: bold;">Figura 6 : Desde cualquier nodo que genere subrutinas (por ejemplo nodo action), se puede ir de forma rápida al evento que la implementa.</span></td></tr>
</tbody></table>
<ul>
<li><span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">Se brinda más inteligencia en la generación y mantenimiento del objeto: Se mantienen sincronizadas las distintas partes con el código agregado por el desarrollador</span><span style="background-color: white; vertical-align: baseline;"><span class="Apple-style-span" style="color: red; font-family: Arial; font-size: x-small;">. </span>De esta forma ante cualquier cambio (ya sea código generado o código agregado por el usuario) se mantiene válido el webpanel.<span class="Apple-style-span" style="color: red; font-family: Arial; font-size: x-small;"> </span></span></li>
</ul>
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">Otras de las ventajas es que pensando hacia el futuro hemos desarrollado el K2BWebPanelDesigner sobre un framework llamado K2BObjectDesigner (extensión Genexus). Esto nos brinda la posibilidad de desarrollar diseñadores de webpanels de la misma manera que la tecnología patterns nos permite desarrollar patrones. <br class="kix-line-break" /><br class="kix-line-break" />Actualmente el diseñador WebPanelDesigner es un add-on o plug-in de K2BObjectDesigner. Por ahora y durante el proceso de beta contaremos únicamente con WebPanelDesigner pero es factible que en un futuro tengamos otros.</span><span style="background-color: white; font-family: Arial; font-size: 10pt; font-weight: bold; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">Pueden ustedes mismos descargar esta herramienta y probar los beneficios que da en la</span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">construcción de web panels. Está disponible para la Evolution 1 y para la Evolution 2 cuando se libere una nueva beta de esta plataforma.</span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"><br />
</span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">Es importante resaltar que </span><span style="background-color: white; font-family: Arial; font-size: 10pt; font-weight: bold; text-decoration: none; vertical-align: baseline;">no es necesario tener instalada ninguna de las otras herramientas creadas por K2BTools</span><span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"> para trabajar. <br />
</span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"><br />
</span><br />
<span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">K2BWebPanelDesigner está en proceso de Beta así que las licencias temporales se otorgarán a quienes la soliciten. Pueden descargar la versión para Ev1 o Ev2 desde </span><span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;"><a href="http://marketplace.genexus.com/viewproductversion.aspx?254,4,0,0," target="_blank">aquí.</a><br />La documentación la </span><span style="background-color: white; font-family: Arial; font-size: 10pt; text-decoration: none; vertical-align: baseline;">pueden obtener desde </span><span style="background-color: white; color: #0000cc; font-family: Arial; font-size: 10pt; vertical-align: baseline;"><a href="http://www.k2btools.com/files/Documentacion-K2B-Web-Form-Designer?es">http://www.k2btools.com/files/Documentacion-K2B-Web-Form-Designer?es</a></span></div>
<div>
<span style="background-color: white; color: #0000cc; font-family: Arial; font-size: 10pt; text-decoration: underline; vertical-align: baseline;"><br />
</span></div>
<div>
<span class="">Los siguientes videos muestran webpanels construidos con WebPanelDesigner y como se construyen:</span></div>
<div>
<ul>
<li><a href="http://www.youtube.com/watch?v=iCFtmp5QpGE">Construya un Web Panel en menos de 5 segundos.</a> </li>
<li><a href="http://www.youtube.com/watch?v=30FfPPxxFKg&t=1m25s" style="background-color: white;" target="_blank">K2BTools: actualidad y próximos pasos</a></li>
<li>Descubra K2BTools y alcance el nuevo nivel de productividad <a href="http://www.youtube.com/watch?v=MhrO_6r7rLY&t=12m27s" style="background-color: white;">Parte 1</a> <a href="http://www.youtube.com/watch?v=9RyGYWC4kno&feature=related" style="background-color: white;">Parte 2</a></li>
</ul>
</div>
<div>
El soporte durante el proceso de beta será a través de nuestro foro: <a href="http://www.k2btools.com/comunidad/foro-suscripcion?es" target="_blank">Foro K2BTools</a><br />
<br /></div>
<div>
Martin Barreto <a href="https://twitter.com/#%21/mtnBarreto" target="_blank">@mtnBarreto</a></div>
<b>K2BTools</b>K2B Toolshttp://www.blogger.com/profile/04215138846518077491noreply@blogger.com1tag:blogger.com,1999:blog-1703807005122508259.post-70290170293868265772011-09-20T12:52:00.000-07:002011-10-09T20:23:38.193-07:00Simplicidad, Productividad e Integridad Conceptual<div class="MsoNormal"><span style="font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;">Simplicidad, productividad e integridad conceptual son los tres pilares de K2B Tools, vamos a abordar el último punto: La integridad conceptual. <br />
<br />
En 1975<span class="apple-style-span"><span style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0% 0%; color: #333333;"> Frederick Brooks publicaba la primer edición de su famoso y aún vigente libro, </span></span></span><a href="http://www.amazon.com/exec/obidos/ASIN/0201835959/102-5093798-4430514" style="font-family: Verdana,sans-serif;"><span style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0% 0%; color: #0066cc; font-size: 10pt; line-height: 115%;">The Mythical Man-Month</span></a></div><div class="MsoNormal"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTECNxWpxR197dI3my4ocfrdsRJw27_F0Ltr0dApenNKtizc0q6HIdN0Pw3Ul17Y5LXfIyYiAFB7H1TjuG9QB64xTbFkhTnt7AEi9v4F2RTmmYZbb_e2ZmF_YkmPt4q9GeUTmozhL35cc/s1600/Arq.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTECNxWpxR197dI3my4ocfrdsRJw27_F0Ltr0dApenNKtizc0q6HIdN0Pw3Ul17Y5LXfIyYiAFB7H1TjuG9QB64xTbFkhTnt7AEi9v4F2RTmmYZbb_e2ZmF_YkmPt4q9GeUTmozhL35cc/s320/Arq.jpg" width="320" /></a></div><div class="MsoNormal"><span class="apple-style-span"><span style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0% 0%; color: #333333; font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;">Uno de los temas principales del libro es la “Integridad Conceptual” como uno de los factores más importantes de una aplicación.<br />
<br />
</span></span></div><div class="MsoNormal"><span class="apple-style-span"><span style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0% 0%; color: #333333; font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;">Más de 35 años después, esto sigue más vigente que nunca. Muchos autores (Donald Norman, entre otros) han escrito y siguen escribiendo sobre ello. <br />
<br />
Nosotros, como usuarios y como seres humanos, seguimos buscando la integridad conceptual en todo. <br />
Hoy, en la era de los “smart devices” la integridad conceptual, basada en un conjunto de modelos conceptuales, ya no solo debe ser atributo de una aplicación, sino que debe serlo de todo un dispositivo.<br />
<br />
La vigencia de estos conceptos tantos años después es entendible: esto no tiene que ver con una época o tecnología, sino que está estrechamente relacionado con la forma de percibir, entender y aprender del cerebro humano. Esto no ha cambiado y no va a cambiar en unos cuantos años. ;)<br />
<br />
<b style="mso-bidi-font-weight: normal;"><span style="font-size: small;">Una aplicación conceptualmente íntegra</span><br />
<br />
</b>Una aplicación íntegra conceptualmente se percibe como coherente en toda su extensión, consistente, homogénea, agradable, armónica. Todos estos términos se asocian a la integridad conceptual. </span></span></div><div class="MsoNormal"><span class="apple-style-span"><span style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0% 0%; color: #333333; font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;">Una aplicación íntegra conceptualmente, usa los mismos modelos para representar las mismas cosas: usa las mismas interfaces para realizar los mismos tipos de tareas, muestra de la misma forma los mismos tipos de información, usa la misma navegación para realizar los mismos tipos de flujos o de procesos. A nivel del desarrollo: usa los mismos modelos de datos para modelar una realidad con similares características, usa los mismos mecanismos para resolver los mismos problemas…<br />
</span></span><b style="mso-bidi-font-weight: normal;"><span style="font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;"><span style="font-size: small;"><br />
Lindas, fáciles y confiables: las ventajas de la integridad conceptua</span>l <br />
</span></b><span style="font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;"><br />
A nuestros cerebros les gustan las cosas que son conceptualmente íntegras, nos resultan agradables, la evolución nos ha diseñado así. Esto es importante y no se trata solo de estética: la belleza nos sitúa en estados emocionales que mejoran nuestros procesos cognitivos, con lo cual mejora nuestra predisposición a entender y aprender. Entendemos mejor las cosas lindas. Las cosas lindas funcionan mejor - así lo percibimos.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFamRVfoh-zhlVlRUIkpUqupomdReGsgcrXQwQCUmqvmSblZtRDucZVlctdMjaZSgFd-aWVrhWIG6Papmb53yZBNEiAdKBTXrdWorH_hHLypNkzEQbpyiS_SidJDC3djQg4hqg9pqnszk/s1600/1%252B1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFamRVfoh-zhlVlRUIkpUqupomdReGsgcrXQwQCUmqvmSblZtRDucZVlctdMjaZSgFd-aWVrhWIG6Papmb53yZBNEiAdKBTXrdWorH_hHLypNkzEQbpyiS_SidJDC3djQg4hqg9pqnszk/s1600/1%252B1.png" /></a></div><div class="MsoNormal"><span style="font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;"><br />
</span><span style="font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;">Por otro lado, la integridad conceptual aporta facilidad<b style="mso-bidi-font-weight: normal;"> </b>de<b style="mso-bidi-font-weight: normal;"> </b>comprensión, facilidad de aprendizaje y facilidad de uso: los principios básicos para tener una buena experiencia de usuario. </span></div><div class="MsoNormal"><span style="font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;">Si cada vez que nos enfrentamos con un tipo de tarea, proceso o información la forma que se hace o que se muestra es la misma, la aplicación será fácil de aprender y de usar. </span><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 13px; line-height: 14px;">Esto genera confianza y seguridad en la interacción. </span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 13px; line-height: 14px;"><br />
La integridad conceptual confirma y refuerza nuestras expectativas de cómo funciona la aplicación. Y esto es muy bueno, esta confianza nos motiva a usarla, nos predispone mejor a entenderla. </span></div><div class="MsoNormal"><span style="font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;"> <br />
Las aplicaciones modernas, deben ser así: simples, íntegras y lindas. Esto ya no es una opción.</span></div><div class="MsoNormal"><span style="font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;"> <b><br />
</b><span class="apple-style-span"><b style="mso-bidi-font-weight: normal;"><span style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0% 0%; color: #333333;"><span style="font-size: small;">Construyendo este tipo de aplicaciones</span><br />
</span></b><span style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0% 0%; color: #333333;"><br />
Para lograr aplicaciones conceptualmente íntegras debemos tener un conjunto de buenos “modelos conceptuales” que apliquen en forma correcta y consistente a lo largo de la aplicación: esto es … patrones. Un patrón es un modelo conceptual que se repite. <br />
<br />
Una aplicación con modelos conceptuales bien aplicados logra aplicaciones íntegras conceptualmente. Si además la aplicación tiene buenos modelos, logra aplicaciones con muy buena experiencia de usuario.<br />
</span></span></span></div><div class="MsoNormal"><span style="font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;">Si trabajamos solos esto es viable de conseguir. Con un poco de suerte y si somos coherentes con nosotros mismos podemos generar aplicaciones con integridad conceptual. Pero cuando trabajamos en un equipo esto es difícil y costoso, en general se vuelve inviable. </span><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 13px; line-height: 14px;">¿Cómo lograrlo entonces? ¡Generemos la integridad conceptual automáticamente! contando con herramientas que nos provean de buenos modelos conceptuales y generen aplicaciones íntegras, basados en esos modelos.</span></div><div class="MsoNormal"><span style="font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;"><br />
</span></div><div class="MsoNormal"><span style="font-family: Verdana, sans-serif; font-size: 10pt; line-height: 115%;">En K2B Tools apuntamos a brindar un conjunto de buenos modelos conceptuales de forma de permitir especificar la aplicación a un nivel más alto de abstracción, y en base a esos modelos generar la aplicación implementada en GeneXus en forma automática. </span><span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 13px; line-height: 14px;"><br />
Más simple, más productivo y con la integridad conceptual que buscamos.</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 13px; line-height: 14px;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 13px; line-height: 14px;">by Mayda Kurdián</span><br />
<span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"><span class="Apple-style-span" style="line-height: 14px;"><br />
</span></span></div><div class="MsoNormal"></div><div class="MsoNormal"><span class="apple-style-span"></span></div>K2B Toolshttp://www.blogger.com/profile/04215138846518077491noreply@blogger.com3