Article
· Jan 13 3m de lecture

Comment récupérer par programme une liste de classes créées par l'utilisateur

InterSystems FAQ rubric

Les définitions de classe créées par les utilisateurs sont stockées dans des classes de définition de classe. Ils peuvent être utilisés pour obtenir une liste de définitions de classe à partir d'un programme.

Remarque : Les classes de définition de classe font référence à toutes les classes contenues dans le package %Dictionary.

Dans l'exemple de code ci-dessous, une liste de définitions de classe est obtenue à l'aide de la commande query Summary de la  classe %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)
    }
}
}

Voici un exemple d'exécution.

Lorsque vous exécutez la méthode de classe, il vous sera demandé de préciser un espace de noms, préciser le nom de l'espace de noms que vous souhaitez référencer.

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>

Article associé: Getting the list of routines programmatically

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer