#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.

Question Sehinde Raji · Jun 8, 2021

Hi all, I am new to IS Objectscript and I would appreciate some assistance regarding this. 

I am trying to find out how to count the number of elements within a dynamic abstract object and I am having some trouble using the size method.

Here is the code below:

The key value pairs are originally in JSON and I would have converted it in to an object for use.

Class JSON.Test {

ClassMethod Test()
{
    set obj = {"byr:":"1937", "iyr:":"2017", "eyr:":"2020", "hgt:":"183cm", "hcl:":"#FFFFFD","ecl:":"grey", "pid:":"028048884"}
    set passport1 = {"ecl:":"grey","pid:":"860033327",
7
0 422
Article Yuri Marx · Feb 4, 2021 6m read

Gartner defined DataOps as: "A collaborative data management practice focused on improving the communication, integration and automation of data flows between data managers and data consumers across an organization. The goal of DataOps is to deliver value faster by creating predictable delivery and change management of data, data models and related artifacts. DataOps uses technology to automate the design, deployment and management of data delivery with appropriate levels of governance, and it uses metadata to improve the usability and value of data in a dynamic environment."

DataOps was first

1
2 775
Article Dmitrii Kuznetsov · Feb 15, 2021 17m read

A concurrent session in IRIS:
SQL, Objects, REST, and GraphQL
 

Kazimir Malevich, "Athletes" (1932)
 

"But of course you don't understand! How can a person who has always traveled in a horse-drawn carriage understand the feelings and impressions of the express traveler or the pilot in the air?"

Kazimir Malevich (1916)

Introduction

We’ve already addressed the topic of why object/type representation is superior to SQL for implementing subject area models. And those conclusions and facts are as true now as they have ever been. So why should we take a step back and discuss technologies that drag abstractions back to the global level, where they had been in the pre-object and pre-type era? Why should we encourage the use of spaghetti code, which results in bugs that are hard to track down, and which relies only on virtuoso developer skills? 

There are several arguments in favor of transmitting data via SQL/REST/GraphQL-based APIs as opposed to representing them as types/objects:

2
4 1235
Question Tim Stowe · Jun 4, 2021

I'm probably missing something really basic here -

  • I spun up a copy of the Iris community edition AMI.  
  • Added Objectscript extension to vscode
  • Added objectscript extension pack to vscode
  • Added server manager to vscode
  • Connected to iris AWS instance using PuTTY
  • Changed password
  • in vscode, I used server tool to add the server

It seems to connect OK; I can see the %SYS and USER namespaces.  I clicked the "edit code in namespace" button and created a bit of hello world code.  However, when I try to save it, I get "failed to save file 'filename.mac' on the server."
I can connect via a

1
0 398
Question Eduard Lebedyuk · Jun 4, 2021

Is there a way to add/substract from a pivot variable?

I have this MDX:

SELECT
  NON EMPTY [DateOfSale].[Actual].[YearSold].&[$variable.Year] ON 0,
  NON EMPTY [Product].[P1].[Product Name].Members ON 1
FROM [HOLEFOODS]

And with pivot variable Year equal to, say, 2016 it works:

 

Now I want to add previous year  first with one pivot variable and one explicit reference. It also works:

SELECT
  NON EMPTY
  {
    [DateOfSale].[Actual].[YearSold].&[$variable.Year],
    [DateOfSale].[Actual].[YearSold].&[2015]
  } ON 0,
  NON EMPTY [Product].[P1].[Product Name].Members ON 1
FROM [HOLEFOODS]

 

Fi

3
0 223
Article Eduard Lebedyuk · Aug 7, 2020 5m read

In this article, I will show how you can easily containerize  .Net/Java Gateways.

For our example, we will develop an Integration with Apache Kafka.

And to interoperate with Java/.Net code we will use PEX .

Architecture

Our solution will run completely in docker and look like this:

Java Gateway

First of all, let's develop Java Operation to send messages into Kafka. The code can be written in your IDE of choice and it can look like this.

In short:

  • To develop new PEX Business Operation we need to implement  abstract com.intersystems.enslib.pex.BusinessOperation class
  • Public properties are
7
1 1461
Article Jose-Tomas Salvador · Apr 8, 2020 6m read

This time I want to talk about something not specific to InterSystems IRIS, but that I think is important if you want to work with Docker and your server at work is a PC or laptop with Windows 10 Pro or Enterprise.

As you likely know, containers technology comes basically from Linux world and, nowadays, is on Linux hosts were it shows maximum potential. Those who use Windows on a normal basis see that both, Microsoft and Docker, have done important efforts during these last years that allow us to run containers based on Linux images on our Windows system in a really easy way... but it's something not supported for production systems and, this is the big problem, is not reliable if we want to keep persistent data outside of containers, in the host system,... mostly due to the big differences between Windows and Linux file systems. In the end, Docker for Windows itself uses a small linux virtual machine (MobiLinux) to run the containers... it does it transparently for the windows user... and it works perfectly well if, as I said, you don't require that your databases survive longer than the container...

Well,...let's get to the point,... the point is that many times, to avoid issues and simplify, we need a full Linux system and, if our server is based on Windows, the only way of having it is through a virtual machine. At least till WSL2 in Windows is released, but that will be another story and sure it'll take a bit of time to become robust enough.

In this article, I'll tell you, step by step, how to install an environment where you'll be able to work, if you need it, with Docker containers on an Ubuntu system in your Windows server. Let's go...

11
3 29868
Question Nicky Zhu · Jun 3, 2021

Hi guys,

How can we remove a business host from a running production?

I've read and tested how to add it to a production, while when I try to remove it from the production with the following codes:

Set tSC = $$$OK
    Set prodName = "CDRDemo.DemoProduction"
    Set confName = "TEST1"
    Set className = "Demo.LISClient.Operation.PatientOperation"
    #Dim prodConf As Ens.Config.Production = ##class(Ens.Config.Production).%OpenId(prodName)
    Set itemId = ""
    &SQL(Select ID into :itemId from Ens_Config.Item
        where Production=:prodName
        and ClassName=:className
1
0 299
Question James Hipp · Apr 21, 2021

Hello,

We have a need to track Database changes over time - down to the SQL level of granularity if possible. Such as: User xyz runs routine ^abc and we get something similar to a changelog that tells us: table A had this value updated, insert, update etc....

Is that possible using IRIS level tools (Audit Log, Journal File, etc...) , is there a way to convert the global sets and kills from the journals into SQL level changes?

I also found a third-party java-based tool named Liquibase , but it seems more oriented to tracking schema and table based changes or pre-defined definitions.

Thanks,

James

3
1 599
Question A.R.N. H Hafeel · May 27, 2021

Hi community, 

I am in the process of building a React Native Application for a restaurant. 

I am not quite sure if we can use IRIS as the main database for this and if there is a possibility I am not quite sure how to do it. 

If there is a possibility could some one help me out with it please? 

Or do you think using AWS is a better choice?  

Please let me know your ideas and guidelines in the comments or please feel free to reach out to me directly. 

Hoping to hear soon. 

Regards.

2
1 424
Article Anton Umnikov · May 31, 2021 6m read

All source code to the article is available at: https://github.com/antonum/ha-iris-k8s 

In the previous article, we discussed how to set up IRIS on k8s cluster with high availability, based on the distributed storage, instead of traditional mirroring. As an example, that article used the Azure AKS cluster. In this one, we'll continue to explore highly available configurations on k8s. This time, based on Amazon EKS (AWS managed Kubernetes service) and would include an option for doing database backup and restore, based on Kubernetes Snapshot.

Installation

Let's get right to business.

2
0 1573
Question Denny Zhu · May 30, 2021

when i connect to DB via DBeaver , it always report Connection refused, i tried both Cache and IRIS but same error, I have already download intersystems-jdbc-3.2.0.jar as IRIS Driver.

And meanwhile SqlDBx tool is able to connect via internal Intersystems Cache Driver.

2
0 1086
Question Otto Medin · May 27, 2021

Hi all,

I'm looking for a user-friendly way to make a method library available in DTL, and by user-friendly I mean via '..MyMethod()' or '$$$MyMacro()' rather than  '##class(MyPackage.MyClassName).MyMethod()'.

Does anybody know of a way to add a second superclass or a set of macros to a DTL ... or some other trick?

Cheers,

Otto

2
0 265
Article Evgeny Shvarov · May 28, 2021 1m read

Hi colleagues!

Often when we collaborate to someone's repo in GitHub we do the following cycle:

Fork-Clone-Change-Commit-Push-Pull-Request-Merge to the original repo.

This is all great and works fine!

And if we want to make a second collaboration right after the merge you need to perform "Fetch upstream" to your forked repo first to "ingest" your own Pull-request in the original repo.

Geeky git-professionals do it with ease but this was always a headache for me so I usually simply deleted the fork and created a new one.

And today I figured that Github added a new UI feature that I can easily fetch-upstream for my fork with the original one and make it up to date and capable for pull-requests.

Here is where the button is:

This is a relief! )

Wanted to share this relief and productivity tip with you!

Bring more collaborations to Github repos!

And speaking of PR - I just made a PR with docker to Google Cloud Run deployment for the FHIRaaS demo made by @Anton Umnikov for the current FHIR Contest! Looking for more of your contributions!

0
3 562
Question Dustin Knudsen · May 27, 2021

Hello,

I'm quite new at InterSystems. I have a business process that's pointing two different business operations, but one of them I don't want it to point to.

I went through the FileSystem settings, data transformations, classes, and code to see what it could be, but I don't see why its connecting to this second operation. 

What other inner-system mechanics would I need to consider? What have might I have missed? 

6
0 243
Question A.R.N. H Hafeel · May 9, 2021

Hello community, 

I am in the process of building a Health Care Application named MediCloud and I was so excited to see that IRIS is one of a great choice that I can make for a database system. 

But, I am developing my system with ASP.NET Core Version 2.1. I did see that there is a way we could use .NET with IRIS using PEX (such a useful tip), is there a possibility I could do it ASP.NET Core as well.   

Or is it just limited to .Net for the time being? 

Cheers. 

2
0 410
Question A.R.N. H Hafeel · May 16, 2021

Hello all, 

I am in a bit of a situation where I could get your help please. 

I want to get certified with IRIS, but I also do see that there is an availability named Cache. 

Are they both the same or different? if different please explain it to me as how? 

Also what is the difference between IRIS, IRIS for Health, Deep Sea? Please explain to me.

Also what do you think I should get my self certified with? 

Please leave your comments below. 

Cheers. 

2
0 495
Question Dominic Chui · Apr 27, 2021

I have run into two annoyances when using VS Code for server-side editing of Objectscript and was wondering if anyone knows of any solutions or workarounds.

1. In .mac routine files, class names that aren't fully qualified (e.g. ##class(example) instead of ##class(Package.example)) fail to be understood, so the class will have a red squiggly underneath it and a problem that reads

"Class 'example' does not exist. InterSystems Language Server".

In an old routine full of unqualified class names, it just fills the problems tab and drowns out the actual issues.

2
0 307
Article Alberto Fuentes · Feb 24, 2021 1m read

Hi Developers!  Let me share with you some exercises from a workshop about developing interoperability components in Java using PEX (Production EXtension).

You will find slides and step by step exercises about:

  • Understanding simple PEX components coded in Java.
  • Making some changes on them.

All built using containers, so you don't need to build a local Java environment.

You can reach the repository here: https://openexchange.intersystems.com/package/workshop-pex

6
0 452
Article Yuri Marx · May 24, 2021 1m read

It's a challenge when you need, as a software architect, design a corporate architecture to meet the current business requirements, you need achieve level 5. With InterSystems IRIS.
it's possible. With 1 product you get SQL + NoSQL + ESB + BI + Open Analytics + Real time virtual cubes + NLP + AutoML + ML (with Python) and Advanced cloud + Sharding support.

With Oracle, for example, you need Oracle DB + Oracle NoSQL + Oracle BI + Oracle SOA Suite + Some Oracle add-ons like Oracle R, Partitioning and RAC and some Oracle cloud products to NLP and AI features.

2
1 575
Question Sehinde Raji · May 21, 2021

Hey I am very new to Intersystems Objectscript and I am trying to find a way of extract 4 digit numbers from a stream.

I have a stream full of results 

2334

3434

5543

4334

And I am trying to remove each 4 digit grouping from the stream.

I have tried the following for loop 

for i=1:1:$length(result) {

set curr = $extract(result, i)

write !, curr

set count(curr) = $get(count(curr)) + 1

}

Unfortunately the loop extracts one digit.

Does anyone have any suggestions on how to solve this ?

6
0 526