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

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