Menu

#89 Implementar separación en módulos de funcionalidad de aplicaciones

someday
new
nobody
None
enhancement
all
major
2014-05-08
2013-02-18
No

Se desea tener la posibilidad de dividir en módulos las áreas funcionales provistas por las aplicaciones.

Definición

  • Un módulo define una funcionalidad de alto nivel, o área funcional, que provee una aplicación. Ejemplos: Reportes, Farmacia, Gestión de Pacientes, Facturación, Internaciones, Control de Stock.
  • Cada aplicación define los módulos que la forman, 0 o más. No hay módulos predefinidos. No es obligatorio que las aplicaciones definan módulos; cuando no los definen se deben comportar de la misma manera que antes de incorporar esta funcionalidad a XGAP.
  • Un módulo está compuesto por un conjunto de páginas de una aplicación, es decir que permite agrupar lógicamente todas las páginas que contribuyen a la funcionalidad correspondiente al módulo.
  • Los módulos y la relación entre módulos y páginas se definen durante el desarrollo; no se pueden cambiar en tiempo de ejecución.
  • Cada página puede pertenecer a más de un módulo.
  • Un módulo puede estar habilitado o deshabilitado. Cuando un módulo está deshabilitado, las páginas que lo componen son inaccesibles en tiempo de ejecución para la aplicación. Una página sólo queda inaccesible si están deshabilitados todos los módulos a los que pertenece.
  • El estado de habilitación de los módulos se puede cambiar post-deploy, mediante la modificación de un archivo de configuración. No se debe proveer una interfaz para hacerlo dentro de la propia aplicación (es decir, una página de administración de módulos), dado que el cambio de estado es una operación que modifica la funcionalidad disponible y sólo debe ser realizada por la persona que administra la instalación.
  • Un módulo puede tener a otros como dependencia de habilitación. No se puede habilitar un módulo si no están habilitados todos aquellos de los que depende; no se puede deshabilitar un módulo si no están deshabilitados todos los que dependen de él. Las dependencias son transitivas, formando un grafo dirigido acíclico.
  • Los módulos permiten simplificar la asignación de permisos por rol funcional. Por cada rol funcional se puede especificar si tiene o no permiso de acceso a cada módulo, afectando a todas las páginas que componen al módulo; luego se pueden indicar excepciones a páginas individuales dentro de éste. También se puede dejar el módulo con permiso indefinido para el rol y asignar individualmente los permisos a sus páginas.
    Cuando una página pertenece a más de un módulo, su permiso es concedido si al menos uno de los módulos tiene permiso concedido, o denegado si todos tienen permiso denegado para el rol, a menos que se defina explícitamente el permiso para esa página.
    Por ejemplo: el módulo M1 contiene las páginas P1, P2 y P3; el módulo M2 contiene las páginas P1, P4, P5 y P6. Al rol R1 se le concede permiso de acceso a M1 excepto para P2, y se le niega a M2 excepto para P6. El resultado es que R1 puede acceder a P1, P3 y P6, y no a P2, P4 y P5.

Discussion

  • Gaston Martini

    Gaston Martini - 2014-05-08
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1,10 +1,7 @@
    -Se desea tener la posibilidad de dividir en módulos las áreas funcionales provistas por las aplicaciones.  
    +Se desea tener la posibilidad de dividir en módulos las áreas funcionales provistas por las aplicaciones.
    
    -
    -# Definición
    -
    
    -  
    -
    +Definición
    +==========
    
    
       * Un módulo define una funcionalidad de alto nivel, o área funcional, que provee una aplicación. Ejemplos: Reportes, Farmacia, Gestión de Pacientes, Facturación, Internaciones, Control de Stock. 
       * Cada aplicación define los módulos que la forman, 0 o más. No hay módulos predefinidos. No es obligatorio que las aplicaciones definan módulos; cuando no los definen se deben comportar de la misma manera que antes de incorporar esta funcionalidad a XGAP. 
    @@ -16,4 +13,4 @@
       * Un módulo puede tener a otros como dependencia de habilitación. No se puede habilitar un módulo si no están habilitados todos aquellos de los que depende; no se puede deshabilitar un módulo si no están deshabilitados todos los que dependen de él. Las dependencias son transitivas, formando un grafo dirigido acíclico. 
       * Los módulos permiten simplificar la asignación de permisos por rol funcional. Por cada rol funcional se puede especificar si tiene o no permiso de acceso a cada módulo, afectando a todas las páginas que componen al módulo; luego se pueden indicar excepciones a páginas individuales dentro de éste. También se puede dejar el módulo con permiso indefinido para el rol y asignar individualmente los permisos a sus páginas.  
     Cuando una página pertenece a más de un módulo, su permiso es concedido si al menos uno de los módulos tiene permiso concedido, o denegado si todos tienen permiso denegado para el rol, a menos que se defina explícitamente el permiso para esa página.  
    -Por ejemplo: el módulo M1 contiene las páginas P1, P2 y P3; el módulo M2 contiene las páginas P1, P4, P5 y P6. Al rol R1 se le concede permiso de acceso a M1 excepto para P2, y se le niega a M2 excepto para P6. El resultado es que R1 puede acceder a P1, P3 y P6, y no a P2, P4 y P5. 
    +Por ejemplo: el módulo M1 contiene las páginas P1, P2 y P3; el módulo M2 contiene las páginas P1, P4, P5 y P6. Al rol R1 se le concede permiso de acceso a M1 excepto para P2, y se le niega a M2 excepto para P6. El resultado es que R1 puede acceder a P1, P3 y P6, y no a P2, P4 y P5.
    
    • Milestone: --> someday
     
  • Gaston Martini

    Gaston Martini - 2014-05-08
    • assigned_to: Gaston Martini --> nobody
     

Log in to post a comment.