Yes, I see it. race car)
I thought we added it ) ![]()
- Log in to post comments
Yes, I see it. race car)
I thought we added it ) ![]()
you were 13 sec faster, @Peter Steiwer ;)
Hi Kevin!
The simplest solution is to create a Dimension which filters data upon Users or Roles and then implement %OnGetFilterSpec callback in a cube class where you can set up a filter additional filter for the queries to the cube on this user session upon $USERNAME or $ROLE variables of the logged user.
Hi Fred! Have you seen this introduction?
Community version of IRIS and IRIS for Health are available on download.intersystems.com
Community docker versions of IRIS and IRIS for health are available on InterSystems store at dockerhub.com with the following tags:
docker pull store/intersystems/iris-community:2019.4.0.379.0
docker pull store/intersystems/irishealth-community:2019.4.0.379.0
Enterprise versions of IRIS and Caché are available for download at wrc.intersystems.com .
Also InterSystems IRIS Enterprise and Community Edition are avaialble via InterSystems cloud offerings on AWS, GCP and Azure.
HTH
I'll participate in the meetup with the session:
📌 11:45 – 12:15
Resources and Services for InterSystems Developers. ObjectScript Package Manager Introduction
Takeaway: Attendees will learn about Developers Community, Open Exchange and other Resources and Services available for developers on InterSystems data platforms and will know about InterSystems Package Manager and how it can help in InterSystems IRIS solutions development
Come join InterSystems Developers Meetup in Israel!
Hi @Flávio Lúcio Naves Júnior !
Have you seen the IRIS PHP module and Caché PHP modules?
I don't see Classmethod API call there but there is 'xecute' command, so you can call the procedure.
Also check the related article by @Sergey Kamenev
And this is open source, so you can add it if you want.
Updated the Installer.cls file - now you can set up the namespace and path in variables "Namespace" and "app" respectfully at the top of Installer.cls.
<Default Name="Namespace" Value="IRISAPP"/>
<Default Name="app" Value="irisapp" />
This is convenient if you need to install the app to the namespace with your name.
Notice, that if you want instantly edit and compile the code of your project with VSCode don't forget to change the Namespace parameter in settings.json too.
Objectscript Package manager has the updated version 1.1.2 as well. So Analyzethis can be installed as:
USER:zpm>install analyzethis
Hi, @Asaf Sinay , @Peter Steiwer!
Yes, tried this on mac recently with 2019.3 on IRIS docker CE. This bug is solved - great!
But on the final step, it says "It's working"... - and it's working for a long time. Never saw the result, yet)

Good point, Rubens! Now we'll see the real case of using Import directive )
But I see this as a good problem to have - to the moment the number of libraries available on ZPM is very few.
And I updated the post and added the part on packages names - thanks!
Hi Rubens! Thanks for the valuable input.
Yes, freedom is a great thing as soon as nobody harms you upon freedom concepts. What I mean everybody should enjoy the freedom and that's why we perhaps need some community rules to avoid chaos.
E.g. what if some developer will introduce another module Frontier then Rubens Silva's Frontier? And if I want these modules to run both in one namespace?
It's not rocket science, people already have invented naming conventions that's what I'm going to talk and agree about.
@Dmitry Maslennikov, you say VSCode has ObjectScript beautifier? Could you please demo the feature?
Nobody remembered the change of a.INC and not the reason for the change.
Git remembers everything ;)
Sure!
just add the volume mapping in docker-compose.yml file which maps folder /csp in sources into /csp directory in docker.
Hi @Warlin Garcia !
I pushed the commit into the repo which fixes Namespace and README issue, thanks!
Hi @Henrique.GonçalvesDias!
JFYI we have a new API in 2019.4 for IRIS monitoring. Is it possible to introduce its data into your module?
- The notes/documentation say that code will be loaded into USER namespace, however it's actually being loaded into IRISAPP (as configured in docckerfiles).
Because I made an update to the code recently) And not to the documentation) PR is welcome, or I'll change it by myself soon. Or add an issue!
- The jason.config is pointing to USER namespace so any new files and changes to existing will be actually loaded into USER instead of IRISAPP
Yes, it's a bug from previous version. Need to be fixed, thanks!
- The webapp (irisweb) is missing a config for the directory where to store files. I fixed this by modifying the app in management portal. Need to address the installation file/dockerfile
Cool!
Do you want to make a PR?
- Haven't been able to make CSPs flow to the container the same as classes. I'm sure I'm missing something but haven't figured out what yet. Any tips? Maybe I'm placing files in the wrong location? Right now I created a csp/irisweb folder under src folder.
You need to COPY this files from /csp in sources to /usr/irissys/mgr/csp/yourwebapp in Dockerfile
Hi @Conor Walsh! Thanks for sharing Container tools! Cool stuff!
There is also Learning services videos site - videos.intersystems.com.
But if you are looking for the videos strictly for developers - it’s only YouTube now. Do you prefer another video hosting? Vimeo?
Nigel, just want to be sure that you read CD as Containers Deployment - so it will be available on every delivery site (WRC, download, AWS, GCP, Azure, Dockerhub) but in a container form.
Hi Arto!
Webterminal works via websocket, AFAIK. And you always have the source code to check.
Pinging @Nikita Savchenko for more details
Hi Lexi!
Thanks for sharing!
This is really cool, I like it!
Here is a screenshot:

The next step is a new UI for class reference! ;)
Hi Vitaly!
Thanks for the idea!
Please submit a task and vote for it.
If we have a lot of votes will consider to add it.
I have one problem with it - if we introduce Russian Community, will you stop answering questions in English? )
Hi Conor!
Thanks for really wise suggestions. Agreed with everything. Two cents/comments:
1. I think we never want to code a lot of ObjectScript inside Dockerfile. Only a few lines to make some necessary configurations and the intention is to make the code more readable paying with some coding conditions (like sc hard-coded sc for error handling).
2. I am very supportive about putting all the possible setup activity into Installer.cls. But the issue is that not all the actively used setup tweaks are supported by %Installer format, e.g. RESTFul Web app. If you suggest to use <Invoke> - it's better to call method directly. So, here I'm putting some wishes for %Installer format approvements.
Always open for improvements.
Well, here are some comments:
do ##class(%SYSTEM.Process).CurrentDirectory("$PWD")This is to make WORKDIR /opt/irisapp current for IRIS.
$@
Here we run the arbitrary ObjectScript in Dockerfile
if '\$Get(sc) do ##class(%SYSTEM.Process).Process.Terminate(, 1)
Here we check the status of the sc variable changed with status from ObjectScript in Dockerfile if it has an error and terminate IRIS in this case and fail the build.
do ##class(SYS.Container).QuiesceForBundling()
do ##class(SYS.Container).SetMonitorStateOK("irisowner")Two methods to prepare IRIS operate in a container mode properly. I'm pinging @Luca Ravazzolo to provide more details on it.
Do ##class(Security.Users).UnExpireUserPasswords("*")This removes the password expiration because it's very annoying to change the password on every build. This line could be used for DEVELOPMENT MODE only. Please remove the line if you build the image for PRODUCTION.
Noticed some good stuff in @Dmitry Maslennikov's iris-template repo and updated mine foundation template for development with IRIS Community Edition in ObjectScript.
It's much easier now to run ObjectScript instructions in Dockerfile. Check the basic Dockerfie:
ARG IMAGE=intersystems/iris:2019.1.0S.111.0
ARG IMAGE=store/intersystems/irishealth:2019.3.0.308.0-community
ARG IMAGE=store/intersystems/iris-community:2019.3.0.309.0
FROM $IMAGE
USER root
WORKDIR /opt/irisapp
RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisapp
USER irisowner
COPY Installer.cls .
COPY src src
COPY irissession.sh /
SHELL ["/irissession.sh"]
RUN \
do $SYSTEM.OBJ.Load("Installer.cls", "ck") \
set sc = ##class(App.Installer).setup()
# bringing the standard shell back
SHELL ["/bin/bash", "-c"]
CMD [ "-l", "/usr/irissys/mgr/messages.log" ]And another which installs ZPM and Webterminal:
ARG IMAGE=intersystems/iris:2019.1.0S.111.0
ARG IMAGE=store/intersystems/iris-community:2019.3.0.309.0
FROM $IMAGE
USER root
WORKDIR /opt/irisapp
RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisapp
USER irisowner
RUN mkdir -p /tmp/deps \
&& cd /tmp/deps \
&& wget -q https://pm.community.intersystems.com/packages/zpm/latest/installer -O zpm.xml
COPY Installer.cls .
COPY src src
COPY irissession.sh /
# running IRIS and open IRIS termninal in USER namespace
SHELL ["/irissession.sh"]
# below is objectscript executed in terminal
# each row is what you type in terminal and Enter
RUN \
do $SYSTEM.OBJ.Load("Installer.cls", "ck") \
set sc = ##class(App.Installer).setup() \
Do $system.OBJ.Load("/tmp/deps/zpm.xml", "ck") \
zn "IRISAPP" \
zpm "install webterminal"
# bringing the standard shell back
SHELL ["/bin/bash", "-c"]
CMD [ "-l", "/usr/irissys/mgr/messages.log" ]