Artigo
· Jun. 1, 2023 2min de leitura

API para importar/exportar rotinas

Esse é um artigo da página de "Perguntas frequentes" (FAQ) da InterSystems.

 1. Exportar API

a. Use $system.OBJ.Export() para especificar rotinas individuais para exportar. Por exemplo:

do $system.OBJ.Export("TEST1.mac,TEST2.mac","c:\temp\routines.xml",,.errors)

O formato que você deve especificar é: NomeDaRotina.extensão, e a extensão pode ser: mac, bas, int, inc, obj.

Os erros durante a exportação se armazenam na variável "errors".

Veja a referência da classe %SYSTEM.OBJ para mais detalhes sobre $system.OBJ.Export().

b. Use $system.OBJ.Export() ao fazer uma exportação genérica usando * (wildcards). Por exemplo:

do $system.OBJ.Export("*.mac",c:\temp\allmacroutines.xml")

*Antes da versão 2008.1, utilize $system.OBJ.ExportPattern().

2. Importar API

a. Use $system.OBJ.Load() para importar todas as rotinas contidas no arquivo. Por exemplo:

do $system.OBJ.Load("c:\temp\routines.xml",,.errors)

b. Importe só algumas das rotinas contidas no arquivo

Observe o exemplo abaixo. Se quiser selecionar e importar somente algumas das rotinas inclusas no arquivo XML, coloque 1 no 5º argumento "listonly" numa primeira execução e carregue o arquivo XML com $system.OBJ.Load(), estabelecendo o 4º argumento (argumento de saída, list no exemplo abaixo). Isto criará uma lista de elementos na variável list. Depois poderemos recorrer essa lista e decidir que elementos (loaditem) queremos carregar, votando a executar $system.OBJ.Load() e indicando o elemento a carregar no 6º argumento. Você pode ver mais claramente neste exemplo:

 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)
Discussão (0)1
Entre ou crie uma conta para continuar