Bonjour @Guillaume Rongier 

Alors j'ai deux namespaces mais j'ai 2 fichiers distincts ayant la même fonction:

Class TEST.maclasse Extends %RegisteredObject
{
ClassMethod testPython() As %Status [ Language = python ]

{

    print("Ok")

}
}

ET

Class SUPPLYCHAIN.maclasse Extends %RegisteredObject
{
ClassMethod testPython() As %Status [ Language = python ]

{

    print("Ok")

}
}

Ces fichiers étaient créés avant de lancer le docker pour lancer iris. Ce docker compile automatiquement les fichiers dans les bons namespaces (SUPPLYCHAIN est le dossier pour le namespace SUPPLY_CHAIN et TEST est le dossier pour le namespace TEST).

Par la suite j'appelle via un terminal IRIS dans les bons namespaces, les méthodes:

TEST>do ##class(TEST.maclasse).testPython()
Ok

ET

SUPPLY_CHAIN>do ##class(SUPPLYCHAIN.maclasse).testPython()
<OBJECT DISPATCH> *python object not found

Après avoir posté ce matin ma question j'ai recherché de mon côté et il s'avère que lorsqu'on crée une nouvelle classe dans SUPPLY_CHAIN avec le même code et que je l'importe moi même, je retrouve ceci:

SUPPLY_CHAIN>do ##class(SUPPLYCHAIN.test.maclasse).testPython()
Ok

Alors en effet, le fichier du côté SUPPLY_CHAIN a une fonction OnProcessInput en ObjectScript mais en faisant vraiment un copier/coller du fichier, l'appel à la fonction python marche parfaitement, mais sur le fichier d'origine j'ai toujours un python object not found, c'est là où je pense que c'est un bug

En espérant vous avoir aidé à mieux comprendre,

Cordialement

Alors je viens de comprendre le problème, cependant je le trouve illogique. Je m'explique :

Les classes ont été crées avec de l'ObjectScript par défaut, puis cloné depuis gitlab et compilé sur un docker-compose, le fichier n'inclus pas python, cependant, lorsque je crée un nouveau fichier avec un nom de classe différent mais pourtant avec le même code ET une fonction en python, ça marche.

Je pense qu'il s'agit d'un bug

Bonjour,

Oui je change de namespace avant et le nom du package juste avant n'est plus TEST mais SUPPLYCHAIN :

do ##class(SUPPLYCHAIN.maclasse).testPython()

Sur le namespace TEST je l'appelle comme ceci :

do ##class(TEST.maclasse).testPython()

Evidemment, les deux fichiers existent et sont bien compilés 

Bonjour @Lorenzo Scalese,

Le problème de la commande iris runw c'est que nous allons éxecuter une classe dans un namespace, cependant, nous voulons à partir d'un script (ou de cette classe si c'est possible) compiler plusieurs fichiers cls provenant de répertoires précis sur la machine (pas importés dans InterSystems), dans des namespaces différents (plus d'une dizaine).

Nous avons pas mal de difficultés sur la compréhension de l'éxecution d'un script, pouvez-vous nous fournir plus de détails concernant runw ou même un exemple afin qu'on puisse voir comment changer de namespace et compiler.

Merci beaucoup !

Cyril

PS : Pour le script il s'agit d'un script réalisé en suivant cette page de la documentation : https://docs.intersystems.com/irisforhealth20232/csp/docbook/DocBook.UI…