API para importar/exportar rutinas
Este es un artículo de la página de "Preguntas frecuentes" (FAQ) de InterSystems.
1. Exportar API
a. Usa $system.OBJ.Export() para especificar rutinas individuales para exportar. Por ejemplo:
do $system.OBJ.Export("TEST1.mac,TEST2.mac","c:\temp\routines.xml",,.errors)El formato que debes especificar es: NombreDeLaRutina.extension, y la extensión puede ser: mac, bas, int, inc, obj.
Los errores durante la exportación se almacenan en la variable "errors".
Echa un vistazo a la referencia de clase %SYSTEM.OBJ para más detalles sobre $system.OBJ.Export().
b. Usa $system.OBJ.Export() incluso al hacer una exportación genérica usando * (wildcards). Por ejemplo:
*Antes de la versión 2008.1, utiliza $system.OBJ.ExportPattern().
2. Importar API
a. Usa $system.OBJ.Load() para importar todas las rutinas contenidas en el fichero. Por ejemplo:
do $system.OBJ.Load("c:\temp\routines.xml",,.errors)b. Importa solo algunas de las rutinas contenidas en el fichero
Observa el ejemplo de abajo. Si quieres seleccionar e importar solo algunas de las rutinas incluidas en el fichero XML, pon a 1 el 5º argumento "listonly" en una primera ejecución, y carga el archivo XML con $system.OBJ.Load(), estableciendo el 4º argumento (argumento de salida, list en el ejemplo abajo). Esto creará una lista de elementos en la variable list. Después podremos recorrer esa lista y decidir que elementos (loaditem) queremos cargar, volviendo a ejecutar $system.OBJ.Load() e indicando el elemento a cargar en el 6º argumento. Lo puedes ver más claramente en este ejemplo:
Set file="c:\temp\routines.xml"
// First get the list of items contained in the XML
Do $system.OBJ.Load(file,,.errors,.list,1 /* listonly */)
Set item=$Order(list(""))
Kill loaditem
While item'="" {
If item["Sample" Set loaditem(item)="" { // Import only those containing Sample
Set item=$Order(list(item))
}
}
// Execute import process with created list
Do $system.OBJ.Load(file,,.errors,,,.loaditem)