1

CRIAX-SDK: Diseccionando y configurando una aplicación I

4Feb
en CRIAX-SDK, Herramientas, Javascript, SDK, Tutoriales

Como comentamos en el post-tutorial anterior, aquí estaremos viendo:

  1. La estructura interna de una aplicación creada con el SDK.
  2. Comandos del toolchain.
  3. Análisis el archivo de configuración I.

1- Estructura interna de una aplicación

helloworld/ (directorio de la aplicación)
toolchain/ (directorio de los scripst toolchain)
api.(sh/bat)
cheking_code.(sh/bat)
clean.(sh/bat)
generate.(sh/bat)
jsuml.(sh/bat)
playground.(sh/bat)
soaclient.(sh/bat)
source-all.(sh/bat)
sqlitemanager.(sh/bat)
standalone.(sh/bat)
test.(sh/bat)
update.(sh/bat)
source/ (directorio del código de la aplicación)
class/ (directorio de las clases de la aplicación)
helloworld/ (namespace principal de la aplicación)
controller/ (directorio de los controladores [manejadores de eventos de las vistas])
model/ (directorio de los modelos [lógica de negocio])
test/ (directorio de los test, internamente llevan la misma estructura de las clases [controller, model, view, vendors])
theme/ (directorio para la configuración de los temas)
vendors/ (directorio de las aplicaciones de terceros [librerias])
view/ (directorio de las vistas [clases UI])
Application.js (clase main [punto de arranque])
resource/ (directorio de los recursos internos de criax, css, js, iconos, etc)
helloworld/ (directorio de los recursos propios de la aplicacion, css, js, iconos, db, etc)
persistence/ (directorio de la base de datos y archivos de mapeo)
services/ (directorio de los servicios [incluido los servicios de test])
script/ (directorio del script completo)
translation/ (directorio para los archivos de internacionalización [*.po])
appinfo.json (mini configuración de la aplicación)
index.html (página de arranque de la aplicación)
config/ (directorio de la configuración)
boot.json (configuración de carga inicial)
enviroment.json (configuración de entorno)
libraries.json (configuración de las librerias de terceros)
parts.json (configuración de las partes divididas de la aplicación)
persistence.json (configuración de la persistencia de datos)
test.json (configuración de las pruebas)
config.json (configuración de la aplicación)
generate.py (toolchain de la aplicación)
Manifest.json (meta información sobre la aplicación)

Esta es básicamente la estructura primaria de una aplicación. Cada aplicación debe contener el archivo config.json y Manifest.json en el directorio raíz. A partir de este directorio, el subdirectorio source/class/ contiene el directorio del namespace principal el cual incluye las clases de la aplicación. El subdirectorio raíz toolchain/ contendrá los comandos de las tareas a ejecutar para facilitar el proceso de desarrollo. Todos los demás directorios de la carpeta raíz serán generados con las tareas del toolchain.

El más importante de todos estos subdirectorios es por supusto source/ que contiene el código y los recursos de la aplicación. Al mismo nivel de class/, se encuentra el subdirectorio resource/ (para iconos, css, flash, servicios, percistencia, entro otros). También está el subdirectorio translation/ que contiene los archivos (*.po) de traducción. Durante la tarea de generación de la aplicación es creado el contenido del directorio source/script/ que contiene básicamente el código Javascript que hace referencia a todas las clases, iconos, css, imágenes necesarias, los cuales tendrán su punto de montaje en source/index.html.

2- Scripts-comandos del toolchain

api: creará la API de la aplicación en el directorio raíz.
cheking_code: revisará el código de las clases de la aplicación.
clean: limpiará la cache de la aplicación.
generate: generará la aplicación la primera vez.
jsuml: ejecutará la herramienta CASE que viene con CRIAX-SDK.
playground: ejecutará el editor de código y ejemplo que viene con CRIAX-SDK.
soaclient: ejecutará la herramienta para consultar webservices que viene con CRIAX-SDK.
source-all: precompilará todas las clases de la aplicación así como de la plataforma.
sqlitemanager: ejecutará el gestor de base de datos sqlite que viene con CRIAX-SDK.
standalone: creará el distribuible (standalone) de la aplicación.
test: ejecutará los test de la aplicación.
update: correrá y actualizará el código de la aplicación.

Archivo de configuración

En el directorio raíz de la aplicación se encuentra el archivo config.json, esta es la configuración principal, pues es la que incluye todas las demás configuraciones.

La configuración no es más que un archivo json que permite establecer valores iniciales al comienzo del funcionamiento del software.

{
    "name"    : "helloworld",

    "include" : [
        {"path" : "${QOOXDOO_PATH}/tool/data/config/application.json"},
        {"path" : "config/libraries.json"},
        {"path" : "config/enviroment.json"},
        {"path" : "config/test.json"},
        {"path" : "config/boot.json"},
        {"path" : "config/persistence.json"}
    ],

    "export" : ["api","api-data","build","clean","distclean","fix","info","inspector",
               "lint","migration","pretty","profiling","source","source-all","source-hybrid",
               "source-server","source-server-reload","source-httpd-config",
               "simulation-build","simulation-run","test","test-source","translation",
               "validate-config","validate-manifest","watch"],

    "default-job" : "source-hybrid",

    "let" :
    {
        "APPLICATION"  : "helloworld",
        "QOOXDOO_PATH" : "../../criax",
        "QXTHEME"      : "helloworld.theme.Theme",
        "API_EXCLUDE"  : ["qx.*", "${APPLICATION}.theme.*", "${APPLICATION}.test.*", "${APPLICATION}.simulation.*","criax.*","cormx.*"],
        "LOCALES"      : [ "en", "es" ],
        "CACHE"        : "../../criax/build/cache",
        "ROOT"         : "."
    }
}

Nombre de la aplicación:

La primera sección la constituye el nombre de la aplicación.

"name" : "helloworld",

Archivos de configuración:

La segudna sección la constituye la inclusión de los archivos de configuración.

"include" : [
    {"path" : "${QOOXDOO_PATH}/tool/data/config/application.json"},
    {"path" : "config/libraries.json"},
    {"path" : "config/enviroment.json"},
    {"path" : "config/test.json"},
    {"path" : "config/boot.json"},
    {"path" : "config/persistence.json"}
],

Trabajo de exportación:

La tercera sección está conformada por los trabajos que puede exportar este archivo de configuración. En esta sección no se trabaja.

    "export" : ["api","api-data","build","clean","distclean","fix","info","inspector",
    "lint","migration","pretty","profiling","source","source-all","source-hybrid",
    "source-server","source-server-reload","source-httpd-config",
   "simulation-build","simulation-run","test","test-source","translation",
   "validate-config","validate-manifest","watch"],

Trabajo de ejecución por defecto:

En esta sección se mostrará el trabajo que se ejecutará cuando se actualice la aplicación.

"default-job" : "source-hybrid",

Variables de entorno de la aplicación:

Las variables de entorno contienen información de primera mano para la ejecución de la aplicación, como el nombre, ubicación de la plataforma, tema, archivos que debe excluir la generación de la API, los idiomas a los que se puede traducir la aplicación así como la ruta de la cache de la aplicación.

"let" :
{
    "APPLICATION"  : "helloworld",
    "QOOXDOO_PATH" : "../../criax",
    "QXTHEME"      : "helloworld.theme.Theme",
    "API_EXCLUDE"  : ["qx.*", "${APPLICATION}.theme.*", "${APPLICATION}.test.*", "${APPLICATION}.simulation.*","criax.*","cormx.*"],
    "LOCALES"      : [ "en", "es" ],
    "CACHE"        : "../../criax/build/cache",
    "ROOT"         : "."
}

 Hasta aquí la primera parte de la configuración de aplicaciones con CRIAX-SDK, en próximos tutoriales estaremos viendo uno por uno los archivos de configuración.

Bonificación

Ummm que teoría mas larga verdad, bueno si eres de los sobrevivientes, aquí te dejo la API del contrib cormx.

1 Comentario

  1. Yosbel Marin dice:

    Felicitaciones, gran trabajo. Estuve revisando el API doc y veo algunos nombres y namespaces que segun mi apreciacion se pudieran ver mejor. Por ejemplo:
    – criax.ui.form.PickerFile
    «picker file» (archivo de seleccionadores) en cambio «file picker» (seleccionador de archivo) quedaria mejor
    – nunca hubiera esperado encontrarme la clase «Controller» dentro del namespace «criax.presentation.» lo veo mas asertado dentro de «criax.mvc»
    – criax.ui.form.ComboBoxFormFS
    pudiera ser criax.ui.form.fs.ComboBox y asi con las otras clases *FormFS
    – El mixin MFromFS si te das cuenta se encarga solo de la presentacion podria llamarse MFSListView (vista de lista de sistema de archivos)

    Como te dije antes, es solo mi apreciación.

Dejar un comentario a Yosbel Marin

¿Eres humano? Entonces resuelve esta operación: * Límite de tiempo se agote. Por favor, recargar el CAPTCHA por favor.