Desde que estoy trabajando con Dynamics AX, que ocurre desde finales del 2002 siempre en todas las implantaciones en las que se han hecho personalizaciones y se ha retocado los objetos de AX, siempre ha habido problemas a la hora de pasar los cambios en procesos / objetos dado que el sistema para optimizar el rendimiento cacheaba objetos u/o datos de las ultimas ejecuciones de esos objetos previas a la subida a producción de estos cambios, lo que producía incredulidad por parte del usuario, al comentarle que se habían solucionado o modificado ciertos objetos / procesos y seguían visualizando los objetos / procesos con los estados previos a esos cambios, y muchas veces se te quedaba hasta cara de tonto intentando explicar al cliente que esto era porque el sistema cacheaba la información.

Desde la versión 4.0 de AX esto se hizo más evidente puesto que yo no permitía la conectividad en 2 capas, y siempre era mediante un AOS, con lo que se cacheaban los objetos y se almacenan en los ficheros con extensión “auc” en los ordenadores donde estaban los clientes. Con Dynamics AX 2009 ocurre lo mismo, y tiene la pinta que con AX 2012 va a ocurrir lo mismo.

Para controlar que a la hora de subir los cambios a producción se actualicen los objetos se me ocurrió incluir 2 campos de tipo check a nivel de las opciones de usuario para indicar si se actualiza el AOD y si se actualizan los datos de uso a logarse en AX.

image

A la hora de logarse, leerá de estos campos y en función de que este activo o no actualizará el AOD y/o actualizará los datos de uso

void executeUserOptions(){
UserInfo userInfo;

//START BLOCK BY: AX3_Adolfo Castillo ON:29/09/11 /· - ·/
args args;
SysLastValue _sysLastValue;
//END BLOCK BY: AX3_Adolfo Castillo ON:29/09/11 /· - ·/

select firstonly AutoLogOff
from userInfo
where userInfo.Id == curuserid();

if (userInfo && userInfo.AutoLogOff)
this.setTimeOut(methodstr(Info,autologOff), userInfo.AutoLogOff*1000*60, true);

//START BLOCK BY: AX3_Adolfo Castillo ON:29/09/11 /· - ·/
if(SysUserInfo::find(userInfo.Id).AX3FlushAOD)
{
args = new args();
SysFlushAOD::main(args);
infolog.urlLookup("www.elrincondynamics.es");
}
if(SysUserInfo::find(userInfo.Id).AX3Data)
{
delete_from _sysLastValue where _sysLastValue.userId == userInfo.id;

}
//END BLOCK BY: AX3_Adolfo Castillo ON:29/09/11 /· - ·/
this.setTimeOut(methodstr(Info,watchDog), #watchdogInterval, false);
}

A la hora de logarse en AX, tardará un poco más de lo habitual en cargar si tiene los checks ya que en actualizar el AOD tarda un rato.

image

 

Crossposting from AX3.es

 

Visitas: 196

Comentario por Rodolfo Sanchez el octubre 21, 2011 a las 4:28pm
excelente la info
Comentario por JC el octubre 21, 2011 a las 6:16pm
Muy bueno, gracias por compartir.
Comentario por Germán Caballero el octubre 24, 2011 a las 9:22am

Buena idea, solución sencilla y útil!

Comentario por Braulio Marrero Japa el octubre 24, 2011 a las 11:02pm
Tremenda informacion que nos da, gracias
Comentario por Juan Carlos Manjarrez Peralta el octubre 29, 2011 a las 7:44pm

Eso si es verdad, en la vesion 4 no era muy evidente, sin embargo en la version 2009 fue mas notable este problema lo que hacemos nosotros es actualizar en cada uno de los aos, si es que tienen mas de uno, y posteriormente reiniciar cada uno de los AOS. Me pregunto si tu solucion funcionaria si tengo varios AOS.

Saludos desde Mexico. Juan Carlos

Comentario por Adolfo Castillo el noviembre 4, 2011 a las 5:29pm

Si tienes más de 1 AOS, asegurate que el fichero de aplicación sea el mismo, y si no lo es que este actualizado. El pequeño desarrollo que he dejado lo que hace es actualizar los datos de uso (en definitiva el fichero "auc") del cliente, y lo hará con los objetos de la aplicación de la que tira ese AOS.

 

Por eso te recomiendo si son más de un AOS que tires todos los AOS y los vayas levantando, también habría que ver si estas balanceando o te conectas a un AOS específico.

Comentar

¡Necesitas ser un miembro de El Rincón Dynamics para añadir comentarios!

Participar en El Rincón Dynamics

© 2012   Creado por Antonio Gilabert.

Emblemas  |  Reportar un problema  |  Términos de servicio