¡Hola desarrolladores!
Solo quiero compartir una antigua pero muy relevante buena práctica en el cambio de namespaces que @Dmitry Maslennikov compartió conmigo.
Consideremos el método:
classmethod DoSomethingInSYS() as %Status
{
set sc=$$$OK
set ns=$namespace
zn "%SYS"
// try-catch in case there will be an error
try {
// do something, e.g. config change
}
catch {}
zn ns ; returning back to the namespace we came in the routine
return sc
}
Y con el nuevo $namespace el método puede ser reescrito como:
classmethod DoSomethingInSYS() as %Status
{
set sc=$$$OK
new $namespace
set $namespace="%SYS"
// do something
return sc
}
Así que... La diferencia está en que no tenemos que cambiar el namespace manualmente ya que vendrá establecido automáticamente al finalizar el método.
Y tampoco necesitamos hacer try-catch (al menos para este propósito)