JMP Addin Script Caching?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Estoy trabajando en el desarrollo de una serie de scripts para un complemento JMP ...
En este momento, tenemos 2 paquetes de versiones del mismo complemento .... Uno para DEV y otro para producción.
La mayoría de los usuarios solo tendrían instalada la versión PRO ...
Pero nosotros, los desarrolladores y nuestros evaluadores pueden tener tanto la versión PRO como DEV Addins instalados ...
Obviamente, los scripts contenidos en los complementos tienen el mismo nombre ... pero las variables son diferentes, como AddinName y / o DSN Name .... y, obviamente, la versión DEV probablemente tenga un código más nuevo que la versión PRO aunque los nombres de los scripts sean diferentes ...
Lo que noté finalmente hoy fue que JMP (tanto el 9 como el 12) parece almacenar el script en caché.
Parece que se está ejecutando el script del archivo ADDIN instalado más recientemente ... así que si instalo el complemento DEV, entonces el complemento PRO ... parece que nunca ejecuta los scripts DEV .. Parece que siempre se cargan los scripts desde el directorio de complemento de PRO, sin importar desde qué MENÚ llame al script desde ... Ocurre lo contrario cuando instalo primero PRO, luego DEV ... : S
1) La ID y los nombres de Addin son diferentes y únicos
2) El directorio Agregado es diferente ...... así que aunque los nombres de los scripts en los diferentes directorios son los mismos, cada complemento tiene una INSTANCIA diferente del script en su propio directorio ...
2a) esto se hace aún más evidente, cuando lanzo un Script PRO desde el Menú PRO ... y mire el archivo LOG y vea que ejecutó el script DEV no el script profesional, y está usando la carpeta DEV para los archivos incluidos.
2b) la definición del menú jmpcust está utilizando $ ADDIN_HOME ("ADDIN-NAME") vs $ ADDIN_HOME ("ADDIN-NAMEDev"), pero aún parece ejecutar el script de la versión de complemento más recientemente instalada (PRO vs DEV)
Ej: acabo de ejecutar este script desde el elemento PRO MENU ... Sin embargo, puedo ver que está ejecutando el DEV CODE ... y parece tener el espacio de nombres DEV .. ??
strDefaultDir = Obtener directorio predeterminado ();
print ("Incluyendo:" || strDefaultDir || "MFG360-Common.jsl");
Include (strDefaultDir || "MFG360-Common.jsl", Parse Only);
Salida de registro ...
/ *:
Add-In cargado correctamente: MFG360
Add-In cargado correctamente: MFG360 _Dev
"Incluyendo: /C:/Usuarios/klockk.AUTH/AppData/Local/SAS/JMP/Addins/MFG360 Dev /MFG360-Common.jsl "
¡¡No llamé al CÓDIGO DEDELO !! Seleccioné el elemento del menú del menú MFG360 ... no el menú MFG360_Dev ...
¿JMP está guardando en caché los nombres de las secuencias de comandos y no sigue correctamente lo que se encuentra en el archivo .jmpcust para cada complemento registrado?
Re: JMP Addin Script Caching?
He tenido este problema tanto con JMP9 como con JMP12
Los nombres del menú de nivel superior son diferentes, pero la estructura debajo de ellos es la misma ...
Los archivos Addin.def especifican diferentes ID y nombres
id = MFG360Dev
name = "MFG360_Dev"
supportJmpSE = 0
addinVersion = 1
installAfterSave = 0
minJMPVersion = 9
maxJMPVersion = 12
carga automática = 1
loadsAtStartup = 1
--vs--
id = MFG360
name = "MFG360"
supportJmpSE = 0
addinVersion = 1
installAfterSave = 0
minJMPVersion = 9
maxJMPVersion = 12
carga automática = 1
El archivo jmpcust también especificó un menú de nivel superior diferente ... y también usa la variable $ ADDIN_HOME () para señalar la ruta correcta del script.
He pensado que, dado que el nombre de MENU tiene el mismo nombre para DEV vs PRO, tal vez JMP se esté confundiendo, así que los cambié para tener un guión bajo en lugar de un espacio, pero aún así no tengo suerte ...
< menu_and_toolbar_customizations="" ="" jm="""> http://www.jmp.com/ns/menu "version =" 3 ">
< insert_in_main_menu="">
< insert_after="">
< name=""> HELP
< menu="">
< nombre=""> MFG360 DEV
< título=""> MFG360 Dev
< menu="">
< nombre=""> FAB
< caption=""> Fab
< menu="">
< name=""> LOT HISTORY
< caption=""> Historial de lotes
< comando="">
< name=""> HISTORIA EN CASA
< caption=""> Historial interno
< action="" type=""path""> $ ADDIN_HOME ( MFG360Dev ) \ Lot_History.jsl
< icon="" type=""none"">
< comando="">
< name=""> HISTORIAL DEL EQUIPO DE LA FUENTE
< caption=""> Externalizar el historial de EQU
< action="" type=""path""> $ ADDIN_HOME ( MFG360Dev ) \ Outsource_Equipment_History.jsl
< icon="" type=""none"">
--vs.—
< menu_and_toolbar_customizations="" ="" jm="""> http://www.jmp.com/ns/menu "version =" 3 ">
< insert_in_main_menu="">
< insert_after="">
< name=""> HELP
< menu="">
< nombre=""> MFG360
< título=""> MFG360
< menu="">
< nombre=""> FAB
< caption=""> Fab
< menu="">
< name=""> LOT HISTORY
< caption=""> Historial de lotes
< comando="">
< name=""> HISTORIA EN CASA
< caption=""> Historial interno
< action="" type=""path""> $ ADDIN_HOME ( MFG360 ) \ Lot_History.jsl
< icon="" type=""none"">
< comando="">
< name=""> HISTORIAL DEL EQUIPO DE LA FUENTE
< caption=""> Externalizar el historial de EQU
< action="" type=""path""> $ ADDIN_HOME ( MFG360 ) \ Outsource_Equipment_History.jsl
< icon="" type=""none"">
He jugado con esto bastante, y si entro en Vista-> AGREGAR-EN y solo tengo uno u otro habilitado como una vez, se utiliza la ruta y el script correctos, pero si los habilito a ambos ... JMP parece usar el $ ADDIN_HOME
Para el último habilité (o se carga a través del archivo addinRegistry.xml si ambos están habilitados al inicio de JMP ...)
Re: JMP Addin Script Caching?Oye klockk
Este también parece ser un buen candidato para abrir una pista de soporte técnico para la investigación (correo electrónico a support@sas.com ).
¿Qué versión de JMP es esta?
JMP no almacena en caché las secuencias de comandos, pero me pregunto acerca de los títulos y los ID de los elementos de menú que sus complementos agregan a los menús. Si agrega elementos a dos submenús diferentes que tienen la misma ID y leyenda, JMP podría estar ejecutando el script para el complemento DEV aunque haya seleccionado el elemento de menú para el complemento PROD. Hicimos un cambio en JMP 12 para tratar de resolver esta ambigüedad, así que me sorprende que lo vea en JMP 12, pero tal vez su caso sea ligeramente diferente. Si tiene una forma de capturar la pantalla de sus menús personalizados para que podamos ver cómo están organizados sus elementos, eso puede ayudarnos a encontrarle una solución alternativa y solucionar cualquier deficiencia adicional en nuestro código que esto arroje a la luz. O, si no es posible la captura de pantalla, solo háganos saber cuál es la jerarquía de los elementos de su menú y cuáles son las ID y los títulos de los elementos.
Gracias,
Eric
Re: JMP Addin Script Caching?Probando esto aún más, simplemente parece cargar y ejecutar el script desde el último complemento cargado en el inicio ...
Parece estar directamente relacionado con el orden en que se cargan los complementos, lo que se relaciona directamente con el orden addinRegistry.xml para complementos registrados.
Si el archivo de registro muestra:
Add-In cargado correctamente: MFG360
Add-In cargado correctamente: MFG360Dev
Luego, cualquiera de los complementos ejecutará el código desde el complemento DEV ....
Si cambio el orden en el archivo addinRegistry, entonces JMP ejecuta los scripts desde el PRO ADDIN_HOME a pesar de los cuales uso el menú addin / ...
También descubrí que puedo forzarte el conjunto correcto de scripts que se utilizarán al ir a Ver-> Complementos y deshabilitar uno o más complementos ... y las cosas funcionan bien ... pero no puedo tener ambos habilitados al mismo tiempo sin ningún problema ...