Desarrollo de Sistemas ERP/CRM y Software Libre, Linux, Desarrollo de Proyectos, Programación OpenSource. Web

viernes, junio 09, 2006

Modelo de negocios de Tienda Virtual

El comercio electronico es prioridad para muchas empresas que todavia no han podido tener resultados en este variante de gestion comercial debido en gran medida a las dificultades de infraestructura y tecnologicas necesarias para lograr realizar el e-commerce de manera real y eficiente. Muchos son los aspectos que aun faltan por resolver, de manera que una opcion viable para las empresas nacionales es potenciar el uso de catalogos o "vitrinas" virtuales donde sus productos sean vistos, valorados y "comprados", en un proceso que no puede catalogarse como completamente electronico, ya que algunos pasos del ciclo de compra, por algunas limitantes, no pueden ser realizadas completamente de manera virtual en Internet, como son el Pago y el Envio de la mercancia.
En mi empresa por limitantes tecnicas no es posible hacer una relacion directa de la tienda virtual (como recurrentemente la llaman) y el sistema de inventarios y contabilidad que finalmente emite, registra y contabiliza las facturas de venta, puediendo ser estas de gran variedad lo que le adiciona un grado mayor de complejidad, siendo el sistema en cuestion, un sistema propietario por el que la empresa paga una licencia, que no le da derecho siquiera a inmiscuirse en las bases de datos de este para extraer informacion o actualizarla de forma que los clientes puedan interactuar directamente con el sistema desde la tienda virtual, aun cuando el conocimiento necesario para poder realizar esta labor tendria que necesariamente ser obtenido por ingenieria Inversa, proceso que ademas esta prohibido por la licencia de uso. Resultando en una dilatacion de los tiempos de puesta en marcha de dicha tienda virtual con el consecuente gasto que en el tiempo ya se ha realizado por conceptos de hosting, desarrollo, etc.
A mi juicio lo que falla aqui es el modelo de negocios que se quiere implantar, en donde tenemos un componente clave que no es posible (por ahora) eliminar, siendo el sistema de contabilidad e inventarios la piedra angular del asunto, ya que todos los sistemas de tiendas que se han desarrollado chocan con la inevitable interaccion directa entre estos y el sistema de contabilidad, caracteristica deseable pues permitiria automatizar un proceso de venta que aliviaria la carga de los vendedores. Interaccion impuesta por el modelo de negocios escogido inicialmente y nunca puesto a discusion. Pero? Seria conveniente cambiar el modelo de negocio de manera que los usuarios no estarian directamente interactuando contra las bases de datos del sistema (cosa por demas peligrosa) realizando pedidos y emitiendo facturas automaticamente que en definitiva tendrian que ser revisadas por los vendedores, pues como todos sabemos este proceso no puede escapar del control necesario para garantizar la seguridad y eficiencia del mismo?
Creo que el modelo de negocio podria ser otro, en el cual se tendria una tienda virtual general y donde:

  • Los vendedores (de las consignaciones o tiendas o puntos de ventas que sean) registran en la tienda los productos que ellos consideren susceptibles de ser vendidos mediante la red, especificando precios, descripciones, medios audiovisuales, tarifas, formas de pago, envios, etc. Donde estos pueden ser agrupados por los tipos, almacenes, puntos de venta, y muchas otras categorias para agilizarle la busqueda a los clientes. Garantizando siempre que las existencias de la tienda se correspondan sino exactamente, en menor cuantia a las que tiene en el almacen.
  • Los clientes cuando busquen un producto, se registran en el sitio, garantizando la seguridad de las operaciones y cuando hagan su seleccion estas le seran desglosadas segun los puntos de venta a los cuales sus ofertas seran dirigidas.
  • Estas ofertas de compra, son redirigidas electronicamente al vendedor el cual les da curso de forma electronica, ya sea registrando la informacion de la compra en "SU" sistema de inventarios y contabilidad conformando una prefactura que le es enviada de vuelta al cliente a traves de la tienda virtual. y donde este si esta conforme emite sus cheques y se dirige a los puntos de ventas con su prefactura y su cheque a hacer las facturas, pagar y retirar la mercancia, o en su defecto designar a un transportista a que realice la operacion, ya sea propio o sugerido por la tienda virtual. conformandose el ciclo de venta completo.
Este modelo de negocio ya ha sido usado por el portal B2BCuba y da oportunidades a varias empresas a publicar sus productos en un unico lugar, donde los clientes pueden hacer sus compras con regularidad, permite la creacion de servicios de transporte adicionales y es susceptible de ser integrado con los sistemas de las empresas que lo permitan, donde no sea posible entonces el vendedor asumira la tarea de intermediario.


Registro Seguro IRDB2+DataServices, resumen MD5 de 'root'

Implementando el registro de usuarios en IRDB2, coincido con varios autores que refieren el uso de la funcion Hash MD5 para encriptar la contrasenna, eligiendo la variante de doble encriptacion en el cliente con transformacion por secuencia aleatoria en el segundo paso lo que garantiza que tanto en el cliente como en el servidor las contrasennas permanezcan encriptadas y no sea posible realizar una suplantacion de identidad por clientes no autorizados, lo cual ya era una posibilidad en IRDB y donde se ha mejorado el proceso.
Como dato curioso, probando el metodo de encriptacion en el cliente muestro en el navegador el resumen MD5 del texto 'root' y al no poder copiarlo (no se por que?) le he dado a la opcion buscar sobre el numerito en cuestion (con el fin de copiarlo desde el google) y me han salido casi 350 resultados del resumen de la palabra 'root':

63A9F0EA7BB98050796B649E85481845

La mayoria (por no decir todos) son referencias a claves de usuarios administradores en diversos sistemas, desde una DB sobre biodiversidad de la U. Texas Austin, un sistema nombrado Mantis, MySQL, algo de XOOPS, y asi...

En tanto ya IRDB2 registra sus usuarios contra el DataServices perfectamente, en base a esto pueden ser establecidos varios esquemas de seguridad segun las necesidades de desarrollo, para la Wikinet de la empresa el modelo es sencillo, por grupos jerarquicos, de manera que los niveles superiores tienen mas de rechos sobre los contenidos que los niveles inferiores, siendo posible implementar casi cualquier modelo de seguridad que tenga como base a usuarios, grupos y permisos.

miércoles, mayo 31, 2006

Wiki + Intranet + Servicio de Datos = Wikinet

Estoy en estos dias tratando de reutilizar un viejo proyecto (IRDB) para desarrollar un sitio Web para la Intranet de la empresa, particularmente me interesaba tener una Wiki y algunos Servicios de Datos, pero haciendolo mucho mas sencillo, pues IRDB tenia algunas deficiencias organizativas que espero superar esta vez, dandole un toque mas descriptivo a la definicion del sitio y las funcionalidades de este y prescindiendo de la base de datos de uso obligatorio en IRDB.

Asi, esta surgiendo poco a poco IRDB2, basado en DataServices, un proyecto de implementacion de XMLREG que poco a poco va rindiendo sus primeros frutos y ya da soporte para definicion XML de todos los ficheros, plantillas pre-procesadas, Upload de ficheros, registro encriptado, AJAX y Wiki.

Los proximos pasos van orientados a dar soporte de XMLREG, definicion, estilo y motor de registros para trabajo con datos (captura, reporting, navegacion, filtrado inteligente, etc.). Todo desarrollado en Java, para aprovechar lo desarrollado previamente y aguardando un SVN nacional para publicacion y desarrollo colaborativo (preferentemente con buena disponibilidad)

martes, mayo 16, 2006

Compvtadoras no es Compvtacion

Realmente no espero que este sea un post reflexivo, solo pretendo criticar el hecho de que cuando queremos impulsar la computacion en el pais y en las empresas, pues nos limitamos a solamente hacer grandes gastos en infraestructura, compramos muchas computadoras, pentium IV o lo que sea, simplemente las ultimas que haya y renovamos el parque tecnologico con la esperanza que nuestros problemas informaticos desaparezcan cuando en realidad no hacemos nada concreto que pueda ayudar. Recientemente se esta extendiendo una moda (por lo menos aqui) de prohibir, entre las que estan: La musica (comprensible hasta cierto punto), las fotos personales (ahora si no lo entiendo), los correos basados en web , las listas de correo (fuente muchas veces unica de informacion), los chats (como ya comente) y cualquier otro uso de las maquinas que sea considerado previamente. Creo que habria que ser un poco mas considerados con personas que pasan muchas veces mas de 8 horas diarias frente a una computadora.
Vaya, como si alguien estuviera aplicando las reglas del mercado del software privativo a las maquinas, esto es realmente novedoso (fue una ironia...)
Me han baneado, desde Jabber.com, hasta la lista de discusion de Python, y no he querido ir mas alla para no volverme loco y pedir la baja de este centro que hace todo lo que puede por la computacion pero no lo que deberia.
Es una lastima.

El demonio C|-|AT

El demonio del Chat, si un demonio como nos lo quieren imponer, simplemente eliminado de cualquier servicio de Internet sin que nadie sepa o pueda dar una razon del por que esta prohibido el chateo.

Creo que prohibirlo tiene una componente de pesimismo tremenda sucitado por una cadena de particularidades tan discimiles como: Si pudieras chatear, es seguramente para pasarte todo el dia hablando sin trabajar, perderas rendimiento, perderas recursos asignados a ti por el estado, y al final cuando no cumplas con tu trabajo no podre despedirte de todas formas, por lo que estare condenado a seguir aguantando tu ineficiencia hasta que desees marcharte a otro lado.

Pesimista sin duda, por que mejor no: Si pudieras chatear, le ahorrarias a la empresa mucho dinero por concepto de llamadas telefonicas nacionales e internacionales, acercaras al desarrollo de la empresa a todos los profesionales amistades tuyas que en un momento determinado puedan estar on-line y responder dudas sobre algun problema en tu trabajo, siempre estaras accesible en tu puesto de trabajo y sobre todo te concentraras mas en tu objetivo al tener resueltos muchos problemas de comunicacion.

Acaso es tan distinto el telefono de un chat? cual es mas caro? con cual se pierde mas el tiempo? deberiamos prohibir el telefono tambien?

Creo que tener las condiciones necesarias para trabajar es un aspecto esencial para todo profesional, la comunicacion es parte de estas condiciones, pues garantizandole al trabajador todo lo que necesita estaremos en condiciones de exigirle mas y exigirle calidad.

Notemos que la comunidad empresarial a nivel mundial se mueve en el entorno de la mensajeria instantanea corporativa, siendo Jabber el puntero en este sentido.

En mi misma empresa cuando comence a trabajar el pasillo era un hervidero de personas viajando de oficina en oficina, buscando informacion, muchas veces para solo comunicarse algo, incluso se llamaban por telefonos directos con el gasto consecuente aun teniendo redes de computadoras que solo usaban para correo e internet (sin chat claro). Despues de varias peticiones de usuarios concientes, se comenzo a instalar un sistema de mensajeria instantanea en el cual hoy en dia estan todos los usuarios, con la posibilidad de incluso mandar ficheros por la red y saber el estado de actividad de los usuarios.

Hoy en el pasillo solo estan los fumadores o los pasilleros de siempre, conversadores en potencia a los que la tecnologia no ha podido contagiar.

Referencias


[2] IM Corporative, Google
[1] Mensajeria Instantanea Corporativa, Google
[3] Jabber

sábado, mayo 13, 2006

Complemento al Post anterior

En resumen... hacer algo y describir como hacerlo son equivalentes.

Ya estoy en esto.

miércoles, mayo 10, 2006

Factorizando las Aplicaciones de Gestion

Toda aplicacion de gestion cumple con un principio basico: Todas tienen datos, conectividad sobre estos y forma de visualizar, analizar, capturar, procesar, etc. la misma por los usuarios del sistema.

Visto, quizas de una manera simplista, desde la optica del usuario, son una suma de funcionalidades asociadas a datos que se interrelacionan para lograr un fin comun. Por ejemplo, un sistema contable se le presentara a los usuarios como pantallas de captura y reportes, listados de cuentas, de movimientos, de operaciones, etc. Cada una personalizada de acuerdo a las caracteristicas de los datos con los que trabaja y compartiendo todas, en el mejor de los casos el estilo de interfaz que resulta conveniente para facilitarle el aprendizaje del sistema al usuario, quedando resumido los sistemas de la siguiente manera:

Sistema = Modulo A + Modulo B + ... + Modulo N

Donde cada Modulo es:

Modulo X = (Datos X * Formularios X * Reportes X * Otros X)

y siendo:

Datos X = (Definicion X * Estructura X * Conectividad X * Interfaz de Datos X)

Definicion X, la definicion formal de los datos para el modulo X
Estructura X, la estructura de los datos X, que muchas veces no coincide con la definicion.
Conectividad X, la forma de conectarse con los datos X
Interfaz de Datos X, la forma de interactuar con los datos (generalmente comun, SQL)

Formularios X, la forma de visualizacion de los datos con las funcionalidades asociadas.

Reportes X, la forma de crear reportes o los reportes definidos en el Modulo X

Otros X, cualquier otra funcionalidad de datos que sea asociada al Modulo

En aras de brindar sencillez al desarrollo de explicaciones siguientes vamos a hacer notar que como Formularios X, Reportes X y Otros X son basicamente funcionalidades de X, mejor las denotamos como Funcionalidades X. quedando la ecuacion de la siguiente forma:

Sistema = Datos A*Funcionalidades A +
Datos B*Funcionalidades B + ... + Datos N*Funcionalidades N

sustituyendo:

Sistema =
Def. A * Est. A * Con. A * Intrfz. A * Func. A + Def. B * Est. B * Con. B * Intrfz. B * Func. B + ... + Def. N * Est. N * Con. N * Intrfz. N * Func. N

Que gano con esto?

Aun nada, pues como las Funcionalidades de cada Modulo son muy particularizadas a estos, no es posible simplificar mucho la ecuacion, pero, si en cambio puedo contar con un elemento Funcionalidades que sirva para cualquier Datos X, (lo que representaria contar con herramientas genericas) tendria...

Sistema = Func.*(Def. A * Est. A * Con. A * Intrfz. A + Def. B * Est. B * Con. B * Intrfz. B + ... + Def. N * Est. N * Con. N * Intrfz. N)

Asi mismo seria si pudiera contar con alguna forma de hacer lo mismo para otros componentes de la ecuacion, como por ejemplo la Conectividad de Datos y la Interfaz de Datos, cosas que ya se vienen haciendo desde siempre, quedando entonces:

Sistema = Func.*Con.*Intrfz*(Def. A * Est. A + Def. B * Est. B + ... + Def. N * Est. N)

Es claro que para que todos estos componentes de la ecuacion funcionen correctamente es necesario un conjunto de informacion que ellos no poseen y solo los modulos pueden brindar por lo que es necesario introducir un elemento en cada modulo, que sirva para describir como las funcioanlidades que han sido sacadas como elementos comunes, el elemento que se necesita es Metadata X, quedando la ecuacion:

Sistema = Func.*Con.*Intrfz*(Def. A * Est. A *Met. A+ Def. B * Est. B*Met. B + ... + Def. N * Est. N*Met. N)

Como el elemento Definicion X es inherentemente de definicion, descriptivo, este puede ser mezclado con el elemento Metadata X, ganandose en simpleza y efectividad.

Sistema = Func.*Con.*Intrfz*(Met. A * Est. A + Met. B * Est. B+ ... + Met. N * Est. N)

Ahora, en este ultimo sistema lo principal es contar con buenas herramientas de Funcionalidades, de Conectividad y de Interfaz de Datos, lo demas es definir y modelar y ya tendras un sistema listo para ser usado, extensible por naturaleza y adaptable a cualquier contexto.

sábado, abril 22, 2006

Mi primer intento con Python, Una Wiki

Hace varios dias vengo probando Python, un lenguaje de script, pero con muchas funcionalidades que lo hacen perfecto para muchas tareas de programacion (incluso desarrollar sistemas completos), muy facil, bien documentado y con cantidad de librerias que vienen incluidas para todo tipo de aplicaciones, especialmente para Web y pequeños scripts, que pueden contar con toda la funcionalidad que uno desee dada la gran cantidad de librerias que ya incluye Python y las que la comunidad ha desarrollado.
Una de estas librerias (mas bien un ficherito) es WEB.PY, un perfecto servidor Web con tremenda capacidad de resolucion de URLS a traves de expresiones regulares y la posibilidad de asociar estas a clases en python lo que agiliza mucho el desarrollo de aplicaciones Web, dandose a conocer como el "antiframework framework".
En el sitio de WEB.PY vienen algunos ejemplos de uso, uno de ellos una Wiki hecha en Python, con WEB.PY, me gusto y decidi probar el lenguaje y las facilidades de script tratando de modificar en algo inicialmente esta Wiki. a la que le agregue algunas mejoras y pongo a disposicion de Uds. para que comprueben lo facil que es desarrollar en Python y la potencia de las soluciones.

Debido a que no tengo sitio donde hospedar ficheros, les dejo mi correo y si quieren les envio el fichero de wiki.py, el web.py y el markdown.py, y les instruyo de como correrlo.



jueves, abril 13, 2006

Redes de datos de bajo costo

Las empresas del pais estan cambiando su forma de procesar los datos, algunas ya, la necesidad las ha obligado a utilizar sistemas de gestion de datos para poder controlar la gran cantidad de informacion que se mueve de forma digital y donde las computadoras y las tecnologias asociadas a esta se han convertido en una herramienta indispensable para lograr los objetivos que estas se imponen.

Es comun pues, encontrar en las empresas redes de datos orientadas a brindar servicios como el correo electronico, Internet, trabajo en grupo, etc. y eventualmente acceso a los sistemas de gestion de la empresa que generalmente funcionan en redes locales o mediante redes IP.

Si la empresa se excede fisicamente mas alla de los limites del inmueble y alcanza agrupar varias sucursales, almacenes o puntos de ventas en otros lugares, pues la solucion inminente si los sistemas de gestion lo permiten es, interconectar los puntos mediante una infraestructura de conectividad, generalmente caras e intentar que el sistema que utilizan pueda ser usado en esas condiciones.

La otra opcion es dotar a esa sucursal de conectividad para correo electronico, mucho mas barato dependiendo del alcance de la mensajeria y efectuar algunas salvas de datos que quizas si el tamaño lo permite enviarlas por correo e importar esos datos en el sistema de la empresa. En el caso de que no sea posible por el tamaño de los datos a enviar estos pueden ser enviados de manera fisica, en un soporte magnetico o de cualquier otro tipo con el invonveniento que esto puedo acarrear.

El proyecto XMLREG, ha tomado como objetivo, el de independizar la conectividad a datos donde quiera que estos se encuentren y brindar esquemas de replicacion de datos sencillos y eficientes que puedan servir de base para ofrecer conectividad a datos localmente y sincronizados con bases de datos centrales por redes de conectividad de bajo costo, como el correo electronico.

Ya comence los primeros prototipos en Mono y espero poner a funcionar la primera red de datos de bajo costo en la empresa, sobre la cual se montaran distintos servicios.

miércoles, abril 12, 2006

MonoDevelop 0.10

Acostumbrado a programar en C#, al que considero uno de los lenguajes mejor diseñados del tipo OO, (mi segundo preferido es Java) y habiendo probado versiones previas de MonoDevelop, llega la version 0.10, con varias funcionalidades que extrañe en versiones anteriores como un GUI Designer e integracion con Bases de datos. Creo que es mucho mas facil ahora desarrollar aplicaciones para Mono.
Aunque aun no me acostumbro al estilo de layouts de GTK, a configurar bien Postgre y su pgAdmin3, pero todo esta muy facil a primera vista solo es cuestion de costumbre.
Creo que al fin me doy el brinco final.


martes, abril 04, 2006

SIG, Color Coding Funcional

En las visualizaciones de datos el uso del color se ha popularizado pues aporta mucho a la usabilidad de los sistemas, generalmente por la asociacion de colores concretos a estados de los datos que puedan darle una idea rapida a los usuarios sobre la informacion que se les presenta. El mas basico esquema de coloreado a mi juicio es el usado por muchos programas (especialmente para GNU/Linux) que distinguen una linea de otra por tonalidades de blanco alternadas que proporciona una guia visual entre lineas.

En el SIG, esta funcionalidad esta implementada recientemente en su componente de visualizacion de consultas QueryBrowserControl, de manera que es posible programarle los codigos de coloreado a los elementos de datos visualizados, por filas (por columnas me parecio excesivo, pero tiene sentido tambien). Un aspecto interesante de la implementacion de los codigos de color del SIG es que por cada linea de datos se puede controlar el color de fondo y letras, de manera simple ya que es necesario una funcion que transforme el codigo de color segun la linea de datos y devuelva el nuevo codigo de colores, esto permite que sean implementados esquemas de colores por degradacion, tinte, etc. Lo que significa que es posible hacer codigos de colores que permitan mezclado de colores y asi nuevos significados visuales a colores formados por las mezclas de varios estados.

Asi, ya en varios modulos del SIG de Proyectos, Logistica y Facturacion han sido empleados los codigos de colores aumentando la usabilidad de los mismos, en particular, Listado de Ordenes de Compra, que muestra en rojo las Ordenes no aprobadas y en verde las enviadas y el Listado de Ofertas que muestra en rojo las caducadas.

Asi y todo se trabaja en implementar un modelo descriptivo para la codificacion de colores y que ademas incluya las columnas.

Ya veremos...

viernes, marzo 31, 2006

XMLREG Pospuesto

Con gran pesar me cuesta anunciar que pospondre el desarrollo del Proyecto XMLREG para dentro de unos meses por motivos de falta de tiempo para dedicarle al mismo. Actualmente llevo por parte de la mi empresa, el desarrollo de un Sistema de Gestion Informatica (SIG) que se encuentra en fase de terminacion y explotacion y al que por el momento tendra toda mi atencion.

Muchas de las caracteristicas y funcionalidades que se venian promoviendo en el proyecto ya estan implementadas en el SIG y otras ya estan en fase de implementacion, por lo que en el momento que el SIG pase a conformar un producto informatico terminado, esperamos en conjunto con los consultores del mismo, licenciarlo como OpenSource para poder dar un mejor soporte a los potenciales usuarios del mismo.

Tambien me enfocare en migrar todo el SIG para Mono.NET con el objetivo de poder usarlo en GNU/Linux y poder comenzar a migrar mis usuarios de red a SL.

Espero esto no les afecte.



martes, marzo 28, 2006

SIG, Centro de Reportes

Enmarcado en la filosofia del SIG de brindar herramientas faciles a la gestion de los especialistas y directivos usuarios del sistema, se crea (aun en fase de desarrollo) el Centro de Reportes del SIG.

Este modulo brinda la facilidad de agrupar Reportes por Tipo de una forma visual agradable y poder definir nuevos reportes con una herramienta de administracion, todo resguardado en la base de datos del SIG y extensible a otros proyectos SIG, ya que no esta enlazado a ninguna tabla especifica de la base de datos del proyecto SIG de Importacion.

El Modulo Centro de Reportes esta accesible desde el menu de opciones Corporativas.


martes, marzo 14, 2006

Del SIG, nueva funcionalidad del Kernel

El Kernel del SIG se ha visto enriquecido con una nueva funcionalidad incorporada, la posibilidad de Crear Reportes de Impresion de Listados, con funciones de Agrupacion, Resumen Parcial y Total, Filtrado Previo, etc.

Esta funcionalidad es accesible desde el componente de Listado de Consultas (QueryBrowserControl) que ya incorporaba: Paginado automatico, Filtrado Inteligente, Enlaces de Adicion, Edicion, Borrado, Eventos asociados a los Enlaces, Autoresumenes por campos, y ahora incluye esta herramienta de Impresion personalizada, donde ademas el programador del modulo que incorpore el componente puede programar de forma fija algunos reportes para que sean mostrados ademas en el Boton de Impresion a la manera de acceso rapido, siendo por defecto seleccionado el de Reporte Personalizado.

Esta funcionalidad rapidamente ha sido incorporada a todos los modulos para Comerciales del SIG Proyectos, Logistica y Facturacion, en continuo desarrollo.

En estos momentos se trabaja ademas en una mejor manera de sincronizar definiciones de bases de datos de manera que los cambios en estas puedan ser actualizados en otras bases de datos sin mucho esfuerzo de manera eficiente y segura. Y aparejado a esto se programara un modulo Central de Reportes, donde, a partir de la funcionalidad de sincronizacion de definiciones se podra crear por parte del usuario de reportes personalizables con posibilidad de salvarlos para posterior uso.

Me gustaria hacer notar que los problemas de eficiencia del SIGServer notados por algunos usuarios fueron solucionados y en estos momentos tenemos varios SIGServer con un uptime de casi un mes (el tiempo desde la ultima actualizacion del SIGServer incorporando soporte para actualizaciones de definiciones)

La herramienta SIG solo necesita algunas funcionalidades mas.

Saludos

Publicados Primeros Documentos de XMLREG en CubaForge

Las primeras especificaciones de XMLREG estan publicadas en el sitio del Proyecto en CubaForge

http://forge.cujae.edu.cu/projects/xmlreg

En el area de documentos se pueden encontrar los documentos de definicion.

Solo falta la definicion de operaciones con Registros y Comenzar con las implementaciones para lo cual se haran sub-proyectos separados, con vistas a poder dar soporte a varias plataformas y clientes en varias arquitecturas inclusive, incluyendo, J2SE y j2ME, .NET Compact Framework, Mono y Python (para linea de comandos exclusivo)

Esperamos en una semana concluir con las definiciones de operaciones y comenzar el trabajo con el server y cliente de linea de comandos.

Colaboraciones bienvenidas.







lunes, febrero 27, 2006

Especificacion XMLREG para Registros

Desde hace varias semanas vengo estudiando y diseñando las especificaciones del XMLREG para definicion de registros y sus interacciones asi como el formato de datos "desmontables" (Dockable Data). Ya esta bastante avanzado y sera publicado proximamente en el CubaForge para su consulta y desarrollo colaborativo.

En esta primera version se exponen la forma de definicion de Registros y una forma de Serializacion propuesta para la exportacion, importacion y edicion/visualizacion offline de los datos.

El Proyecto en CubaForge tendra el nombre de XMLREG ya esta registrado, solo falta la respuesta de los administradores del Forge.

La primera version del documento se publicara en la carpeta de proyectos de XMLREG en el Forge.

Espero sus revisiones y criticas.

lunes, febrero 13, 2006

Dockable Data

Hola Blog, y lectores (dejenme sus comentarios por favor)


Sucede que hace unos dias, instale el SIG en uno de los puntos de ventas de la empresa, donde utilizarian los modulos de Clientes como sub-sistema de Fichas de Clientes y los del nivel Corporativo, incluyendo Mis Registros, que seria utilizado para llevar lo que los vendedores conocen como la Biblia de facturas emitidas y despues de configurar la Biblia como un registro compartido por todos por consignaciones, surge la pregunta (obvia) de que si podian llevarse ese sistema para la casa, entiendase si podian utilizarlo desde sus casas y no precisamente conectandose al servidor sino como un fichero que podrian copiar y actualizar cuando vinieran al otro dia a trabajar o inclusive los fines de semana. Evidentemente no se puede hacer esto actualmente pero el gusanito de la inquietud y la mejora constante (como casi siempre sucede) me llevo a pensar en una solucion a esto, para lo cual estoy replanteandome muchas caracteristicas del sistema de registros personales que les propuse en un post anterior y es que la definibilidad de los datos propiamente dicha podria dar cabida a documentos XML que puedan ser exportados e importados sin problemas por los usuarios dandoles la posibilidad de poder "llevarse el trabajo a casa" y de paso, con lo modernos sistemas PDA, utilizarlos en el coche, en los viajes, exportar para compartir y toda una gama de funcionalidades inherentes a los documentos XML que ya conocemos.
Para lo cual se me ha ocurrido este termino (buzzword) "Dockable Data", que aunque no se si este ya acuñado a otro significado pero me ilustra perfectamente lo que se deberia permitir por todo sistema de gestion, si bien no por todos los usuarios y algunas veces hasta de forma automatica.
En estos momentos me encuentro haciendo una definicion de "Dockable Data" como lenguaje de marcado XML extensible pero con un conjunto de funcionalidades que podrian hacer mucho mas facil la tarea de desarrollar sistemas de gestion, con captura, busquedas, reporting, y otro termino que tambien viene en camino "Navigate & Report" (Navegacion y Reporte) que aparejado a Dockable Data pueden hacer mucho por el desarrollo de sistemas a medida en el pais.

Saludos

jueves, febrero 09, 2006

Mis Registros, herramienta para la gestión de información

Resumen

Mis Registros es un sistema sencillo de gestión de registros de datos, con funcionalidades básicas de gestión de información que abarca desde la captura, edición, borrado e impresión de la información hasta la interrelación entre registros, las búsquedas con filtrado inteligente, el reporting automático, los eventos de registro, la importación y exportación desde fuentes de datos externas, brindando la base necesaria para que complejos sistemas de gestión sean modelados progresivamente de acuerdo a las necesidades y capacidades de las entidades que lo implementen.

Objetivos

Los objetivos de este proyecto son simples en su complejidad programatica pero ambiciosos en el alcance objetivo que el mismo posee. Las necesidades de sistemas de gestión que le brinden a las empresas cubanas la capacidad de automatizar y controlar los recursos de la misma de manera efectiva, progresiva, documentada y accesible a todos los trabajadores se hacen más evidentes cada día, en la medida que las nuevas tecnologías de la información y las comunicaciones van abarcando todos los campos del desarrollo empresarial cubano y mundial.

Soluciones a sistemas empresariales existen muchas y de calidad en el mercado internacional, y Cuba posee la fuerza y la capacidad necesarias para ir supliendo las necesidades de software de este tipo que las empresas nacionales tienen, y que, ante la falta de opciones efectivas para su implantación se ven en la necesidad de sub-contratar los servicios de empresas de software que les modelen y programe su software, no siempre resultando en soluciones validas que se adapten a los cambios constantes en el sector empresarial nacional. Donde muchas de estas soluciones carecen de consideraciones de tipo legal, al utilizar tecnologías propietarias no licenciadas, ya sean de gestores de bases de datos, de plataformas de desarrollo o de sistemas operativos y al no contar la empresa con los códigos fuentes de los sistemas que tiene en funcionamiento, bien porque forma parte de un desarrollo cerrado de los proveedores de software o porque ni siquiera los proveedores pueden contar con él.

De cara a la migración hacia software libre, las necesidades de software de gestión se hacen mas patentes, siendo una de las principales causas de que todavía muchas instituciones no realicen la tan “deseada” migración, argumentando que no poseen sistemas de reemplazo para aquellos que no son susceptibles de migrar hacia plataformas de software libre (en particular Linux) especialmente el software de gestión, contables, financieros, de producción, etc.

La posibilidad de contar con una herramienta para la definición e implementación efectiva de sistemas de gestión de información es un imperativo en las empresas nacionales de todos los sectores. Herramientas que deben tener requisitos mínimos de usabilidad, accesibilidad, disponibilidad, eficiencia, fiabilidad, seguridad y modularidad, básicos para poder, en el marco de la empresa, contar con un sistema que dé respuesta a las necesidades de automatización de toda la información y los procesos asociados a esta que en la misma se generen y además sea factible su adecuación a los cambiantes entornos de trabajo.

Definición de Requisitos y Funcionalidades

Los requisitos del sistema/herramienta son descritos debajo de manera que puedan ser implementados en su totalidad. Siempre con la posibilidad de extender esta para dar soluciones a problemas más complejos cada vez.

Requisitos del sistema

1. Estar programado en una (o varias) plataformas de desarrollo libres.

2. Código abierto.

3. Independencia en los gestores de bases de datos.

4. Estructura de datos única para cualquier registro configurado en el sistema (esto es que la definición de las tablas y sus relaciones en la base de datos es única, que de cabida a todas las funcionalidades y los registros configurados)

5. Integración con esquemas independientes de seguridad (Ej. ActiveDirectory para Windows o LDAP para Linux, etc.)

6. Asegurar esquemas de Cliente/Servidor con alta disponibilidad y soporte para bitácoras de acciones por usuario.

Estos requisitos garantizaran que el sistema sea accesible a las empresas, tengan estos la infraestructura de redes que mejor les convenga y los sistemas de bases de datos que escojan, también que el sistema estará disponible para ser analizado y abierto a las colaboraciones de programadores de todo el país o extranjeros dispuestos a colaborar con el mismo, que el sistema resultante no se vera comprometido a crecer en tablas y relaciones innecesarias, cuando el conjunto de estas será limitado a las necesarias para poder modelar las funcionalidades básicas propuestas, que contara con métodos efectivos de garantizar la seguridad y fiabilidad de los datos, ya que estará regido por tecnologías de seguridad muy eficientes y finalmente que el sistema estará accesible a los usuarios en todo momento sin caídas y que toda acción que el usuario realice en el será auditable y propensa a ser revisada por los directivos de la empresa o los administradores del sistema en cuestión.

Antes de enumerar las funcionalidades, seria correcto definir elementos comunes en el desarrollo de este proyecto.

Registro: Un registro es el equivalente a una tabla con campos de diferentes tipos, validables y con un tratamiento determinado de acuerdo a su definición puntual, son autodocumentables, gestionados a través de listados, tablas o cualquier otro tipo de elemento de interacción y con la posibilidad de ser compartidos por varios usuarios, relacionados con otros registros formando registros mas complejos y toda una trama de relaciones que componen el sistema de gestión de información, con la posibilidad de definición en caliente de los datos.

Usuario: Un usuario es la persona que utiliza el sistema para ver los registros a los que tiene permisos asignados, ya sean de escritura, lectura o administración.

Listado: Forma común de listar un registro, tiene apariencia de tabla e incorpora todas las funcionalidades básicas de gestión de datos (inserción, edición, borrado, impresión) así como las de filtrado, etc. No siendo la única forma de visualizar el contenido de un registro.

Filtrado: Acción de restringir un conjunto de datos de un registro a los que cumplen con determinadas condiciones, mejora la navegación llegándose a acelerar el tiempo de búsqueda de información en el registro.

Las funcionalidades del sistema son muchas y muy variadas y todas en conjunto dan un soporte básico para poder realizar todo un conjunto de operaciones y definiciones que potenciaran las aplicaciones de gestión de la empresa, tenemos:

1. Definición de Registros, ya sea a nivel central como a nivel personal (Todos los registros están al mismo nivel en teoría, pero en la practica el grado de alcance y de interrelación los sitúa a niveles distintos, Ej. Un registro de Contratos es de nivel empresarial y el registro de un usuario de tareas por cumplir es de corte personal, el primero tendrá evidentemente muchas relaciones con otros registros de nivel empresarial, accesible por muchos usuarios y el segundo solo por el usuario que lo creó con fines muy particulares, pudiendose crear relaciones entre ellos visibles solamente a los usuarios que tengan los permisos)

2. Los registros deberán tener, nombre, creador, usuarios con acceso, descripción del mismo y tratamiento particular, eventos, formatos de impresión. Así como los campos de los registros, tendrán información relacionada al tipo, validación, formulas, relaciones con otros registros, descripción para auto-documentación, restricciones de unicidad, resúmenes.

3. Se proveerá de una herramienta de Importación y Exportación de datos, inicialmente para XML y CSV.

4. Se podrán navegar los registros hacia abajo y filtrar hacia arriba los registros relacionados en las relaciones teniendo un grado de dependencia primario-secundario (Ej. Clientes-Contratos donde Clientes es primario y Contratos secundario, de manera que se pueden navegar desde Clientes todos los contratos para un cliente determinado, pero en Contratos solamente puedo filtrar el registro por un Cliente determinado y ver todos los contratos con ese cliente en particular)

5. Cuando se hace una impresión de un dato de registro particular, se podrá solicitar que imprima sucesivamente todos los listados de registros asociados (hacia abajo) según sus filtros aplicados (Ej. Si imprimo un Contrato, me mostrara sucesivamente, a petición, todas las Facturas asociadas, etc.)

6. La definición de los esquemas de impresión, (layouts) configurable por los usuarios, permitiendo el uso de múltiples esquemas, para lo cual es necesario implementar una herramienta de confección de estos.

7. Archivador de registros, con la posibilidad de crear CDs (o DVDs) con toda la información salvada de un periodo largo de trabajo, autoejecutable con un navegador de datos (sin posibilidad de edición, inserción ni borrado)

Implementaciones prácticas del proyecto.

La implementación practica del proyecto esta pendiente de realizarse, es necesaria la ayuda de personal comprometido y capacitado. Además de contar con los recursos necesarios, de tiempo, de infraestructura, documentación, comunicación, etc.

La implementación puede ser hospedada en un sitio con CVS (Concurrent Versioning System) de manera que los cambios que vayan haciéndose en el proyecto sean de conocimiento publico y donde las versiones puedan ser publicadas con cierta periodicidad así como los cambios y las adiciones de funcionalidades y las mejoras continuas en el sub-sistema subyacente.

Recomiendo el uso de tecnologías libres de desarrollo, multiplataformas, en particular Java y .NET, por ser de gran efectividad y por su facilidad de uso, programación y la potencia de sus soluciones.

Caso ejemplo demostrativo.

Para ilustrar un caso practico de aplicación del sistema supongamos una empresa comercializadora de artículos de uso general (de consumo) que tiene puntos de venta en varios lugares del país y que no tienen una infraestructura de red conectada 24 horas y solo cuentan con servicio de correo nacional y una casa matriz donde se lleva a cabo el proceso de contabilidad y gestión de marketing, etc.

Algunos problemas que presenta esta empresa serian la gestión de los clientes (Fichas de clientes), La emisión de facturas y el control de la deuda (conocido en el ámbito comercial como la Biblia)

Pues bien, contando cada punto de venta con el sistema de registros se podrían tener fácilmente.

Primero: Control de Fichas de Clientes, implementación, se crea un registro, uniforme para todas las sucursales y la casa matriz de clientes que contenga la información referente al cliente, desde nombre, código reeup, contactos, información bancaria, etc. Pasando por el personal autorizado a efectuar compras (contenido en un registro asociado) y el numero de código interno de contabilidad. Con mecanismos automáticos de manera que el código interno sea un numero consecutivo automático y cada vez que un cliente nuevo se presenta en el punto de venta se le da la planilla de Ficha de cliente para que la llene, se le informa de los tramites necesarios y se da información de a donde tiene que enviar la información (la casa matriz o la sucursal encargada de este tramite) donde es validada (investigada la veracidad de los datos) e introducida en el registro de clientes central con un mecanismo automático (configurado en ese registro) de replicación hacia todas los puntos de ventas, que de forma automática incorporaran la información sin necesidad de introducirla ellos mismos en sus sistemas que aunque aislados están en constante actualización con el sistema central. Garantizando la unicidad del código interno por clientes.

Segundo: Emisión de Facturas, igualmente si las Fichas de clientes pudiesen ir del sistema central al de las sucursales, las facturas de las sucursales pueden automáticamente enviarse al sistema central, por medio de otro registro de facturas asociadas a clientes, de forma tal que, en la casa matriz se tengan un registro con todas las facturas que se emiten en todos los puntos de ventas por clientes (casi en tiempo real) teniendo un control de todo lo vendido a un cliente en particular.

Tercero: Control de la Deuda, los clientes pagan a la empresa de diversas maneras, ya sea en las sucursales o directamente en la casa matriz, de forma que un registro con los pagos de los clientes es necesario, registro que asociado a clientes y a facturas puede establecer cuanto dinero deben los clientes a la empresa, de forma central. Este registro quizás no necesite ser replicado en los puntos de venta, ya que los cheques o el efectivo se envía a la casa matriz estableciéndose otros controles al efecto.

Para los trabajadores de la empresa, las facilidades de búsqueda y gestión de la información son una garantía de realizar un trabajo con eficiencia, ya que se podrían hacer filtrados por clientes en facturas, o bien ver para un cliente toda la información asociada a el, y según las circunstancias extender las definiciones de los registros, o incluir registros nuevos que den respuesta a las crecientes demandas de información de otras áreas de la empresa, sin ponerle limites a lo que se puede hacer con el sistema y hasta donde el sistema puede llegar adaptándose a los cambios en el entorno económico, financiero, social y legal de la misma.

En este sencillo caso, vemos como es posible llevar un control optimizado de información que hasta este momento no tienen solución practica en la actualidad y donde, dada la gran cantidad de casos, no existe una respuesta favorable de los proveedores de software para cada necesidad.

miércoles, febrero 08, 2006

Freyre, como Ambigrama

Me acabo de leer "Angeles y Demonios" de Dan Brown, muy buen libro que les recomiendo, en donde aparecen varios elementos graficos llamados ambigramas, que no son mas que palabras escritas que pueden tener mas de una lectura, ya sea al derecho o de reves, se pueden leer dos cosas en el mismo, o quizas la misma palabra pero leible desde ambos angulos opuestos. ni decir que lograr uno no es sencillo, los hay incluso que la segunda lectura hay que hacerla mirando el dibujo en un espejo, en fin.
Ahora, basandome en algunos ambrigramas del mismo libro, le modifique algunas letras, otras las cree yo mismo y aqui les muestro como me quedo un ambigrama con mi nombre (mi apellido Freyre)

Es evidente que necesita un poco de retoque para que queda tan estilizado como en el libro de Brown, pero es un primer acercamiento al mundo de los ambigramas, que puede mejorarse.

Si tienen dudas de que se pueda leer al reves, denle vuelta al monitor.


SIG Mis Registros, posibilidades

El Modulo SIG Mis Registros ha demostrado ser una herramienta de gran utilidad practica, aun careciendo de algunas funcionalidades básicas sugeridas por usuarios del sistema, me he propuesto incorporarle algunas de estas funcionalidades que podrían convertirlo en un kill-module que podría inclusive competir con todos los restantes módulos al poder dar soporte a todas las funcionalidades básicas y los casos posibles de uso para las relaciones que se establecen en el sistema.

Para esto son necesarias algunas funcionalidades básicas que incluyen:

  • Soporte para sub-registros relacionados, comprende la posibilidad de incorporar varios sub-registros a un registro principal
  • Registro nomenclador, posibilidad para hacer selección de un dato como nomenclador de otro registro.
  • Impresión personalizada de registros, con soporte para formulas.
  • Importación y Exportación de datos de fuentes de datos externas (XML, CSV, etc.)
  • Replicación de datos automatizada desde registros, con sub-registros.
  • Campos de formula, campos auto-numéricos (o de consecutivo)
  • Enlaces directos desde menú y/o barra de herramientas.

Con este conjunto de funcionalidades básicas es posible ampliar el nivel de solución del modulo para darle cabida a registros con mayor complejidad de manera que sea posible crear complejos sistemas de gestión en poco tiempo y con funcionalidades y solución uniforme a todos los niveles.

Un extra en este listado de funcionalidades seria la posibilidad de crear flujos de trabajo asociados a eventos en registros de manera que sea posible redirigir actividades a través del SIG conformando enlaces de datos que puedan convertir al SIG programado en ese modo en completo sistema, sin necesidad de otros módulos particulares.

Este modulo así implementado podría dar solución a las necesidades de software de gestión existentes en el país, y de cara a la migración hacia software libre, al brindar un modulo que prácticamente podría convertirse en gestor de casi cualquier tipo de información, incluyendo las funcionalidades básicas de reportes, integración, usabilidad, modularidad, extensibilidad necesarias. Para esto evidentemente es necesaria una implementación libre que cumpla con la especificación de SIG Mis Registros incluyendo las características expuestas aquí.

Datos personales

Licenciado en Ciencias de la Computacion, Facultad de Matematicas y Computacion, Universidad de la Habana, 2004. Telefono: 45-3619, Cel: 282-8661