#34246
Javier Ader
Participante

Buenísimo, ahí anduvo… me iba a volver loco. Me habia puesto de debugear con eclipse y como la consola la tengo configurada con un buffer pequeño no había alcanzado a ver el error en la creación del juguete y menos a darme cuenta que la transacción se abortaba y por eso todo lo demás iba a fallar (supongo que el despues de hacer el doPreinstall habria que chequear que la transaccion esta abierta o que este metodo lo haga, si no se sabe en que parte falla). Me daba la sensación que el problema estaba en obtener las nuevas ids desde las secuencias.
Lo de los permisos de acceso ya me había dado cuenta ya que los cambios en AD_Window_Access no se loguean mientras se está en “modo desarrollo” (iba pispiando la tabla AD_Changelog para ver que se insertaba y que no); lo cual veo correcto (los usuarios cambian de instalación en instalación).

Ahora lo que vi es que aunque puso en AD_Changelog las modificaciones que hice a los juguetes (2 creaciones y un delete), estas no fueron a parar ni al install.xml ni al postinstall.xml (y por lo tanto luego de la instalación no tengo juguetes). Esto debe venir porque no “registre” la tabla M_Juguetes dentro de los esquemas de tablas mientras estaba en modo desarrollo (los exportadores alcance a ver que filtran por los esquemas data y metadata); supongo que si lo hubiese hecho despues de detener el desarrollo también habría exportado las modificaciones a las filas a M_Juguetes (aunque no a los esquemas de tablas en si mismos), e.d hubiese exportado los juguetes en particular pero no los cambios a los esquemas. Despues lo investigo un poco más porque igual el tema de los esquemas de tabla no lo termino de comprender del todo.

Unas últimas notas, para no crear un nuevo thread:

– no termino de entender para que sirve el AD_Plugin; al parecer en el proceso de instalación se crea un solo plugin por componente a lo sumo (el plugin queda asociado a la versión del componente siendo instalada, pero solo a una).

– el proceso de desarrollo ralentaba muchísimo las modificaciones de metadatos; supongo que era por las multiples modificaciones en AD_Changelog (por ej, cuando se importan masivamente las columas de una tabla). Ok, mi maquina esta bastante vieja, pero igual creo que la diferencia era bastante notable.

– por qué usaron la tabla AD_Changelog? Estaba desde antes y supongo que estaba pensada para mantener otra tipo de funcionalidad. También tiene una estructura redundante (se nota cuando se hace un insert; no tanto con una modificación simple o elimianción ya que ahi va una sola fila por operación ), e.d no esta normalizada (pienso que debe ser 2 tablas en vez de una, con una relación 1 a muchos; la segunda manteniendo los cambios a nivel de columna de una tabla). Otra limitación que le veo es que el oldvalue y el newvalue parecen tener longitud máxima de 2000 caracteres ; supongo que de ahí viene la limitación para registrar los cambios de datos binarios (a nivel de código vi algunas cosas que intentaban implementar pasando previamente a base64 los datos binarios; pero casi cualquier dato binario va a superar 2000 caracteres, más en base64).

– las notas anteriores no tienen mucha importancia ya que las mejoras andan y seguramente van a traer muchas otras de la mano. Los felicito nuevamente.