Pythonからネームスペースを指定してグローバルを参照する方法。
こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。
現在、Embedded Pythonを用いて開発を行おうとしているのですが、
別のNMSPに存在するグローバルをiris.gref()で参照する方法がわかりませんでした。
> iris.gref("^[NMSP]GBL") <-----こうしても自身のNMSPのグローバルを参照してしまう。
諦めてznでネームスペースを切り替えてみようかな、とも思ったのですが、
python上でznをかける方法もよくわからず、対応方法に悩んでいます。
どなたか、上記の対応方法についてご存じな方はいらっしゃいませんでしょうか?
Product version: IRIS 2022.1
https://community.intersystems.com/post/how-change-namespace-embedded-py...
こちらを見たところ、zn自体はpython上で再現されておらず、
ObjectScriptを経由するしかないかもしれません。。。
@Yuji Ohata さん、
リンクしていただいた回答が、現状対応できる方法だと思います。
PythonでObjectScriptと同じレベルのことができるように開発を続けているようですので、今後の拡張に期待しつつ、現在はこの方法でお願いできたらと思います。
ご回答いただきありがとうございます。
承知いたしました。
2023.1では、Embedded Pythonでネームスペースを変更する関数が実装されているようです。
iris.system.Process.SetNamespace(ネームスペース) です。変更に成功した場合、変更後のネームスペース名の文字列を返すようです。(変更前を返してくれた方が良い気もしますが、、)
>>> iris.system.Process.SetNamespace("WORK")
'WORK'
現在いるネームスペースについては以下で表示可能。
iris.system.SYS.NameSpace()
https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic....