Since the launch of IRIS, ENSDEMO namespace is gone.

Now to have demo or anything else you have to go with ZPM : https://community.intersystems.com/post/install-zpm-one-line (the package manager).

Check the list here :

https://openexchange.intersystems.com/

If you still want EnsDemo check those githubs :

This demo is now 100% python :

https://github.com/grongierisc/iris-python-interoperability-template/tre...

Look at this beauty :

FileOperation.py

import grongier.pex
import datetime
import os
import iris

class FileOperation(grongier.pex.BusinessOperation):

    def OnInit(self):
        if hasattr(self,'Path'):
            os.chdir(self.Path)

    def OnMessage(self, pRequest):

        ts = title = author = url = text = ""

        if (pRequest.Post is not None):
            title = pRequest.Post.Title
            author = pRequest.Post.Author
            url = pRequest.Post.Url
            text = pRequest.Post.Selftext
            ts = datetime.datetime.fromtimestamp(pRequest.Post.CreatedUTC).__str__()

        line = ts+" : "+title+" : "+author+" : "+url
        filename = pRequest.Found+".txt" 

        self.PutLine(filename, line)
        self.PutLine(filename, "")
        self.PutLine(filename, text)
        self.PutLine(filename, " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *")

        return iris.cls('Ens.StringResponse')._New("hello")


    @staticmethod
    def PutLine(filename,string):
        try:
            with open(filename, "a",encoding="utf-8") as outfile:
                outfile.write(string)
        except Exception as e:
            raise e

FileOperationWithIrisAdapter (we can use native iris adapter :)):

import iris
import grongier.pex

class FileOperation(grongier.pex.BusinessOperation):

    def getAdapterType():
        """
        Name of the registred adaptor
        """
        return "EnsLib.File.OutboundAdapter"

    def OnMessage(self, pRequest):

        ts = title = author = url = text = ""

        if (pRequest.Post != ""):
            title = pRequest.Post.Title
            author = pRequest.Post.Author
            url = pRequest.Post.Url
            text = pRequest.Post.Selftext
            ts = iris.cls("%Library.PosixTime").LogicalToOdbc(iris.cls("%Library.PosixTime").UnixTimeToLogical(pRequest.Post.CreatedUTC))

        line = ts+" : "+title+" : "+author+" : "+url
        filename = pRequest.Found+".txt" 

        self.Adapter.PutLine(filename, line)
        self.Adapter.PutLine(filename, "")
        self.Adapter.PutLine(filename, text)
        self.Adapter.PutLine(filename, " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *")

        return 1

With this image you will see the difference between Kong Enterprise and Kong Community :

alt

In short Kong EE (Enterprise Edition) bring :

  • A web portal to manage your services/routes
  • A dev portal to publish and test you API for developers
  • Some additional plugins like LDAP support, proxy caching, advanced rate limiting
  • Kong EE inherits from all Kong Community features

If you need training on Kong EE you can follow this guide :

https://community.intersystems.com/post/iam-intersystems-api-manager-zer...

If you want to discover IRIS for Health with some samples, the best way is to install ZPM (community package manager).
More info here : https://community.intersystems.com/post/install-zpm-one-line

Then, you have access of almost all application in OpenExchange.

Let's have an example with csvgen-ui :
https://openexchange.intersystems.com/package/csvgen-ui

zpm "install csvgen-ui"

In OpenExchange you will find may example about rest API, web app, and so.

For now, it's not possible in pure python, because the select namespace is specified by the environment variable IRISNAMESPACE, and environment variable can't be change in the parent process, I have tried by reloading iris module with no success.

To achieve that, for now, as Robert says, you have to create an helper method in objectscript ... :(

Class Embedded.Utils
{

ClassMethod GetNameSpace() As %Status
{

    Return $namespace
}

ClassMethod SetNameSpace(pNameSpace) As %Status
{
    zn pNameSpace
    Return $namespace
}

}

Python :

import iris

print(iris.cls("Embedded.Utils").GetNameSpace())
try:
    print(iris.cls("Security.Users").Exists("SuperUser"))
except RuntimeError:
    print("Wrong NameSpace")

print(iris.cls("Embedded.Utils").SetNameSpace("%SYS"))
try:
    print(iris.cls("Security.Users").Exists("SuperUser"))
except RuntimeError:
    print("Wrong NameSpace")