Gestión de la supervisión institucional de las flotillas y sus puntos de control. Contacto: (+52) 55 8590 8505

Arquitectura

< All Topics
Print

Arquitectura

Capítulo 1 La arquitectura

Objetivo de la herramientas

El objetivo del proyecto es contar con una herramienta que permita modelar sistemas en base a una base de datos relacional por el momento mysql o mariadb.

Y que de forma fácil tome la misma estructura para su comportamiento sumando un modelador simple sobre comportamiento y relación de datos.

La finalidad es que dicha herramienta permita generar aplicaciones en tiempo récord en base y que la adaptación cambios y ajustes de las aplicaciones sean de fácil creación y adaptación.

Tomando en consideración los frameworks existentes buscaremos la forma de adaptarlo a los frameworks actuales más importantes.

Capítulo 2: Sobre la arquitectura

Su base

El proyecto en su origen fue basado en la arquitectura de YII versión 1 y se tomo como base el modelo de arquitectura de entrada adaptándola de tal forma que no se requiriera la creación de rutas para la definición ya que esta esta definida por la propia arquitectura de controles y la estructura de datos se forma a partir de la relación de base de datos llaves foráneas, así como comentarios que se crean dentro de la base.

Capítulo 2: Sobre la arquitectura

La base del proyecto

El proyecto en su origen fue basado en la arquitectura de YII versión 1 y se tomo como base el modelo de arquitectura de entrada adaptándola de tal forma que no se requiriera la creación de rutas (router’s) para la definición ya que esta esta definida por la propia arquitectura de controles y la estructura de datos se forma a partir de la relación de base de datos llaves foráneas, así como comentarios que se crean dentro de la base.

También se creo una estructura que acompaña al sistema que ayuda a la definición y comportamientos de catálogos.

  1. Repositorio base
https://github.com/dixi-project/not-framework-dixi
  1. Estructura de la arquitectura

El sistema esta basado en el modelo vista controlador por sus siglas en ingles (MVC – Model View Controler)

y se compone de un solo acceso al sistema index.php el cual tendrá todo el control de entradas al sistema esto lo controlamos a través de la la configuración del archivo .htaccess donde se configuro que todas las peticiones deberán de pasar por el index y las rutas deberán entrar como parámetro con también se pueden recibir parámetros por get los cuales se transforman en variables pero antes de todo eso se limpian las variables de posibles ataques XSS y SQLInjection

Sobre la estructura de carpetas tenemos design, docs, framework, includes, protected y sobre los archivos de raíz tenemos index.php, .htaccess y .gitignore

design En esta carpeta se guardan los estáticos de un templete y se pueden enumerar del 1 en adelante de esa forma el mismo sitio puede comportarse y tener apariencia diferente de forma simple

docs En esta carpeta se genera el API de la aplicación cuando se ejecuta phpDoc revisar https://www.phpdoc.org/

framework En esta carpeta viven los módulos básicos delos que se compone la aplicación y que se cargan por default ala aplicación y se tiende a no cambiar nada de esta sección salvo que se quiera modificar el framework.

Includes En esta carpeta viven todos los archivos ajax que queremos ejecutar por alguna razón y carpetas donde se guardan archivos como pdfs, imágenes o cualquier archivo que se quiera relacionar a registros, en esta carpeta vive una de las carpetas más importantes structure la cual contiene la estructura convertida dela base a objetos que definen la base de datos y a través de los cuales el sistema opera para todo su sistema de catalogos.

Protected En esta carpeta es donde más se deberá de trabajar yse compone de 4 carpetas:

config la cual contiene un archivo llamado data.php el cuales el principal archivo de configuración del sistema en donde se puede configurar el servidor de aplicaciones local, QA y producción para no tener que estar cambiando cada que se despliega a producción o a servidor de pruebas.

Controller En esta carpeta se guardan todos los controladores del sistema que son equivalentes a las rutas que deberán de existir habrá un controler por cada ruta existente en nuestro sistema.

Model En esta carpeta viven el administrador de modelos y trabaja en base a la estructura de la base por ello es que casi no se tendrá que crear modelos ya que se crean de forma dinámica a partir de la estructura de datos, solo en caso de modificar el framework para algo más avanzado se deberá modificar.

Views en esta carpeta viven los templetes que se usaran para el sistema y viven dentro de la carpeta tempates y luego el número de diseño para ligarlo al número que coincida con el de la carpeta design

  1. Capítulo 3: Sobre la instalación
    1. Requerimientos

El sistema esta creado en el lenguaje de PHP por tanto puede ser ejecutado en un servidor de aplicaciones Apache o Nginx basta con 1 GB de memoria y 10 GB de DD y procesador de 2GHz es más que suficiente para operar y claro el rendimiento va a depender de la cantidad de gente que se conecte.

Por otro lado tenemos la base de datos que puede ser Maria DB o Mysql actualmente esta es la base de datos con la que opera el sistema.

  1. Pasos para desplegar el sistema

Paso 1

Después de haber clonado el proyecto o tenerlo en una carpeta ejemplo var/www/miproyecto/ entonces se deberá de crear la base de datos quese usara, ya que de ello depende que el sistema sepa que hacer existen tres tablas que son básicas para el funcionamiento del sistema user, rol y status estas tres tablas te permitiran tener un sistema de login para la aplicación por lo tanto serán requeridas adjunto script para la creación aparta de ello tenemos 4 tablas para configuración avanzada estas son conf_field, conf_table, conf_type_view, conf_view, las cuales permiten definir el comportamiento de cada entidad o tabla dentro del sistema.

La tabla de user tiene a los usuarios que pueden estar identificados en el sistema puedes crear un usuario de prueba o de acceso principal este usuario deberá tener el rol de administrador que es el ID 1 de la tabla e roles y su clave se guardara en MD5

Paso 2

se deberá configurar el archivo data.php que se encuentra en

/protected/config/data.php

en donde se escribiran nombre de la base de datos, usuario, y clave asi como las rutas donde vivirá el proyecto.

Paso 3

se deberá dar permisos de escritura a las carpetas

includes/images/

includes/files/

includes/pdfs/

includes/structure/

Paso 4

Crear la estructura de datos

http://localhost/not-framework-dixi/includes/ajax/createStructure.php

Esto suponiendo que estas en el local deberás ajustar la url si lo quieres ejecutar en un dominio externo

Este archivo genera diferentes archivos .json los cuales representan la base de datos y requeridos para el correcto funcionamiento del sistema.

Lo otro seria trabajar directamente sobre el módulo de modelado que se encuentra en:

https://admin.logistico.digital/modelos

Paso 5

Puedes descargar alguno de los diseños con los que ya viene la aplicación para operar

https://framework.dixi-project.com/1.zip
https://framework.dixi-project.com/2.zip
https://framework.dixi-project.com/3.zip
https://framework.dixi-project.com/4.zip
https://framework.dixi-project.com/5.zip

Listo!!! ya se tiene un proyecto listo para operar

  1. Capítulo 4: Primeros pasos
    1. Lo que ya trae el sistema

El sistema cuenta con servicios funcionales.

  1. Sistema de 5 plantillas ya creadas y operativas
  2. Sistema de login
  3. Modelado de catálogos
  4. Sistema de catálogos

Plantillas

Después de descargar una plantilla solo hay que colocarla en una carpeta con el número de diseño en la siguiente ruta: design/

ejemplo si descargo el diseño 2 entonces quedaría en design/3/

y el archivo data.php debería de cambiarse el diseño al 3 y es todo

Login

Cuando se entra al sistema el login ya funciona si la base cuenta con las tres tablas de user, status y rol con almenos un registro

Modelado del sistemas

Esta ruta sirve para definir cosas sobre el comportamiento del sistema como nombre de los campos y campos dependiendo la vista este modulo solo esta disponible para para la versión 1 del diseño

Sistema de catalogos

Para el sistema de catálogos solo deberá de usar el mismo nombre de la tabla en la siguiente ruta.

https://admin.logistico.digital/catalogo/<Nombre tabla>

Ejemplo: https://admin.logistico.digital/catalogo/rol

Lo que pasara a continuación es que tendremos un CRUD (Create, Read, Update, Delete) o un ABCE (Agregar, Borrar, Consultar y Editar ) de nuestra tabla

  1. Capítulo 5: Como crear nuevos módulos
    1. Sobre las rutas y controladores

Para crear módulos nuevos es muy fácil solo deberán de crearse un controlador con la siguientes especificaciones:

1. supongamos que quieres crear un módulo que se llame visitas y lo quieres crear por que no se parece a un catálogo simple, sino quieres crear un diseño especifico y quieres que la ruta sea

https://admin.logistico.digital/visitas

un controlador que deberá vivir en protected/controller/ControllerVisitas.php

y deberá de tener la siguiente estructura como mínimo

Table of Contents