23
Rolling the Stone Framework by GProjex Daniel Monza

Rolling the Stone Framework - Daniel Monza

  • Upload
    genexus

  • View
    311

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rolling the Stone Framework - Daniel Monza

Rolling the Stone Framework by GProjex

Daniel Monza

Page 2: Rolling the Stone Framework - Daniel Monza
Page 3: Rolling the Stone Framework - Daniel Monza

¿Qué es Stone Framework?

Estándares

• Codificación (draft)

Patrones de Diseño

• Files Pattern • Serials Pattern

Funcionalidades

• Business • Net • System • Tools

Page 4: Rolling the Stone Framework - Daniel Monza

Filosofía

•  Incluir funcionalidades que solucionen problemas frecuentes

•  Prioridad a desarrollos 100% Genexus

•  Documentación

•  Fomentar la colaboración en la comunidad Gx

•  Transparencia

Page 5: Rolling the Stone Framework - Daniel Monza

Características

•  Open Source bajo licencia del MIT

•  Open.Genexus.com

•  GX Server

•  Colaborativo

•  100% documentado en línea

•  Test Suite

•  Desarrollado basado en un estándar de codificación

Page 6: Rolling the Stone Framework - Daniel Monza

¿Por qué utilizar patrones de diseño?

•  Soluciones simples y probadas a problemas conocidos. •  No perder tiempo analizando un problema •  No re-inventar la rueda

•  Estandarizan el desarrollo

•  Bajo acoplamiento

•  Otros: Archivos, Series, Categorías, Filtros de paneles, etc.

Page 7: Rolling the Stone Framework - Daniel Monza

Patrón de Archivos

•  Independencia del lugar de almacenamiento (blob, disco, S3, etc)

•  Disminuye dispersión

•  Archivos públicos/privados

•  Mantenimientos y procedimientos para administrar una sola estructura

Page 8: Rolling the Stone Framework - Daniel Monza

Patrón de Archivos •  FileAdd: Agregar archivo

•  FileDelete: Eliminar Archivo

•  FileFullNameGet: Obtener ruta física.

•  FileUrlGet: Obtener Url. En caso de privados, timeout.

http://open.genexus.com/wiki.aspx?SSID-32,SGP_Pattern_Files,article

Page 9: Rolling the Stone Framework - Daniel Monza

Patrón de Series

•  La clásica tabla de “Numeradores”

•  Se permite la generación de series numéricas y alfanuméricas (definiendo conjunto de caracteres o hexadecimales).

•  Estructura básica: &NextID = SerialNumericNext( Char-in:Entidad )

•  Ej.: &NextID = SerialNumericNext(“CLIENTES”)

Page 10: Rolling the Stone Framework - Daniel Monza

Patrón de Series •  Numéricos: SerialNumericNext

1, 2, .., 100, 101, 102,…, 1000, 1001,…, 10000, 10001, 10002,…,n

•  Alfanuméricos: SerialTextNext Por ejemplo, grupo de caracteres “01ab” 0001, 000a, 000b, 0010, 0011, 001a, 001b ,00a0, 00a1, 00aa, 00ab, 00b0, 00b1, 00ba,..,n

•  Hexadecimales: SerialHexNext Recibe por parámetro un prefijo. cli-00000001, cli-00000002,.., cli-00000009, cli-0000000a, cli-0000000b,…, cli-0000000f, cli-00000010, cli-00000011, …, cli-0000009f, cli-00000a0, cli-000000a1,…,n

Page 11: Rolling the Stone Framework - Daniel Monza

Biblioteca de funcionalidades •  Extensión de la biblioteca de funciones provista por Genexus

•  Aumentar la cohesión

•  Organizadas en Name spaces / Módulos •  Business

•  Net •  System

•  Tools

Page 12: Rolling the Stone Framework - Daniel Monza

Asignar color Hexadecimal

miTextBlock.ForeColor = !“FF0000”

miTextBlock.ForeColor = SGP_Tools_HexToRGB(!“FF0000”)

Page 13: Rolling the Stone Framework - Daniel Monza

PDF no Main

Reporte que genera nuestro

PDF

Descarga del archivo

generado

Reporte PDF • No marcar como Main • Recibir por parámetro el nombre del PDF a generar en una variable, ej.: &FileName • Definir la regla “output_file(&FileName, “PDF”);”

Procedimientos involucrados •  SGP_System_TempFileName : Crea archivo temporal •  SGP_Net_FileAccessGet : Crea clave de acceso al archivo •  SGP_Net_FileGet: Proc. Main de descargas

Page 14: Rolling the Stone Framework - Daniel Monza

Desplegar mensajes

for &Message in &Messages msg( &Message.Description )

endfor

¿Les suena conocido?

SGP_Tools_MessagesShow(&Messages)

Page 15: Rolling the Stone Framework - Daniel Monza

Desplegar mensajes

&Message = new() &Message.Description = “Error X” &Messages.Add( &Message)

¿Les suena conocido?

SGP_Tools_MessageAdd( &Messages, “Error X”)

Page 16: Rolling the Stone Framework - Daniel Monza

Formatear fecha

//&MyDate = 20/12/1979 &Msg = SGP_Tools_FormattedDateString( &MyDate, “DDD, DD de MMM de YYYY”)

Resultado: “Viernes, 20 de Diciembre de 1979”

Page 17: Rolling the Stone Framework - Daniel Monza

Algunas funciones del Business •  SGP_Business_ValidateID: Validación y cálculo de Dígito de control para

•  CUIT

•  CPF

•  CI

•  CBU

•  SGP_Business_LuhnCD: Obtener dígito de control de Luhn

•  SGP_Business_AmountToText: Convertir importe a letras multi-idioma (ingles, español y portugués)

•  SGP_Business_Serial: Genera el siguiente valor en una serie

Page 18: Rolling the Stone Framework - Daniel Monza

Algunas funciones de Sistema •  SGP_System_LogAdd

Generación de log centralizada con log4net En espera de colaboración para portar a Java

•  SGP_System_WebPath Obtención de ruta Web (java y net)

•  SGP_System_TempFileName Obtener ruta a un nuevo archivo temporal

•  SGP_System_Generator Lenguaje en el cual está generada la aplicación

Page 19: Rolling the Stone Framework - Daniel Monza

Algunas funciones de Red •  SGP_Net_EmailSend

Envío de mail con SmtpSession

•  SGP_Net_SitemapGenerate Genera Google Sitemaps

•  SGP_Net_UrlToLocation Transforma URL a Genexus Location

•  SGP_Net_RemoteAddr Obtiene IP remota incluyendo “HTTP_X_FORWARDED_FOR”

Page 20: Rolling the Stone Framework - Daniel Monza

¿Como puedo colaborar? •  Directamente

•  Ayudando a incorporar nuevas funcionalidades •  Documentando •  Testeando •  Portando funcionalidades a otros lenguajes

•  Otras formas •  Brindando funcionalidades de propia autoría para incluir en el framework

•  Desarrolladas en base al estándar •  Aparecerá en el encabezado de la funcionalidad quién brindo la misma

•  Aportando con comentarios, sugerencias e ideas!

Page 21: Rolling the Stone Framework - Daniel Monza
Page 22: Rolling the Stone Framework - Daniel Monza

Sin Stone Framework

Con Stone Framework

Page 23: Rolling the Stone Framework - Daniel Monza

Gracias a todos •  Proyecto: http://open.genexus.com/projecthome.aspx?SSID-32

•  Foro: http://groups.google.com/d/forum/stoneframework

•  Test Suite: http://stoneframework.gprojex.com/

•  Documentación: http://open.genexus.com/wiki.aspx?SSID-32,Stone+Framework+by+GProjex,article

•  GXServer: http://open.genexusserver.com/xev2/home.aspx?StoneFrameworkKB,0