#InterSystems IRIS

19 Followers · 5.6K Posts

InterSystems IRIS is a Complete Data Platform
InterSystems IRIS gives you everything you need to capture, share, understand, and act upon your organization’s most valuable asset – your data.
As a complete platform, InterSystems IRIS eliminates the need to integrate multiple development technologies. Applications require less code, fewer system resources, and less maintenance.

Article Lorenzo Scalese · Feb 7, 2023 9m read

Hi Community,

In the first part, we describe all packages, used libraries and REST services.

Now, I would like to add some details about converter and validator services.

By default, OpenAPI-Suite sends an HTTP request to converter.swagger.io if the specification version is less than 3.0 and another HTTP request to validator.swagger.io to simplify the structure of the specification document.  

Although the usage of online utilities is convenient, in some cases it could be better to have our own instance of the converter and validator.  For example, if OpenAPI-Suite is provided on a server in an organisation for ObjectScript developers, it may be preferable to avoid requests to external services (privacy, avoid request rate limits). 

Just run: 

docker run -d -p 8085:8080 --name swagger-converter swaggerapi/swagger-converter:latest
docker run -d -p 8086:8080 --name swagger-validator-v2 swaggerapi/swagger-validator-v2:latest
2
2 599
Question Jeffrey Drumm · Feb 10, 2023

I've been trying for a while now to get OS authentication working on IRIS running on Ubuntu 20.04 and subsequently 22.04. I have the following authentication methods enabled for %Service_Terminal:

  • Operating System
  • Password
  • Operating System Delegated Authorization

And i have these options selected in Authentication/Web Session Options:

But when logging in via iris session <instancename> I am always prompted for a username and password. I am logged into the operating system with a username that matches my IRIS username, and the same configuration and login method works fine on Red Hat 8.5.

2
0 325
Announcement Laurel James (GJS) · Feb 10, 2023

If you haven’t already please give @John Murray your vote in the Developer Tool contest >> http://bit.ly/3XcxyeS


🚀 DX Jetpack boosts your developer experience when using VS Code with InterSystems platforms. 🚀


This extension pack includes: 

gj :: codeSpex - showing help using VS code's commenting feature.

 

 

ObjectScript class view - View and navigate all class members plus where they are inherited from.

 

 

ServerDiff - See the difference between the code you are editing in VS Code and the server copy.

 

 

You can vote here >> http://bit.ly/3XcxyeS

1
0 238
Article Henrique Dias · Feb 9, 2023 3m read

Hey community! 

It's time to elevate your unit tests to the next level with iris-TripleSlash new solo feature!

We are bring to the game Setup and Tear down events!
Just add description on class, with special tags like:

  • beforeAll
  • beforeOne
  • afterAll
  • afterOne

The tripleSlash will turn it to:

  • OnBeforeAllTests
  • OnBeforeOneTest
  • OnAfterAllTests
  • OnAfterOneTest

And that's not all! The new double dot abbreviation feature allows you to effortlessly call methods and simplify your code, i.e.:

///<example>
/// Write .
6
0 389
Discussion Evgeny Shvarov · Feb 9, 2023

Hi folks!

I'm playing with IRIS interoperability at the moment and it turned out that Data Transformation cannot be the element of production by itself.

It can be called either from data rule or from business process.

But why? 

What if I just want to change the message with the transformation and transfer the message somewhere else? Why the overhead with Rule or Business process?

1
0 217
Article Evgeny Shvarov · Jun 24, 2020 3m read

Hi Developers!

Suppose you have a persistent class with data and you want to have a simple Angular UI for it to view the data and make CRUD operations.

Recently @Alberto Fuentes described how to build Angular UI for your InterSystems IRIS application using RESTForms2. 

In this article, I want to tell you how you can get a simple Angular UI to CRUD and view your InterSystems IRIS class data automatically in less than 5 minutes.

Let's go!

3
4 1373
Article Ricardo Paiva · Feb 9, 2023 3m read

Schematron is a rule-based validation language for making assertions about the presence or absence of certain patterns in XML documents. A schematron refers to a collection of one or more rules containing tests. Schematrons are written in a form of XML, making them relatively easy for everyone, even non-programmers, to inspect, understand, and write

0
0 1519
Question Michael Davidovich · Oct 31, 2022

Sessions and specifically %session are paramount to our application to login users to the application (the Web Gateway user logs into the server and then users login to the application).  

When using /api/mgmnt/v2 to implement a spec first approach to REST API development, I am unclear how I can utilize sessions (i.e. %session) to work with our existing model (and I'm sure there are indeed better ways to do this, but we are just baby stepping right now). Much of the documentation say to make sure UseSession=1 in the dispatch class is set, which I've accomplished.

11
0 563
Question Norman W. Freeman · Feb 8, 2023

I use the following code (which is a simplified version of what happen on a server) :

tstart
for I=1:1:N {
  set test = ##class(Test.Test).%New()
  set test.ID = I
  do test.%Save() //create a "Exclusive_e->Delock" lock on ^Test.TestD(..)
}
hang 5
tcommit //locks are removed here

Test.Test is a persistent class that inherit from %Persistent :

Class Test.Test Extends %Persistent
{
   Property ID As %Integer [ Required ];
   Index IDKEY On ID [ IdKey ];
   //
6
0 422
Article Muhammad Waseem · Feb 9, 2023 2m read

Hi Community,
In this article I will demonstrate below steps to add Interactive map and visualize geographic data to web application:

  • Step1 : Install Application
  • Step2 : Create CSP Page
  • Step3 : Extend dc.IrisGeoMap.Folium class
  • Step4 : Invoke DrawGeoDetails() Method

So Let us start.
 

Step1 : Install Application

First of all we need to install iris-geo-map application by using ZPM

zpm "install iris-geo-map"

0
1 420
Question Jaime Lerga · Feb 8, 2023

Recently i've been using Restforms2 to create a CRUD API for a project. But it lacks some advanced functionality that we need, so we have created a production with a REST WS which handles those advanced methods. That works great but there's a drawback, it does not have authentication. 
I would want to use the same authentication method as Restforms2 which is a basic auth using IRIS users and passwords. 
Searching for this, i have found a similar topic. It uses $SYSTEM.Security.Login(user, pass) in a similar manner to create a token.

4
0 1040
Question Tani Frankel · Feb 8, 2023

Does anyone happen to have a sample Configuration (CPF) Merge file that includes Action parameters setting up authentication methods (e.g. Password, Kerberos) for certain Services and Web Applications (e.g. via the ModifyService or Modify/CreateApplication AutheEnabled property)?

Thanks!

2
0 295
Announcement Evgeny Shvarov · Jan 26, 2023

Here're the technology bonuses for the InterSystems Developer Tools Contest 2023 that will give you extra points in the voting:

  • Embedded Python usage
  • Docker container usage
  • ZPM Package Deployment
  • Online Demo
  • Code Quality pass
  • Article on Developer Community
  • The second article on Developer Community
  • Video on YouTube
  • First Time Contribution
  • Community Idea Implementation

See the details below.<--break->

Embedded Python - 3 points

Use Embedded Python in your application and collect 3 extra points. You'll need at least InterSystems IRIS 2021.2 for it.

4
0 451
InterSystems Official Fabiano Sanches · Feb 8, 2023

InterSystems announces its first developer preview, as part of the developer preview program for 2023.1 release. Many updates and enhancements have been added in 2023.1 and there are also brand-new capabilities, such as production-ready support for Columnar Storage, ability to use Bulk FHIR, and support to MacOS 13 Ventura. Some of these features or improvements may not be available in this current developer preview.

Future preview releases are expected to be updated biweekly and we will add features as they are ready.

0
0 323
Question Dhivakar Karimuth · Feb 7, 2023

I am trying get the Unix time stamp  in milliseconds

 

set epochSecond= $ZDATETIME($ZTIMESTAMP,-2)*1000

but the result is not accurate as $ZDATETIME ignoring /truncating  the fraction of the seconds and the milliseconds calculation is not accurate with fraction seconds

for example

set epochSecond= $ZDATETIME($ZTIMESTAMP,-2)

1675830682

 

when its converts to the milliseconds

it became 1675830682000. not the accurate fractional seconds. 

 

My target system looking for the milliseconds time stamp to authenticate. 

 

Could you please help with steps to return the unix timestamp in milliseconds

 

Thanks

3
0 598
Question Lukas Renz · Feb 1, 2023

Hello guys,

i try to call a Operation within 3 foreach loops. 

When i try to do this, i always get the following error: 

I dont get any Errpr when i log my request message at this time i want to call a operation. 

Everything works and i get no error. But when i try to call the operation i get this error.

Then i tried to call a operation in the first Level (not in a ForeachLoop) it works. 

I simply call the operation with the RequestMessage from my Service.

 

When i now try to copy this call into the third Level (within 3 foreachloops) Then i also get this error.

I dont know what i am doing wrong.

2
1 322
Article 王喆 👀 · Feb 7, 2023 5m read

Hello, friends who are developing IRIS. I recently participated in the InterSystems Developer Tools Contest. This time, I made a tool based on the idea described in an article I published earlier as a template for quick query of messages. Currently, you only need to establish entity classes in IRIS, Then record the message corresponding to the entity class in the specified lookup table, and all the key fields generated in the message can be inverted indexed (the concept in ElasticSearch), which is convenient for quick query. The following is the design idea of my program.

1
0 294
Question Dmitry Maslennikov · Feb 6, 2023

So, I know that I can return a SQL Error message from my SQL Procedure written in ObjectScript, with code like this

$ cat <<EOF | irissqlcli iris://_SYSTEM:SYS@localhost:1972/USER
CREATE or REPLACE PROCEDURE test()
LANGUAGE OBJECTSCRIPT
{
 SET %sqlcontext.%SQLCODE = 400
 SET %sqlcontext.%ROWCOUNT = -1
 SET %sqlcontext.%Message = "test error message"
};

CALL test();

EOF
[SQLCODE: <-400>:<Fatal error occurred>]
[Location: <SPFunction>]
[%msg: <test error message>]

But I did not find how to do it with Python. I can't find %sqlcontext variable available there

1
0 258
Announcement Laurel James (GJS) · Feb 7, 2023

Listen to CEO George James chat with Derek Robinson, host of the InterSystems DataPoints podcast talk about source control, developer tools and how our solutions are beneficial for InterSystems IRIS users.

 

In this short 17 minute episode, George and Derek discuss our work with developer tools, and how choosing the right source control can provide users with a seamless solution - which is why Deltanji is seen as the go-to source control for InterSystems IRIS users.

Listen now on the InterSystems website > https://bit.ly/3Jp5py5
or wherever you get your podcasts - just search for 'InterSystems DataPoints'.

0
0 250
Announcement Anastasia Dyubaylo · Jan 13, 2023

Hey Developers,

We'd like to invite you to join our next contest dedicated to creating useful tools to make your fellow developers' lives easier

🏆 InterSystems Developer Tools Contest 🏆

Submit an application that helps to develop faster, contributes more qualitative code, and helps in testing, deployment, support, or monitoring of your solution with InterSystems IRIS.

Duration: January 23 - February 12, 2023

Prize pool: $13,500

 

14
2 2398
Article Guillaume Rongier · Dec 14, 2021 10m read

Iris-python-template

Template project with various Python code to be used with InterSystems IRIS Community Edition with container.

Featuring :

  • Notebooks
    • Embedded Python Kernel
    • ObjectScript Kernel
    • Vanilla Python Kernel
  • Embedded Python
    • Code example
    • Flask demo
  • IRIS Python Native APIs
    • Code example

Diagram

2. Table of Contents

4
4 1566
Article Bob Binstock · Sep 6, 2016 19m read

Mirroring 101

Caché mirroring is a reliable, inexpensive, and easy to implement high availability and disaster recovery solution for Caché and Ensemble-based applications. Mirroring provides automatic failover under a broad range of planned and unplanned outage scenarios, with application recovery time typically limited to seconds. Logical data replication eliminates storage as a single point of failure and a source of data corruption. Upgrades can be executed with little or no downtime.

22
3 7879
Article Muhammad Waseem · Feb 6, 2023 3m read

Hi Community
In this article, I will demonstrate the functionality of my app iris-geo-map
 

IRIS Geo Map application is a tool to visualize geographic data by generating interactive maps by using Embedded Python functionality. Application is using Folium Python library

folium builds on the data wrangling strengths of the Python ecosystem and the mapping strengths of the leaflet.js library. Manipulate your data in Python, then visualize it in on a Leaflet map via folium. folium makes it easy to visualize data that’s been manipulated in Python on an interactive leaflet map.

0
0 477
Question Oliver Wilms · Feb 5, 2023

I copied a 5 MB messages.log file to AWS where I have iris-log-viewer app deployed. I ran the test to see how it takes in IRIS code to import the lines into a persistent table:

IRISAPP>set m5mb="/home/irisowner/irisdev/messages.old_20221231.log"

IRISAPP>

IRISAPP>do ##class(otw.log.irislogreader).Test1(m5mb)
Test1 begins at 02/05/2023 12:49:30
ReadLogLines
/home/irisowner/irisdev/messages.old_20221231.log
Open
Test1 ends at 02/05/2023 12:49:34
Test1 execution time: 3.500789

select count(*) from otw_log.Log

63239

 

It took 3.5 seconds and I had 63239 lines in the table.

7
0 338