Clear filter
Question
Harshitha · Jul 1
Hi everyone,
I'm working with JavaScript in InterSystems IRIS, specifically in CSP pages. One issue I'm running into during development is that the browser keeps loading the cached version of my JavaScript files, even after I’ve made changes or recompiled the code.I would have to clear my cache files or browser history for it to reload and work.
Is there a recommended way or best practice in IRIS to automatically clear or bypass the browser cache for JavaScript? Ideally, I’m looking for a way to ensure that the latest version of the script is always loaded without manually clearing the cache every time.
Any suggestions or tips would be greatly appreciated!
Thanks,Harshitha Balakrishna Are you supplying a cache-control header in your response? No I am not.
Question
Drew Holloway · Mar 12, 2020
Is there a way to query the database structure? In SSMS there are queries for finding tables with a column with a certain name (using LIKE). And there is the redgate tool SQL Search. But I'm not sure how to go about looking for columns that have say a value of 'PATID' and returning all tables that match. Does anyone know? Something like this may work:
SELECT parent FROM %Dictionary.CompiledProperty where name like 'Name' and NOT %ID %Startswith '%'
This will give you all tables that aren't % classes that have a "Name" property and if you prefer something more database-independent, you can use the standard INFORMATION_SCHEMA package:
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'PATID%' It says I'm not priveleged for this operation. But thanks for letting me know. Thank you! This worked well! indeed, system schemas (whose name starts with a % sign) require certain privileges (that you quickly get used to once you have them :-) ). That's why I suggested querying the INFORMATION_SCHEMA
Announcement
Raju K · Nov 9, 2020
We have an immediate requirement for an experienced Intersystems Ensemble/Health Connect consultant to join our team with a good grounding in OO Programming, Healthcare Integration and at least 2 years experience with InterSystems Ensemble/Healthshare Health Connect
Question
Yuri Marx · May 13, 2022
Do you have cases using datadog to monitor intersystems products? We have used Datadog to produce some customer facing dashboards that provide an quick view of general server/application health as well as current license usage, number of Cache process, etc. Additional internal only dashboards allow customer support staff that don't have access to the mgmt portal to identify problematic queries, users with high latency, and other application specific issues which they can then research further if necessary. This is done via a %CSP.Page class that is is configured as the URL in the Datadog configuration. Documentation for that Datadog configuration is here.
Question
vignesh baskaran · Mar 1, 2022
Hi,
How to login Intersystems IRIS for Health SMP using SSO with OKTA auth. Please see my repository and code sample for this at: https://openexchange.intersystems.com/package/FHIROktaIntegration
Also check out videos I made at :
https://www.intersystems.com/resources/securing-fhir-applications-with-oauth
https://www.youtube.com/watch?v=VSnNbfNffT4
Question
Luis-Ángel Pérez-Ramos · Jun 21, 2019
Hi! I am working in a java project (Spring Boot+ Maven + Hibernate) using jpa/hibernate to manage the persistance with the IRIS database from the Docker image (store/intersystems/iris:2019.2.0.107.0-community) and I've found an issue using the IRIS instance, when I define tables with relationships OneToMany, ManyToOne or ManyToMany and I try to fetch all the rows of the tables using the default method findAll (JpaRepository implements that method to get all the rows by default) the query automatically exceeds the limit of licenses availables. I've tested the same query using a local IRIS instance with a regular license (InterSystems IRIS 2018.1 Enterprise - Concurrent Users for x86-64 (Microsoft Windows):250, Non-Production Instance) and works perfectly.Could be possible increase the number of licenses availables for the IRIS image in Docker? Thank you in advance! I think the limit is 5 concurrent users. Anyone can confirm? Hi Dmitry, It's true, it's not a problem of licenses, it's a problem of connections:Before the select: only 1 connection used.When the project execute the findAll query: Connections used = 5It seems like a problem with the connection pool manager, it reserves connections for each query and when the connections achieve the maximum the execution is blockade. Could you share your Java code? Sure! You have it available here:https://github.com/es-comunidad-intersystems/webinar-multimodelo/tree/master/jdbc-jpa-restIt's a MAVEN project so you only need MAVEN installed in your PC and modify the actions.properties to define the parameters to access to the database. The default value for connection pool size on boot is usually 10. You may want to set this value to 1 or 2 for testing purposes (if using the IRIS community version). Hi Warlin! thank you for your answer, I tried modifying the connection pool size to 1, 2 and 3 and the problem continued. Which value did you modify? The pool size takes couple values into account.Which connection pooling are you using? If using default boot one it's Hikari and the value to change should be maximumPoolSize I've modified spring.datasource.hikari.maximumPoolSize values (with differents values 1, 2, 3 and 4) and when the application execute a findAll or a query without the clause WHERE the execution is blockade.In theory there are 2 free connections but the error returned is:org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection so, my application.propertiesin this case, I have only 4 connections on the server, without any issues with licenses
spring.datasource.driverClassName = com.intersystems.jdbc.IRISDriver
spring.datasource.url = jdbc:IRIS://127.0.0.1:9091/USER
spring.datasource.username = _SYSTEM
spring.datasource.password = 1234
spring.datasource.testOnBorrow = true
spring.datasource.testWhileIdle = true
spring.datasource.timeBetweenEvictionRunsMillis = 60000
spring.datasource.minEvictableIdleTimeMillis = 30000
spring.datasource.validationQuery = SELECT 1
spring.datasource.max-wait = 8000
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.InterSystemsIRISDialect
spring.jpa.hibernate.ddl-auto = create
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false = false
spring.datasource.hikari.maximumPoolSize = 4
Yes, it is, but in this case, it exceeded connections limit for one license unit and it is even just only 4 in comparing with 25 for ordinary versions.And I think this message in the log should be changed to be more clear. Another issue, here
USER> Write $SYSTEM.License.MaxConnections()
25
25 connections for ordinary version, but Community Edition, has only 4 connections and fails to start more.
And another problem is that reaching connections limit for just one user, changes state of the instance as with warn
root@d5eaa844235c:/# iris list
Configuration 'IRIS' (default)
directory: /usr/irissys
versionid: 2019.2.0.107.0com
datadir: /dur/config
conf file: iris.cpf (SuperServer port = 51773, WebServer = 52773)
status: running, since Tue Jun 25 13:00:11 2019
state: warn
product: InterSystems IRIS
And this state used for HEALTHCHECK of the container, so, this container became as Unhealthy, which means in production such container should be killed, even it is actually in good condition.
$ docker-compose ps
Name Command State
---------------------------------------------------------------
jdbc-jpa-rest_iris_1 /iris-main Up (unhealthy)
I don't see any realation between license capacity and how you describe you use it. Is it possible to get some reproducible excerpt which would prove what you said?
Article
Robbie Luman · Feb 28, 2020
Our company is in the process of converting our software for use in Intersystems IRIS and one of the major sections of the software makes use of a custom statically-linked C library using the $ZF("function-name") functionality. During this, I found out that the process for setting up the C library to be used within the database platform has changed significantly between Cache and IRIS.
If you have used or still use the C Callout Gateway with Cache, then you will know that in order for Cache to be made aware of any functions provided in a custom C library to be used with $ZF("function-name"), the library must be linked directly into the Cache kernel binary (see Cache 2012.1 documentation for this process: https://cedocs.intersystems.com/ens20121/csp/docbook/DocBook.UI.Page.cls?KEY=GCIO_callout#GCIO_callout_extapps). If any changes had to be made to the custom C library, this would mean having to re-link the changes into the Cache binary and bounce the Cache instance, which meant downtime for our applications.
Since this documentation was removed from the documentation from Cache 2012.2 on, it does not appear in the IRIS documentation at the moment (though I have been told that this new process may eventually be added back into IRIS documentation). So, here I will walk through how to implement a custom C function using $ZF("function-name"). This is a separate process than using the $ZF(-3,"function-name") which uses dynamically-linked libraries but, as it turns out, the $ZF("function-name") variety is pretty similar to it now compared to Cache.
The example below will depict a custom library called "simplecallout" to demonstrate how this process is carried out within IRIS. This example was performed in a Linux environment.
Note: Thank you to Intersystems Support for the assistance in identifying the correct procedure to enable this functionality in IRIS.
1. Create and save the source program "simplecallout.c". Example source looks like this:
//Include the IRIS callout header file
#define ZF_DLL
#include "iris-cdzf.h"
//Public function to add two integers
int AddTwoIntegers(int a, int b, int*outsum) {
*outsum = a+b; /* set value to be returned by the $ZF function call */
return 0; /* set the exit status code */
}
//IRIS directives to map the AddTwoIntegers function into a $ZF function
ZFBEGIN
ZFENTRY("AddInt","iiP",AddTwoIntegers)
ZFEND
2. Compile the source to create the object (.o) file, including the include/ directory from the instance install directory (where the iris-cdzf.h file is located):
# gcc -c -fPIC simplecallout.c -I /intersystems/IRIR/dev/iris-callin/include/ -o simplecallout.o
3. Generate a shared object (.so) file from the object file:
# gcc simplecallout.o -shared -o simplecallout.so
4. Copy and rename the shared object file into the <instance_install_dir>/bin directory as "iriszf.so"
# cp simplecallout.so /intersystems/IRIS/bin/iriszf.so
5. From the IRIS programmer prompt, the function can now be used:
USER>write $zf("AddInt",1,4)
5
If changes need to be made to the library file, a new version of the shared object file is created and put in place of the existing iriszf.so file in the bin/ directory. These changes will be immediately available within IRIS without the need to restart the IRIS instance.
This new process also means that this linking process no longer has to be done each time a new instance is installed, and can simply be copied into the instance installation without the need for further action.
As this is my first post on the Developer Community, I hope that folks out there find this as useful and informative as I did in the discovery process of this new procedure.
Question
Ben Spead · Dec 6, 2022
We have a UNIX VM with an InterSystems IRIS instance which we cloned for testing purposes, and we have found that $System (which is used for self-identification in email notifications) is still showing the hostname of the original VM, rather than the hostname of the cloned VM. This is coming from $System.INetInfo.LocalHostHame().
Does anyone know what you need to change on a UNIX clone in order for it to display the appropriate new host name in $System? As we looked into things further on our side, it appears as though the UNIX 'hostname'. We were able to resolve the issue in UNIX by doing the following to change the hostname to 'mynewhost':
log in as roothostname mynewhostecho mynewhost > /etc/hostname
The 2nd line will change the hostname in the current processes, and the 3rd will make sure that the change will persist during a reboot.
Hope this is helpful to someone else.
Announcement
Anastasia Dyubaylo · Mar 11, 2020
Hey Developers,
New "Coding Talk" video was specially recorded by @Evgeny.Shvarov for the IRIS Programming Contest:
⏯ How to Create and Submit an Application for InterSystems IRIS Online Programming Contest 2020
In this video, you will know how to create your InterSystems IRIS ObjectScript application which runs with Docker. You will see how to submit it to Open Exchange and then how to participate with the application in InterSystems IRIS Online Programming Contest.
Check out the related InterSystems ObjectScript GitHub template project.
Enjoy watching the video!
🔥 Join the Online Programming Contest, show your best ObjectScript skills on InterSystems IRIS and earn some $ and glory! 🔥
Stay tuned for updates in this post. Hello,
For the contest we use Iris Community Edition. Does it support Ensemble? I got compile error because Ens.BusinessOperation base class did not exist.
Thanks,
Oliver Any IRIS edition includes formerly known as Ensemble feature, which is now is Interoperability (and one of the letters in IRIS).
You may get this error if you work in the namespace where Ensemble was activated. By default for USER was not activated.
When you create a new namespace Ensemble checkbox checked by default and, but you can uncheck it.
to enable namespace manually, do this command
do ##class(%EnsembleMgr).EnableNamespace("YOUR-NAMESPACE") Hi Oliver!
In addition what @Dmitry.Maslennikov said you can alter this in %Installer.cls.
Just turn "no" -to "1" in this line
<Namespace Name="${Namespace}" Code="${Namespace}" Data="${Namespace}" Create="yes" Ensemble="1"> Evgeny, it still does not work. I had tried to use "yes" instead of "no" for "Ensemble" flag. Now I also tried "1". It still gives me error that superclasses do not exist. Can you please look at my terminal output? I show Installer.cls at the bottom below:
[node1] (local) root@192.168.0.23 ~$ git clone https://github.com/oliverwilms/iriscontest2020Cloning into 'iriscontest2020'...remote: Enumerating objects: 64, done.remote: Counting objects: 100% (64/64), done.remote: Compressing objects: 100% (56/56), done.remote: Total 64 (delta 21), reused 19 (delta 4), pack-reused 0Unpacking objects: 100% (64/64), done.[node1] (local) root@192.168.0.23 ~$ cd iriscontest2020/[node1] (local) root@192.168.0.23 ~/iriscontest2020$ docker-compose buildBuilding irisStep 1/16 : ARG IMAGE=store/intersystems/irishealth:2019.3.0.308.0-communityStep 2/16 : ARG IMAGE=store/intersystems/iris-community:2019.3.0.309.0Step 3/16 : ARG IMAGE=store/intersystems/iris-community:2019.4.0.379.0Step 4/16 : ARG IMAGE=store/intersystems/iris-community:2020.1.0.199.0Step 5/16 : ARG IMAGE=intersystemsdc/iris-community:2019.4.0.383.0-zpmStep 6/16 : FROM $IMAGE2019.4.0.383.0-zpm: Pulling from intersystemsdc/iris-community898c46f3b1a1: Pull complete63366dfa0a50: Pull complete041d4cd74a92: Pull complete6e1bee0f8701: Pull complete973e47831f38: Pull completeb0c3b996c3e3: Pull completeb48eef952cda: Pull complete8254746f78e2: Pull completeec1f0f74baf0: Pull completefdc6015ec77d: Pull completeb72c9a7f8270: Pull completec108d032e6d0: Pull completecaf30f8515db: Pull complete02b9549ccbc9: Pull completeDigest: sha256:fc52a2359da312a5c39010a24d15e84a09ed6f3f2828e54021ebed54a3cb4c1aStatus: Downloaded newer image for intersystemsdc/iris-community:2019.4.0.383.0-zpm ---> 2f9eb08f28e3Step 7/16 : USER root ---> Running in 78efd07fbcb0Removing intermediate container 78efd07fbcb0 ---> c8f8dddbd96eStep 8/16 : WORKDIR /opt/irisapp ---> Running in a436b17bdd9cRemoving intermediate container a436b17bdd9c ---> da8cdcae02a1Step 9/16 : RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisapp ---> Running in 1698d44c50ebRemoving intermediate container 1698d44c50eb ---> c9c75c4960cdStep 10/16 : USER irisowner ---> Running in dd49a263a773Removing intermediate container dd49a263a773 ---> abef13ffc4deStep 11/16 : COPY Installer.cls . ---> b01d3b536e89Step 12/16 : COPY src src ---> 6ed1aa33393eStep 13/16 : COPY irissession.sh / ---> 2b8436f61475Step 14/16 : SHELL ["/irissession.sh"] ---> Running in 9eca533f3ef5Removing intermediate container 9eca533f3ef5 ---> 63ee158e5412Step 15/16 : RUN do $SYSTEM.OBJ.Load("Installer.cls", "ck") set sc = ##class(App.Installer).setup() ---> Running in afd2046fb280This copy of InterSystems IRIS has been licensed for use exclusively by:InterSystems IRIS CommunityCopyright (c) 1986-2019 by InterSystems CorporationAny other use is a violation of your license agreementStarting IRIS
Node: afd2046fb280, Instance: IRIS
%SYS>
%SYS>
Load started on 03/24/2020 02:21:26Loading file Installer.cls as udlCompiling class App.InstallerCompiling routine App.Installer.1Load finished successfully.2020-03-24 02:21:26 0 App.Installer: Installation starting at 2020-03-24 02:21:26, LogLevel=32020-03-24 02:21:26 3 Evaluate: #{$system.Process.CurrentDirectory()}src -> /opt/irisapp/src2020-03-24 02:21:26 3 SetVariable: SourceDir=/opt/irisapp/src2020-03-24 02:21:26 3 SetVariable: Namespace=IRISAPP2020-03-24 02:21:26 3 SetVariable: app=irisapp2020-03-24 02:21:26 3 Evaluate: ${Namespace} -> IRISAPP2020-03-24 02:21:26 3 Evaluate: ${Namespace} -> IRISAPP2020-03-24 02:21:26 3 Evaluate: ${Namespace} -> IRISAPP2020-03-24 02:21:26 3 Evaluate: ${Namespace} -> IRISAPP2020-03-24 02:21:26 3 Evaluate: /opt/${app}/data -> /opt/irisapp/data2020-03-24 02:21:26 3 Evaluate: %DB_${Namespace} -> %DB_IRISAPP2020-03-24 02:21:26 1 CreateDatabase: Creating database IRISAPP in /opt/irisapp/data/ with resource %DB_IRISAPP2020-03-24 02:21:26 2 CreateDatabase: Overwriting /opt/irisapp/data/IRIS.DAT2020-03-24 02:21:26 2 CreateDatabase: Adding database IRISAPP2020-03-24 02:21:26 2 CreateDatabase: Creating and assigning resource '%DB_IRISAPP' to IRISAPP2020-03-24 02:21:26 1 CreateNamespace: Creating namespace IRISAPP using IRISAPP/IRISAPP2020-03-24 02:21:26 2 CreateNamespace: Adding namespace IRISAPP2020-03-24 02:21:26 1 ActivateConfiguration: Activating Configuration2020-03-24 02:21:26 3 Evaluate: ${SourceDir} -> /opt/irisapp/src2020-03-24 02:21:26 1 Import: Loading /opt/irisapp/src (isdir=1) into IRISAPP, recurse=1
Load of directory started on 03/24/2020 02:21:26
Loading file /opt/irisapp/src/DMLSS/FilePassthroughService.cls as udlLoading file /opt/irisapp/src/DMLSS/EmailPassthroughOperation.cls as udlLoading file /opt/irisapp/src/DMLSS/Production.cls as udlLoading file /opt/irisapp/src/PackageSample/ObjectScript.cls as udlLoading file /opt/irisapp/src/DMLSS/Util.cls as udlLoading file /opt/irisapp/src/PackageSample/PersistentClass.cls as udl
Compilation started on 03/24/2020 02:21:26 with qualifiers 'ck'ERROR #5373: Class 'Ens.BusinessOperation', used by 'DMLSS.EmailPassthroughOperation:superclass', does not existSkip class DMLSS.EmailPassthroughOperationERROR #5373: Class 'Ens.BusinessService', used by 'DMLSS.FilePassthroughService:superclass', does not existSkip class DMLSS.FilePassthroughServiceERROR #5373: Class 'Ens.Production', used by 'DMLSS.Production:superclass', does not existSkip class DMLSS.ProductionCompiling 3 classes, using 3 worker jobsCompiling class DMLSS.UtilCompiling class PackageSample.ObjectScriptCompiling class PackageSample.PersistentClassCompiling table PackageSample.PersistentClassCompiling routine PackageSample.ObjectScript.1Compiling routine DMLSS.Util.1Compiling routine PackageSample.PersistentClass.1Detected 3 errors during compilation in 0.112s.
ERROR #5373: Class 'Ens.BusinessOperation', used by 'DMLSS.EmailPassthroughOperation:superclass', does not existDetected 3 errors during load.2020-03-24 02:21:26 0 App.Installer: ERROR #5373: Class 'Ens.BusinessOperation', used by 'DMLSS.EmailPassthroughOperation:superclass', does not exist2020-03-24 02:21:26 0 App.Installer: ERROR #ConfigFailed: Unknown status code: <Ins>ConfigFailed ) > ERROR #5373: Class 'Ens.BusinessOperation', used by 'DMLSS.EmailPassthroughOperation:superclass', does not exist2020-03-24 02:21:26 0 App.Installer: Installation failed at 2020-03-24 02:21:262020-03-24 02:21:26 0 %Installer: Elapsed time .423668s
%SYS>ERROR: Service 'iris' failed to build: The command '/irissession.sh do $SYSTEM.OBJ.Load("Installer.cls", "ck") set sc = ##class(App.Installer).setup()' returned a non-zero code: 1[node1] (local) root@192.168.0.23 ~/iriscontest2020$ cat Installer.clsClass App.Installer{
XData setup{<Manifest> <Default Name="SourceDir" Value="#{$system.Process.CurrentDirectory()}src"/> <Default Name="Namespace" Value="IRISAPP"/> <Default Name="app" Value="irisapp" />
<Namespace Name="${Namespace}" Code="${Namespace}" Data="${Namespace}" Create="yes" Ensemble="1">
<Configuration> <Database Name="${Namespace}" Dir="/opt/${app}/data" Create="yes" Resource="%DB_${Namespace}"/>
<Import File="${SourceDir}" Flags="ck" Recurse="1"/> </Configuration> <CSPApplication Url="/csp/${app}" Directory="${cspdir}${app}" ServeFiles="1" Recurse="1" MatchRoles=":%DB_${Namespace}" AuthenticationMethods="32" /> </Namespace>
</Manifest>}
ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, pInstaller As %Installer.Installer, pLogger As %Installer.AbstractLogger) As %Status [ CodeMode = objectgenerator, Internal ]{ #; Let XGL document generate code for this method. Quit ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "setup")}
} Hi Oliver!
It was an issue in %Installer - the Import statement
<Import File="${SourceDir}" Flags="ck" Recurse="1"/>
was inside the Configuration tag started import before Interoperability (Ensemble) enabled in Namespace.
I put it below the configuration and it works.
Thanks @Dmitry.Maslennikov for your help.
I sent you a pull request with the fix. And thanks for this!
And I've updated the templates (Docker template, Contest template) accordingly.
Thank you!
Announcement
Anastasia Dyubaylo · Apr 21, 2020
Hi Developers,
Please welcome another "Coding Talk" video specially recorded for the second IRIS Programming Contest:
⏯ How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
In this video, @Evgeny Shvarov shows how to build the Package with ObjectScript classes and REST API application from scratch, how to test it and how to publish it on a test registry and in InterSystems Open Exchange registry.
➡️ Download ZMP from Open Exchange
And...
You're very welcome to join the second IRIS Programming Contest! Show your best coding skills on InterSystems IRIS with REST API!
Stay tuned! 👍🏼
Article
Sylvain Guilbaud · Apr 19, 2022
Kong provides an open source configuration management tool (written in Go), called decK (which stands for declarative Kong)
Check that decK recognizes your Kong Gateway installation via deck ping
deck ping
Successfully connected to Kong!
Kong version: 2.3.3.2-enterprise-edition
Export Kong Gateway configuration to a file named "kong.yaml" via deck dump
deck dump
After modifying the kong.yaml, show the differences via deck diff
deck diff
updating service alerts {
"connect_timeout": 60000,
- "host": "172.24.156.176",
+ "host": "192.10.10.18",
"id": "3bdd7db4-0b75-4148-93b3-2ff11e961f64",
"name": "alerts",
"path": "/alerts",
"port": 50200,
"protocol": "http",
"read_timeout": 60000,
"retries": 5,
"write_timeout": 60000
}
Summary:
Created: 0
Updated: 1
Deleted: 0
Apply changes via deck sync
deck sync
updating service alerts {
"connect_timeout": 60000,
- "host": "172.24.156.176",
+ "host": "192.10.10.18",
"id": "3bdd7db4-0b75-4148-93b3-2ff11e961f64",
"name": "alerts",
"path": "/alerts",
"port": 50200,
"protocol": "http",
"read_timeout": 60000,
"retries": 5,
"write_timeout": 60000
}
Summary:
Created: 0
Updated: 1
Deleted: 0
deck sync -s workspace1.yaml --workspace workspace1
deck sync -s workspace2.yaml --workspace workspace2
For more information :
https://docs.konghq.com/deck/1.11.x/guides/getting-started/
https://docs.konghq.com/deck/1.11.x/guides/best-practices/
Announcement
Andreas Dieckow · Dec 21, 2022
If you would like to try the new installation process for the NoPWS project, you can get access to the Early Access Program (EAP) here. (https://evaluation.intersystems.com/Eval/)
Once you have registered, please send InterSystems the email address you used to register for the EAP to nopws@intersystems.com.
Look here for background: Original Post @Andreas.Dieckow - thank you for the clarification!
Announcement
Anastasia Dyubaylo · Oct 3, 2019
Hi Community!
We are pleased to invite you to the upcoming webinar in Spanish "Desarrollar y gestionar APIs con InterSystems IRIS Data Platform" / "Developing and managing APIs with InterSystems IRIS Data Platform" on October 15 at 16:00 CET!
Are you a backend developer? Or a Systems integration specialist? If so… this webinar is for you!
What you will learn:
We'll develop an API REST from OpenAPI (Swagger) specifications and we'll also see how to expose in JSON format the objects stored in our database.
We'll show how to manage our API, considering the management of tokens for API consumers, monitoring activities, how to establish controls to restrict API use for traffic and how to release new versions.
We'll publish the examples in GitHub and we'll use Docker and Visual Studio Code images.
We are waiting for you!
REGISTER FOR FREE HERE!
Announcement
Anastasia Dyubaylo · Sep 11, 2019
Hi Everyone,
New Coding Talk, recorded by @Evgeny.Shvarov, is already on InterSystems Developers YouTube:
GitHub Repository Template To Develop and Debug ObjectScript in InterSystems IRIS
In this video you will learn how to start development ObjectScript in VSCode with InterSystems IRIS on docker container with a minimum required set of files in GitHub repository.
Please check the additional links:
GitHub Template
ObjectScript Docker Template App on Open Exchange
Feel free to ask your questions in the comments to this post.
Enjoy watching the video! Thanks, Anastasia!The video is 20 min long, but it describes how to start coding, compiling, debugging ObjectScript on InterSystems IRIS in less than a minute!All you need is Git, VSCode and Docker installed. Excellent! Can we use vscode with Intersystems Cache? Meaning classes, CSPs and Mac routines? Hi Bernard! Pinging @Dmitry.Maslennikov and @John.Murray for the answer cause both develop VSCode plugins for ObjectScript. My VSCode-ObjectScript extension supports the same versions as Atelier, so Caché/Ensemble versions from 2016.1.You can not just edit mac routines, and classes, compile and do many other features. And it is also supporting Intellisense. CSP support, just very simple, only syntax highlighting as HTML, as it already stored as files, you can just use the same folder in Caché and in VSCode, and everything should be OK. You can find details about the latest features here, and use the arrow buttons to navigate to the previous release notes.And now, we are also offering enterprise support, so, you will get faster issues solving, and may get some priority in realization new features. Hello Evgeny,
Slightly off-topic but it is interesting you are using VSCode.
I have asked at various times, including the last symposium, what the plans are for development tools given that both Studio and Atelier have essentially been end of life for quite a while now, well over a year, but the response is always the same, there is a plan but we cannot announce it yet.
Is VSCode the way Intersystems is going? Does this mean we are now relient on 3rd party development tools? Are there plans to create some way to replicate functionality such as the SOAP wizard in VSCode?
I was hoping there might be some details out of the summit but I haven't seen anything yet.
Regards
David Hi David!
InterSystems doesn't develop VSCode plugins. In this video, I'm enjoying VSCode ObjectScript plugin by @Dmitry.Maslennikov from CaretDev as a Developers Community effort. My job is to support all the best efforts of the InterSystems Developers Community and I think this plugin is suitable for some ways of developing and debugging InterSystems Solutions with ObjectScript.
There is also another pretty mature VSCode plugin Serenji introduced by @John.Murray from GeorgeJames Software which has a lot of advanced features to develop and debug InterSystems solutions with ObjectScript and REST API development.
and AFAIK there is also yet another VSCode plugin coming from @Rubens.Silva9155.
As for Atelier and Studio, there was an announcement by @Andreas.Dieckow a year ago on the terms of InterSystems support for Atelier and Studio. The Serenji extension from George James Software works all the way back to Cache 2008.1 (that's not a typo). Hello Evgeny,
Thanks for the response, of course I am aware of the various plugins hence my question of relying on 3rd party tools.
That old post does not really answer the question on what Intersystems future plans for development tools are, it just confirms effective end of life for the current ones. Also, only fixing critical issues means reported problems will generally not be fixed anymore as they are pretty stable, something I have already experienced.
I don't have a particular problem with moving to VSCode supported by 3rd parties but some confirmation of this from Intersystems so developers can plan to move in that direction would be appreciated but noone seeems to want to commit to any answers. It also starts the question of how will Intersystems provide the ability for these 3rd party tools to replicate and extend the functionality available already, again there are no answers.
Regards
David Good questions, David. So I'm tagging @Jeff.Fried and @Raj.Singh to help with the answers. If you fill well in moving to 3rd party tools, you can use my VSCode-ObjectScript extension, by now you already getting more than just Studio. With my company CaretDev, we already offer commercial support, so you can be sure that you will get help if you will face some troubles. Hello Dmitry,
I have used the extension and am very impressed but obviously any change in toolset has to be agreed accross the business and will require changes to the development and version control process, hence a reluctance until we know what Intersystems have planned.
Apologies if I have missed a feature post but does the extension replicate the Studio Add-Ins such as the SOAP Wizard as these are very useful to us.
Regards
David Studio's Add-ins have not added, yet. Please fill the issue. So, I will know that this feature useful. And you can issues for anything you found, and anything you would like to see in extension. I know Jeff and Raj are busy people but there never was a response.
Intersystems simply need to commit to an answer as at this point the actual answer isn't really important anymore, just getting an answer so commitments to any change can be made.
Article
Evgeny Shvarov · Apr 12, 2023
Hi Developers!
There is a recent update came for developer community images of InterSystems IRIS and IRIS For Health.
This release comes with Environment variables support.
Currently 3 variables are supported:
IRIS_USERNAME=user to create
IRIS_PASSWORD=with password
IRIS_NAMESPACE=create namespace if doesn't exist
Here is what you can do - see below.
Start iris with your username and password created:
docker run --rm --name iris-sql -d -p 9091:1972 -p 9092:52773 -e IRIS_PASSWORD=demo -e IRIS_USERNAME=demo intersystemsdc/iris-community
Launch SQL terminal irissqlcli or Dbeaver:
$ irissqlcli iris://demo:demo@localhost:9091/USER
Server: InterSystems IRIS Version 2022.3.0.606 xDBC Protocol Version 65
Version: 0.5.1
[SQL]demo@localhost:USER> select $zversion
+---------------------------------------------------------------------------------------------------------+
| Expression_1 |
+---------------------------------------------------------------------------------------------------------+
| IRIS for UNIX (Ubuntu Server LTS for ARM64 Containers) 2022.3 (Build 606U) Mon Jan 30 2023 09:07:49 EST |
+---------------------------------------------------------------------------------------------------------+
1 row in set
Time: 0.050s
[SQL]demo@localhost:USER>
And you can start IRIS terminal:
docker exec -it iris-sql iriscli
Node: fd7911f0b130, Instance: IRIS
USER>
And you can use IRIS_NAMESPACE variable to create a new namespace.
Let's stop and kill the container we created:
docker stop iris-sql
And launch a new one with namespace DEMO introduced:
docker run --rm --name iris-sql -d -p 9091:1972 -p 9092:52773 -e IRIS_PASSWORD=demo -e IRIS_USERNAME=demo -e IRIS_NAMESPACE=DEMO intersystemsdc/iris-community
Entering SQL terminal:
$ irissqlcli iris://demo:demo@localhost:9091/DEMO
Server: InterSystems IRIS Version 2022.3.0.606 xDBC Protocol Version 65
Version: 0.5.1
[SQL]demo@localhost:DEMO> exit
Goodbye!
Entering IRIS terminal:
$ docker exec -it iris-sql iriscli -U DEMO
Node: 6c52cb612bc0, Instance: IRIS
DEMO>
And lets enter the IRIS terminal:
docker exec -it iris-sql iriscli -U DEMO
PS:
if you run the container locally you also can connect the SQL terminal via embedded python as:
$ docker exec -it iris-sql irissqlcli iris+emb:///DEMO
Server: IRIS for UNIX (Ubuntu Server LTS for ARM64 Containers) 2022.3 (Build 606U) Mon Jan 30 2023 09:07:49 EST
Version: 0.5.2
[SQL]irisowner@/usr/irissys/:DEMO> select $username
+--------------+
| Expression_1 |
+--------------+
| irisowner |
+--------------+
1 row in set
Time: 0.047s
[SQL]irisowner@/usr/irissys/:DEMO>
Credit goes to @Dmitry.Maslennikov
DC Community images you can use
The latest stable releases of InterSystems IRIS:
intersystemsdc/iris-community - InterSystems IRIS Community Edition
intersystemsdc/irisheatlh-community - InterSystems IRIS For Health Community Edition
intersystemsdc/iris-ml-community - InterSystems IRIS Community Edition with IntegratedML package
intersystemsdc/irishealth-ml-community - InterSystems IRIS Community Edition for Health with IntegratedML package
And the preview releases:
intersystemsdc/iris-community:preview
intersystemsdc/irisheatlh-community:preview
intersystemsdc/iris-ml-community:preview
intersystemsdc/irishealth-ml-community:preview
Happy coding!
UPDATE. Env variables without underscore are supported too:
IRISUSERNAME=user to create
IRISPASSWORD=with password
IRISNAMESPACE=create namespace if doesn't exist
A nice extension to this: run iris and with an ipm package on-board. Here is one command to start IRIS and install web-terminal:
docker run --rm --name iris-ce -d -p 9091:1972 -p 9092:52773 -e IRIS_PASSWORD=demo -e IRIS_USERNAME=demo intersystemsdc/iris-community -a "echo 'zpm \"install webterminal\"' | iriscli"