iidec / Integra.Space.Language-upstream

Lenguaje de consulta que permite el acceso a datos en tiempo real
0 stars 0 forks source link

Implementación del pipeline de ejecución de comandos #27

Closed OscarCanek closed 7 years ago

OscarCanek commented 8 years ago

Propuesta del flujo de ejecución de los comandos.

image

Los subprocesos, representados por los cuadros verdes, son las actividades especificas de cada comando, los demás representan actividades comunes.

Propuesta de acciones específicas de cada comando

image

El parseo de cada comando retornará el contexto de ejecución que será la entrada del pipeline.

Implementación

Conceptualmente se tendrá lo siguiente:

image

Cada filtro será un paso del pipeline, los filtros pueden conectarse para formar un pipeline, y este a su vez es un filtro al cual se le pueden conectar otros filtros. Cada filtro tiene una entrada y una salida.

Diagrama de clases

image

Las extensiones nos permitirán hacer lo siguiente:

// se arma el pipeline
Filter pipeline =  new FilterLock()
                .AddStep(new FilterVerifyExistence())
                .AddStep(new FilterValidateExistence())
                .AddStep(new FilterValidateAction())
                .AddStep(new FilterSpecificAction())
                .AddStep(new FilterUnlock());

// se ejecuta el pipeline
var result = pipeline.Execute(context) // donde el contexto es obtenido del parseo del comando
OscarCanek commented 8 years ago

Por otra parte propongo crear otro proyecto para la administración: Integra.Space.Management donde tenga referencias a Integra.SpaceLanguage para generar el contexto del comando que se utilizará de input para el pipeline y también para generar los dll a partir de las consultas. El Integra.Space.Management también tendrá referencias a firebird y tendrá la implementación del pipeline.

marianogenovese commented 8 years ago

Creo que lo apropiado sería hacer un nuevo repo que se llame Integra.Space ahi podríamos todo lo relacionado con el servidor/motor.