Upload
genexus
View
311
Download
0
Embed Size (px)
Citation preview
Rolling the Stone Framework by GProjex
Daniel Monza
¿Qué es Stone Framework?
Estándares
• Codificación (draft)
Patrones de Diseño
• Files Pattern • Serials Pattern
Funcionalidades
• Business • Net • System • Tools
Filosofía
• Incluir funcionalidades que solucionen problemas frecuentes
• Prioridad a desarrollos 100% Genexus
• Documentación
• Fomentar la colaboración en la comunidad Gx
• Transparencia
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
¿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.
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
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
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”)
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
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
Asignar color Hexadecimal
miTextBlock.ForeColor = !“FF0000”
miTextBlock.ForeColor = SGP_Tools_HexToRGB(!“FF0000”)
PDF no Main
Reporte que genera nuestro
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
Desplegar mensajes
for &Message in &Messages msg( &Message.Description )
endfor
¿Les suena conocido?
SGP_Tools_MessagesShow(&Messages)
Desplegar mensajes
&Message = new() &Message.Description = “Error X” &Messages.Add( &Message)
¿Les suena conocido?
SGP_Tools_MessageAdd( &Messages, “Error X”)
Formatear fecha
//&MyDate = 20/12/1979 &Msg = SGP_Tools_FormattedDateString( &MyDate, “DDD, DD de MMM de YYYY”)
Resultado: “Viernes, 20 de Diciembre de 1979”
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
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
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”
¿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!
Sin Stone Framework
Con Stone Framework
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