Preguntas frecuentes de InterSystems
Las definiciones de clases creadas por los usuarios se almacenan en clases de definición de clases. Estas se pueden utilizar para obtener una lista de definiciones de clases desde un programa.
Nota: Las clases de definición de clase se refieren a todas las clases contenidas en el paquete %Dictionary.
En el siguiente código de muestra, se obtiene una lista de definiciones de clases utilizando la consulta Resumen de la clase %Dictionary.ClassDefinitionQuery.
Class ISJ.Utils
{
ClassMethod ClassInfo()
{
#dim ex As %Exception.AbstractException
try {
set currentNS=$NAMESPACE
while (1) {
read "Please specify namespace: ",x
if x'="" quit
}
set $NAMESPACE=x
write !!
Set statement = ##class(%SQL.Statement).%New()
Do statement.%PrepareClassQuery("%Dictionary.ClassDefinitionQuery","Summary")
set rs = statement.%Execute()
while rs.%Next() {
set name=rs.%Get("Name")
if name["%" continue // Skip the class with % in the name
if $extract(name,1,3)="csp" continue // skip csp.*
if $extract(name,1,3)="csr" continue // skip csr.*
write name,!
}
set $NAMESPACE=currentNS
}
catch ex {
write "Error occured: ",ex.DisplayString(),!
set $NAMESPACE=$get(currentNS)
}
}
}
ObjectScriptObjectScript
A continuación podemos ver un ejemplo de su ejecución.
Cuando ejecute el método de clase, se le pedirá que especifique un NAMESPACE, así que especifique el nombre del NAMESPACE al que desea hacer referencia.
USER>do ##class(ISJ.Utils).ClassInfo()
Please specify namespace : USER
CSPX.Dashboard.BarChart
CSPX.Dashboard.Chart
CSPX.Dashboard.ChartSeries
CSPX.Dashboard.FuelGauge
<skip>
INFORMATION.SCHEMA.VIEWTABLEUSAGE
ISJ.Utils
Test.JSONTest
Test.Person
Test.REST
Test.VSCode.REST
USER>
ObjectScriptObjectScript
Artículo relacionado: Getting the list of routines programmatically