Dificultades con personalizaciones sobre la versión 2.8.3 de G3W2

Hola a todos:

En la Universidad Nacional del Sur hemos estado realizando personalizaciones sobre la versión 2.8.3 de G3W2, tanto para el Perfil Docente, como para el de Alumnos, comenzando por este último. Actualmente nos encontramos en la versión 2.7.0 planificando la conversión para el primer cuatrimestre del año 2015.

 Durante este proceso, nos hemos encontrado con algunas dificultades para implementar las personalizaciones sobre Chulupí siguiendo los instructivos publicados en el portal. Estos tutoriales en formato wiki no nos han provisto de toda la información que hemos ido necesitando para resolver nuestros casos, resultando en un esfuerzo mayor del que habíamos evaluado inicialmente. Las funcionalidades que intentamos personalizar ya las tenemos implementadas para la versión 2.7 y anteriores, por lo que intuíamos que solo implicaría realizar una "traducción" del código para adaptarlo al nuevo framework.

 Los módulos y operaciones que al momento hemos llegado a personalizar son:
  • Reinscripción

  • Administración de contraseñas con formatos propios de UNS

  • Controles de reinscripción y datos censales

  • Modificación de la vista de carreras seleccionables en el menú superior (para poder visualizar y operar sobre carreras vocacionales, extracurriculares, idiomas y carreras en las cuales el alumno esté egresado, que por defecto no aparecen).

  • Solicitud de Certificados

  • Reporte de Planes de Estudio

  • Perfil para Aspirantes

    Estuvimos preparando una lista que enumera las dificultades con las que nos hemos encontrado, con algunas observaciones y sugerencias, pensando en que puede ser útil nuestra experiencia, y a su vez, nos serviría muchísimo lo que ustedes nos pudieran comentar en respuesta, para acelerar este proceso de implementación:

PERSONALIZACIONES

1.	La documentación del Portal referida a las personalizaciones sobre Chulupí y G3W2 no posee un apartado relacionado con la versión G3W2 2.8.x. Los ejemplos que figuran no son suficientes para deducir la funcionalidad disponible. No se ha publicado la documentación de una API mínima y estable. Esto provoca que cada intento de personalización se vea demorado constantemente tratando de encontrar la funcionalidad mínima y cuál es el alcance correspondiente. Por ejemplo, al tratar de buscar la definición y las invocaciones de una función, se debe buscar a ciegas sobre todo el árbol de fuentes a nivel de archivos, luego deducir los tipos y validaciones de los parámetros de entrada y salida.

2.	Sería conveniente indicar en la documentación, los límites del esquema básico de personalizaciones para scripts en PHP. Por ejemplo, si una personalización extiende la clase “controlador_errores_control” del directorio “extension_kernel”, también deben extender los controladores de todas las operaciones que la heredan, sólo para redefinir la clase padre heredada, aun cuando no se hayan personalizado puntualmente ninguna de esas operaciones. 

ESTRUCTURALES

1.	Las clases principales “guarani” y “persona” -esenciales para G3W2- se encuentran pobladas de métodos estáticos, con funcionalidades que no se pueden personalizar sin romper el esquema propuesto. No son personalizables porque se invocan directamente en el bootstrap, el cual a su vez depende del punto de acceso (index.php, rs.php y servicios.php) del namespace siu.

2.	¿Por qué se transforma a minúsculas la clave de cada parámetro de las funciones del catálogo en tiempo de ejecución? Sería conveniente ser sensible a mayúsculas y minúsculas, como cualquier arreglo asociativo, o alternativamente, debería quedar documentado de forma clara.

3.	¿Por qué no se pueden pasar valores NULL como parámetros de las funciones de catálogo (testeo isset incorrecto)? Sería conveniente que se respetara la semántica del valor NULL, cuya interpretación debería ser responsabilidad de la implementación de la función del catálogo. 

4.	¿Por qué no se pueden pasar valores booleanos como parámetros de las funciones de catálogo (se transforman a cadena vacía)? Análogo al caso anterior, sería conveniente que las funciones del catálogo fueran las responsables de interpretar y traducir un valor booleano según el motor de base de datos utilizado.

ESPECIFICAS

1.	Se ha detectado en el controlador de la solicitud de certificados que no se efectúa una mínima sanitización de los parámetros recibidos por el servidor por el método POST. Sería conveniente que existiera un conjunto mínimo de funciones en la API para efectuar una sanitización inicial, aun en carácter opcional.

2.	El esquema de validación de formato de claves -en particular, la expresión regular- se encuentra en la clase “guarani”, que no puede personalizarse siguiendo el método propuesto.

3.	Acoplamiento en la implementación de controles de reinscripción y datos censales. Estos controles se disparan, se capturan y producen cambios de estado a través de múltiples clases y operaciones,  dificultando el seguimiento y personalización. Se implementan mediante segmentos de código y variables globales que se diseminan en varios scripts. Por ejemplo, si se quisiera implementar un control de pago o sanciones análogos a la reinscripción, habría que replicar este comportamiento en todas operaciones que controlan este tipo especial de error. Sería conveniente definir una abstracción en una jerarquía de clases bien definidas, que permitan tratar los aspectos transversales que no cubre el sistema de controles actual.

4.	Se detectaron errores en la validación y actualización de registros en formularios de datos censales. Al ejecutar la operación de actualización de datos censales en “modo reinscripción”, una simple visita a una sección deja marcada la solapa con un tilde; aun cuando el formulario correspondiente permanezca con errores y/o datos obligatorios pendientes. Si todas las solapas quedan tildadas, se considera que los datos censales se han revisado, y la operación termina sin advertir los errores pendientes. Se debería confirmar explícitamente el guardado de una sección antes de considerarla actualizada con un tilde. Por otro lado, los datos censales, con todas sus tablas, deberían actualizase simultáneamente en una sola transacción, y no en partes, como sucede actualmente

Muchas gracias y saludos

Hola Paola, estuve leyendo sobre las dificultades que están teniendo con las personalizaciones del G3W2, lo que me parecería conveniente para poder ayudarlos es que por cada problema particular que están teniendo abrir un foro o GDS así podemos ayudarlos mejor.

Otra cosa que le pedimos es que suban sus personalizaciones al colab para poder ver que están haciendo, si lo están haciendo bien y como ayudarlos.

espero sus consultas, les pedimos de ir tratando de a un problema a la vez así podemos resolverlo mejor. Saludos, Leonel.

Hola Leonel:

No tenemos inconvenientes en dividir cada item en posts separados. Pero lo que tratamos de hacer en el post anterior fue generalizar todas las dificultades con las que nos fuimos encontrando. Esas dificultades específicas, las fuimos resolviendo en las operaciones particulares, para que pudieran funcionar.

Este proceso nos implicó más tiempo del que se había planificado, debido a lo insuficiente de la documentación del portal, y a los problemas que encontramos con el modelo de personalización actual. La idea general de las observaciones era que nuestra experiencia pudiera ser útil para mejorar el esquema general de trabajo con las personalizaciones, para todos, no solo para la UNS. A su vez, nos interesa recibir un aporte de ustedes para poder mejorar nuestros tiempos de desarrollo; siempre a nivel general y no en operaciones particulares.

Cuando hemos tenído inconvenientes con una operación en particular, por ejemplo, con la actualización de datos censales, hemos generado un GDS para reportarlo.

Subiremos las personalizaciones al colab para que puedan mirarlas.

Considerando lo expuesto, confirnanos si es necesario que dividamos el post anterior en tres nuevos posts con los tres temas principales: personalizaciones, estructurales y específicas.

Muchas gracias por tu respuesta,
Pablo Revel,
UNS.

Hola Pablo! Primero que nada, me pone contento que estén implementando en bahía.
Tus sugerencias son siempre bienvenidas, pero lo mejor, me parece, es que organicemos una reunión para charlar sobre las cosas que mencionan y dejar el foro para cuestiones más específicas. Si querés la podemos hacer presencial, yo estoy trabajando en bahía así que algún día que estén puedo pasar por allá. Dejo mi mail para que coordinemos.

ablanco@siu.edu.ar

Saludos!