Preguntas frecuentes de InterSystems
Para rutinas (*.mac)
Se puede ocultar el código fuente exportando/importando solo el *.obj que se genera después de compilar el programa fuente.
El ejemplo de ejecución de comandos especifica EX1Sample.obj y EX2Sample.obj, que se generan al compilar EX1Sample.mac y EX2Sample.mac, como destinos de exportación y los exporta al segundo archivo de argumentos.
Después de pasarlo a otro namespace, se usa el archivo XML exportado para realizar la importación.
USER>do $system.OBJ.Export("EX1Sample.obj,EX2Sample.obj","D:\routine.xml")
Exporting to XML started on 10/23/2023 11:33:49
Exporting object code: EX1Sample.obj
Exporting object code: EX2Sample.obj
Export finished successfully.
USER>zn "USER2" //change namespace
USER2>do $system.OBJ.Load("D:\routine.xml")
Load started on 10/23/2023 11:34:26
Loading file D:\routine.xml as xml
Imported object code: EX1Sample
Imported object code: EX2Sample
Load finished successfully.
USER2>
ObjectScriptObjectScript
Para clases (*.cls)
Para las clases, después de exportar/importar *.cls en XML, ejecutad MakeClassDeployed() en el servidor.
¡Ojo! En versiones relativamente nuevas, después de ejecutar MakeClassDeployed(), el archivo fuente (*.cls) se convierte en modo de implementación - no se puede editar, solo se puede ver. Si queremos hacerlo invisible, hay que establecer la propiedad Hidden (oculta) de la clase después de ejecutar MakeClassDeployed() (estableced el atributo de propiedad Hidden=True).
Un ejemplo de ejecución de comando es el siguiente.
USER>do $system.OBJ.Export("WH.Color.cls,WH.Size.cls","D:\test.xml")
Exporting to XML started on 10/23/2023 11:39:24
Exporting class: WH.Color
Exporting class: WH.Size
Export finished successfully.
USER>zn "USER2"
USER2>do $system.OBJ.Load("D:\test.xml","ck")
Load started on 10/23/2023 11:39:48
Loading file D:\test.xml as xml
Imported class: WH.Color
Imported class: WH.Size
Compiling 2 classes
Compiling class WH.Size
Compiling class WH.Color
Compiling table WH.Size
Compiling routine WH.Color.1
Compiling routine WH.Size.1
Load finished successfully.
USER2>do $system.OBJ.MakeClassDeployed("WH.Size")
USER2>
ObjectScriptObjectScript
Para CSP (*.csp)
Para archivos CSP, copiad *.csp y pegadlo en la carpeta CSP de destino.
Después de compilar en el servidor, desactivad la compilación automática en la configuración de CSP, luego eliminad *.csp y ejecutad MakeClassDeployed().
Un ejemplo de ejecución es el siguiente.
1) Después de copiar el archivo CSP, pegarlo en el directorio CSP del servidor y compilarlo.
TEST>do $SYSTEM.CSP.LoadPageDir("/csp/test")
ObjectScriptObjectScript
2) Establecer NO en "Compilación automática", desde la configuración de ruta de la aplicación web
Versión 2013.1 o posterior, ir a [Administration Portal] > [System Management] > [Security] > [Applications] > [Web Applications] > Enlace a la aplicación
Versión 2010.1 a Version 2012.2, ir a [Management Portal] > [System Management] > [Security] > [Applications] > [Web Applications] > [Edit] nombre de la aplicación
Versión 2010.2 o anterior, ir a [System Management Portal] > [System] > [Security Management] > [CSP Application] > [Edit] nombre de la aplicación
3) Ejecutar MakeClassDeployed() - ejemplo para la copia de cspsample.csp
TEST>do $system.OBJ.MakeClassDeployed("csp.cspsample")
ObjectScriptObjectScript