Clear filter
Article
Evgeny Shvarov · Mar 14, 2019
Hi Community!
I think everyone keeps the source code of the project in the repository nowadays: Github, GitLab, bitbucket, etc. Same for InterSystems IRIS projects check any on Open Exchange.
What do we do every time when start or continue working with a certain repository with InterSystems Data Platform?
We need a local InterSystems IRIS machine, have the environment for the project set up and the source code imported.
So every developer performs the following:
Check out the code from repo
Install/Run local IRIS installation
Create a new namespace/database for a project
Import the code into this new namespace
Setup all the rest environment
Start/continue coding the project
If you dockerize your repository this steps line could be shortened to this 3 steps:
Check out the code from repo
Run docker-compose build
Start/continue coding the project
Profit - no any hands-on for 3-4-5 steps which could take minutes and bring head ache sometime.
You can dockerize (almost) any your InterSystems repo with a few following steps. Let’s go!
How to dockerize the repo and what does this mean?
Basically, the idea is to have docker installed in your machine which will build the code and environment into a container which will then run in docker and will work in the way developer introduced at a first place. No any "What is the OS version?", "What else did you have on this IRIS installation?".
It's every time a clean page (or a clean IRIS container) which we use to setup environment (namespaces, databases, web-apps, users/roles ) and import code into a clean just created database.
Will this "dockerize" procedure harm greatly your current repo?
No. It will need to add 2-3 new files in the root of the repo and following a few rules which you can setup on your own.
Prerequisites
Download and Install docker.
Download and install IRIS docker image. In this example, I will use full InterSystems IRIS preview: iris:2019.1.0S.111.0 which you can download from WRC-preview., see the details.
If you work with the instance which needs a key place the iris.key in the place you will use all the time. I put it on my Mac into Home directory.
Dockerising the repo
To dockerise your repo you need to add three files into the root folder of your repo.
Here is the example of dockerized repo - ISC-DEV project, which helps to import/export source code from IRIS database. This repo has additional Dockerfile, docker-compose.yml and installer.cls I will describe below.
First is Dockerfile, which will be used by docker-compose build command
Dockerfile
FROM intersystems/iris:2019.1.0S.111.0 # need be the same image as installed
WORKDIR /opt/app
COPY ./Installer.cls ./
COPY ./cls/ ./src/
RUN iris start $ISC_PACKAGE_INSTANCENAME quietly EmergencyId=sys,sys && \
/bin/echo -e "sys\nsys\n" \
# giving %ALL to the user admin
" Do ##class(Security.Users).UnExpireUserPasswords(\"*\")\n" \
" Do ##class(Security.Users).AddRoles(\"admin\", \"%ALL\")\n" \
# importing and running the installer
" Do \$system.OBJ.Load(\"/opt/app/Installer.cls\",\"ck\")\n" \
" Set sc = ##class(App.Installer).setup(, 3)\n" \
" If 'sc do \$zu(4, \$JOB, 1)\n" \
# introducing OS Level authorization (to remove login/pass prompt in container)
" Do ##class(Security.System).Get(,.p)\n" \
" Set p(\"AutheEnabled\")=p(\"AutheEnabled\")+16\n" \
" Do ##class(Security.System).Modify(,.p)\n" \
" halt" \
| iris session $ISC_PACKAGE_INSTANCENAME && \
/bin/echo -e "sys\nsys\n" \
| iris stop $ISC_PACKAGE_INSTANCENAME quietly
CMD [ "-l", "/usr/irissys/mgr/messages.log" ]
This Dockerfile copies installer.cls and the source code from /cls folder of repo into /src foler into the container
It also runs some config settings, which give admin user %All role, infinite password ‘SYS’, introduces OS level authorization and runs the %Installer.
What’s in %Installer?
Class App.Installer
{
XData MyInstall [ XMLNamespace = INSTALLER ]
{
<Manifest>
<Default Name="NAMESPACE" Value="ISCDEV"/>
<Default Name="DBNAME" Value="ISCDEV"/>
<Default Name="APPPATH" Dir="/opt/app/" />
<Default Name="SOURCESPATH" Dir="${APPPATH}src" />
<Default Name="RESOURCE" Value="%DB_${DBNAME}" />
<Namespace Name="${NAMESPACE}" Code="${DBNAME}-CODE" Data="${DBNAME}-DATA" Create="yes" Ensemble="0">
<Configuration>
<Database Name="${DBNAME}-CODE" Dir="${APPPATH}${DBNAME}-CODE" Create="yes" Resource="${RESOURCE}"/>
<Database Name="${DBNAME}-DATA" Dir="${APPPATH}${DBNAME}-DATA" Create="yes" Resource="${RESOURCE}"/>
</Configuration>
<Import File="${SOURCESPATH}" Recurse="1"/>
</Namespace>
</Manifest>
}
ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, pInstaller As %Installer.Installer, pLogger As %Installer.AbstractLogger) As %Status [ CodeMode = objectgenerator, Internal ]
{
Return ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "MyInstall")
}
}
It creates the namespace/database ISCDEV and imports the code from source folder -/src.
Next is docker-compose.yml file, which will be used when we run the container with docker-compose up command.
version: '2.4'
services:
iris:
build: .
restart: always
ports:
- 52773:52773
volumes:
- ~/iris.key:/usr/irissys/mgr/iris.key
This config will tell docker on what port we will expect IRIS working on our host. First (52773) is a host, second is container’s internal port of a container (52773)
in volumes section docker-compose.yml provides access to an iris key on you machine inside the container in the place, where IRIS is looking for it:
- ~/iris.key:/usr/irissys/mgr/iris.key
To start coding with this repo you do the following:
1. Clone/git pull the repo into any local directory.
2. Open the terminal in this directory and run
user# docker-compose build
this will build the container.
3. Run the IRIS container with your project
user# docker-compose up -d
Open your favorite IDE, connect to the server on localhost://52773 and develop your success with InterSystems IRIS Data Platforms ;)
You can use this 3 files to dockerize your repository. Just put the right name for source code in Dockerfile, the right namespace(s) in Installer.cls and place for iris.key in docker-compose.yml and use benefits of Docker containers in your day-to-day development with InterSystems IRIS.
Nice one Evgeny! I like it!I'm sure it'll help all those that want to leverage the agility of containers and our quarterly container releases. Thank you, Luca! Besides agility, I like the saving of the developer's time on environment setup. Docker IMHO is the fastest way for a developer to start compiling the code. And what's even better - it's a standard way from project-to-project:
docker-compose build #(when needed)
docker-compose up -d #(always)
And forgot to add, that to open IRIS terminal just call the following:
user$ docker-compose exec iris iris session iris
Very nice tip, worked fine, and with this I can use IRIS terminal from VSCode terminal VSCode, while configured to work with docker, have a short action to open terminal, through menu on connection status
Hello,
And a great tutorial, thanks! One question tho. Do you know how to pass environment variables to the %Installer? In my scenario, I would like to configure a CI/CD pipeline and define some environment variables when building the docker container and reference those variables within the %Installer to create for ex. A specific user account (username and password as env variables). How can I achieve this?
I've tried setting the env variables within the Dockerfile with ENV someEnv="1234" and try to get the variable with %System.Util.GetEnviron("someEnv") within %Installer, but it just returns an empty string.
If you have any insight or tips, it would be appreciated.
Cheers!Kari Vatjus-Anttila
Not sure why this doesn't work. Calling for experts @Dmitry.Maslennikov @Eduard.Lebedyuk Yeah, working with Environment variables is quite tricky, it may not be in a place where you would expect it. I would not recommend it for %Installer, you should focus on Variables feature there, and pass variable to setup method when you call it. It should work. Here's an example:
Installer
Dockerfile
Please consider providing sample code. 💡 This article is considered as InterSystems Data Platform Best Practice.
Announcement
Anastasia Dyubaylo · Apr 17, 2019
Hi Community!Please welcome a new video on InterSystems Developers YouTube Channel:Implementing vSAN for InterSystems IRIS Specific examples of using VMware and vSAN will illustrate practical advice for deploying InterSystems IRIS, whether on premises or in the cloud.Takeaway: I know how to deploy InterSystems IRIS using VMware and vSAN.Presenter: @Murray.Oldfield And...Additional materials to the video you can find in this InterSystems Online Learning Course.Don't forget to subscribe our InterSystems Developers YouTube Channel. Enjoy and stay tuned!
Article
Yuri Marx Pereira Gomes · Dec 22, 2020
Hi community, I used website-analyzer - an app that uses InterSystems NLP and Crawler4J to extract all website content and do NLP on it. I limited to 200 pages and discovered this:
Top 10 Concepts - business and content topics in the InterSystems site:
Other frequency concepts, see the focus in the iris speed, scale and data value:
Top 10 Concept Dominance - business relations in the InterSystems site. See the InterSystems slogans ("first data platform", "intersystems data platform" and "healthcare data platform")
See the related concepts - the marketing message is: "customer choice", "leading provider", "excellence" and intersystems geo presence in the world, very well!
It is possible see cloud words around word "InterSystems", for example: (it is important to qualify the brand)
Cloud words using paths is very impressive to see general speeach in the website, see:
It is possible do benchmark with business competitors too, run the website-analyzer and see!
Announcement
Anastasia Dyubaylo · Dec 25, 2020
Hey Developers,
See how to use the DTL Generator in InterSystems IRIS to create a data transformation:
⏯ Using the DTL Generator in InterSystems IRIS
👉🏼 Subscribe to InterSystems Developers YouTube.
Enjoy and stay tuned! Hi all,
I was wondering in which version I can find the DTL Generator, or is it still in development?
In version ' IRIS for Windows (x86-64) 2020.1.1 (Build 408U) Sun Mar 21 2021 22:04:53 EDT' I cannot find it. @Stefan.Wittmann maybe you can help answer this question? Hi @Menno.Voerman the DTL Generator is still in development and was presented at the last Virtual Summit to gather some feedback, which we are still incorporating and fine-tuning with some partners. Are you interested in the DTL generator for migrating interfaces to InterSystems IRIS or for other reasons? Hi @Stefan.Wittmann,
I was just curious about this functionality. For a project I need to convert ORU~R01 to MDM~T02 messages.
For now it's fine to write the DTL by myself (small messages). I would be happy to see this functionality in a further release. It can indeed be very useful with migration projects.
Article
Eduard Lebedyuk · Jan 12, 2021
DataGrip is a multi-engine database environment targeting the specific needs of professional SQL developers, DataGrip makes working with databases an enjoyable and productive experience.
To work with InterSystems IRIS from DataGrip you'll need to add InterSystems JDBC driver first (once per DataGrip) and after that add all your InterSystems IRIS connections.
Part 1: Add InterSystems IRIS JDBC Driver
1. Go To File → DataSources
2. Go to + → Driver
3. Set Driver properties:
Name: InterSystems IRIS
Class: com.intersystems.jdbc.IRISDriver
Add JDBC Driver file: path to /<IRIS>/dev/java/lib/JDK18/intersystems-jdbc-3.2.0.jar (version can change, also if you don't have InterSystems IRIS installed, you can download the drivers here)
Add URL Template: Basic jdbc:IRIS://{host}[:{port}]/{database} (you can add additional parameters as described here)
4. Click OK to save the driver definition.
Part 2: Add InterSystems IRIS Instance
1. In the same DataSources window go to +→InterSystems IRIS
2. Specify connection settings depending on your instance and click Test Connection. You'll see an error or connection successful.
It it's a new local installation the defaults likely are:
Host: localhost
Port: 1972
User: _SYSTEM
Password: SYS
Database: USER
3. Click OK to save.
That's it! Now you can query and explore InterSystems IRIS through Datagrip.
Announcement
Evgeny Shvarov · Jan 11, 2021
Hi Developers!
Here're the technology bonuses for the InterSystems Multi-Model Contest that will give you extra points in the voting:
InterSystems Globals (key-value)
InterSystems SQL
InterSystems Objects
Your data model
ZPM Package deployment
Docker container usage
See the details below.
InterSystems Globals (key-value) - 2 points
InterSystems Globals are multidimensional sparse arrays that are being used to store any data in InterSystems IRIS. Each Globals node could be considered a key, which you can set a value for. InterSystems IRIS provides a set of APIs, including ObjectScript commands and Native API to manage Globals.
Tools:
Managing globals in the management portal
Documentation:
Using Multidimensional Storage (Globals)
Using Globals
Articles:
Globals are Magic Swords for managing data
The art of mapping Globals to Classes
Videos:
Globals QuickStart
You can collect 2 points for using Globals via ObjectScript or Native API in your
InterSystems SQL - 2 points
InterSystems IRIS provides SQL access to data via ObjectScript, REST API, JDBC.
Tools:
VSCode SQL Tools
DBeaver
SQL in Management Portal
Other SQL tools
Documentation:
SQL Access
InterSystems SQL Reference
Articles:
Class Queries in ObjectScript
Videos:
SQL Things you should know
Collect 2 bonus points by using InterSystems SQL in your application.
InterSystems Objects - 2 points
InterSystems IRIS provides the way to store and change instances of objects in globals via ObjectScript/REST API, Native API for Java/.NET/Node.js/Python, and XEP for Java/.NET.
Documentation:
Object Access
Get 2 bonus points for the usage of Object Access in your application.
Your data model - 2 points
InterSystems IRIS can be used as a data platform that exposes your own data model API. You are able to use ObjectScript, REST API or Native API to expose your own API which provides any special data model, like Time-Series, Spatial, Graph, RDF/Triple, Column store, Document store.
Introduce any of the new data-model API and collect 2 bonus points.
ZPM Package deployment - 2 points
You can collect the bonus if you build and publish the ZPM(ObjectScript Package Manager) package for your Full-Stack application so it could be deployed with:
zpm "install your-multi-model-solution"
command on IRIS with ZPM client installed.
ZPM client. Documentation.
Docker container usage - 2 points
The application gets a 'Docker container' bonus if it uses InterSystems IRIS running in a docker container.
You can collect the bonus if you use any of the following docker templates:
IRIS Interoperability Template
Feel free to ask any questions about using the listed technologies.
Good luck in the competition!
P.S. The current tech. bonus list is subject to change before the contest starts - stay tuned with the updates. Hi participants!
In order to simplify the assessment for bonuses could you please include in the readme the links where your app uses a certain model type?
E.g.:
Object: https://github.com/intersystems-community/iris-multi-model-api-template/blob/8b3247f9dcd1e6e70274fde6bfdbe3f54ca0b95d/src/dc/Sample/MultiModelREST.cls#L85
SQL: https://github.com/intersystems-community/iris-multi-model-api-template/blob/8b3247f9dcd1e6e70274fde6bfdbe3f54ca0b95d/src/dc/Sample/MultiModelREST.cls#L95
Key-value: https://github.com/intersystems-community/iris-multi-model-api-template/blob/8b3247f9dcd1e6e70274fde6bfdbe3f54ca0b95d/src/dc/Sample/MultiModelREST.cls#L104 Hi Manager!
According to your request, I added the model corresponding link in the readme file!Hope to get technical score in the competition。
Application name:HealthInfoQueryLayer
readme file:https://github.com/ZBT-95/-IRIS-/blob/main/README.md
Thanks, Botai Zhang!
Article
Mihoko Iijima · Mar 5, 2021
**This article is a continuation of this post.**
In the previous article, how the Interoperability menu works for system integration was explained.
In this article, I would like to explain how to develop a system integration using the Interoperability menu.
To begin with, what kind of process do you want to create? While thinking about this, make the following content.
* Production
* Message
* Components
* Business Services
* Business Processes
* Business Operations
Production is a definition used to specify the components required for system integration and to store the component settings, which are configured using the Management Portal (internally stored as a class definition for Production).
For example, suppose you are creating a business service that processes files placed in a specified directory at regular intervals. In that case, it is necessary to set up exactly which directories to monitor and which files to process. A Production is prepared to store these settings.
The settings depend on the **adapter** used by the component that sends and receives data.
Adapters are classes to simplify the connection to external systems, some are protocol-specific such as Mail/File/SOAP/FTP/HTTP/SQL/TCP, and some are standards specific HL7.
Please refer to the documentation (protocol-specific adapters and adapters related to EDI documentation for more information on adapters.
Since we will define the necessary components for the **Production**, "Start Production" will start the system integration, and "Stop Production" will stop the system integration.
The development required to complete the Production is the creation of the components necessary for system integration, specifically the following contents:
* Message
* Components (Business Services, Business Processes, Business Operations)
* Data conversion, etc.
The content above will be explained slowly in the articles coming after this one.
First of all, let's start **Production** using the sample **Production** and check the message process by processing data while checking the settings.
Sample can be downloaded from https://github.com/Intersystems-jp/selflearning-interoperability.
To use a Container, download the sample code using the git clone, navigate the clone's directory, and run docker-compose up -d It's that easy!
See here for the procedure (it will take some time to create a container).
If you do not use containers, create a new namespace after downloading the sample, and import all class definition files (extension .cls) under the src folder into the created namespace.
For more information on the process of creating a namespace, please refer to the video after 07:03 of this article.
Please refer to the README for more details on the sample code.
When you are ready, access the management portal (change the web server's port number to match your environment).
****
Go to the **Management Portal > Interoperability > Configuration > Production**.
If you are using a method other than containers, connect to the namespace where you imported the source code, access [Configuration] > [Production], click the [Open] button, select [Start] > [Production], and then click the [Start] button.
※ If you are using something other than a container, you will need to make some initial settings. Please set up the contents described below before trying the following contents.

The production page will be displayed as **[**● **Component Name]** for each of the "Service", "Process", and "Operation" components.
Click on the component name to change the contents of the "Settings" tab on the right side of the screen.
For example, when you click on **Start.GetKionOperation** (single click), the display is as follows.

This component has the [HTTP Server] and [URL] settings for connecting to the Web API.
There is a [appid] field at the bottom of the settings where you can enter the API key that you get it.
There is a [lang] field near [appid] and is set "ja" ("ja" = Japanese). [lang] set language of response from OpenWeather. For English, set "en".
When you finish to set these settings , click the "Apply" button.

If you are using a container, the setup is complete. For more information, please click [here](#datasend).
* * *
#### If you are experimenting with something other than containers
Please make the following two settings in advance:
1) Configure the SSL client.
Since the Web API to be connected to will be communicated using HTTPS, configure the SSL client on the IRIS side in advance.
To match the settings of the sample production, we will use the name **[openweather]**. The settings in the Production are as follows:

**Click the Management Portal > [System Administration] > [Security] > [SSL/TLS Configuration] > [Create New Configuration]** button, enter **"openweather"** in the "Configuration Name" field, and then click in the "Save" button to finish.

2) Create a base URL for REST
In the sample production, we have configured it so that the information can be entered via REST, and the base URL for REST needs to be configured on the IRIS side.
In the sample, we set /start as the base URL. Since the Start.REST class exists in the namespace where the sample was imported, we will specify this class as the dispatch class and add %All as the application role to omit authentication at the time of access.
**Management Portal > System Administration > Security > Applications > Web Application Path > Click the "Create new web application"** button.
In the Name field, specify **/start**; in the Namespace field, specify the namespace from which the sample was imported; in the Dispatch Class field, specify **Start.REST**; in the Allowed Authentication Method field, select **"Unauthenticated"**, and save the file.
After saving, add the **%All** role to the **application role** on the "Application Roles" tab.


* * *
### Try to send data
Once you are all set up, try to use a business service to send information via REST and let it run.
The above example is a URL that supposes that someone has purchased "Takoyaki" in Osaka City.
The screen after execution is as follows.

Check the messages that have been sent to the **Production**.
In the **Management Portal > Interoperability > Configuration > Production**, click on the service below:
.png)
Select the **"Messages"** tab on the right side of the screen and click on any number below to the header field column. If you do not see it, reload your browser.

Using the Visual Trace page, you can see the information of **messages** sent and received between components. You can see that the weather information is retrieved from the Web API and sent back in the **light blue frame**.
In this way, you can use tracing to see what data was being sent and received at that time and in what order.
Throughout this article, we have confirmed that **Production** has defined the necessary components and their settings for system integration by referring to the sample code settings.
We also confirmed that we could refer to the messages flowing through the **Production** in chronological order by using the Visual Trace page.
In the next articles, we will discuss the concept behind creating the **"message"** shown in this trace and how actually to define it.
Announcement
Anastasia Dyubaylo · Feb 2, 2021
Hi Community,
We're pleased to invite you to the online meetup with the winners of the InterSystems Multi-Model Contest!
Date & Time: Friday, Febraury 5, 2021 – 10:00 EDT
What awaits you at this virtual Meetup?
Our winners' bios.
Short demos on their applications.
An open discussion about technologies being used, bonuses, questions. Plans for the next contests.
Our speakers:
@José.Pereira, Business Intelligence Developer at Shift Consultoria e Sistemas Ltda
@Renato.Banzai, Machine Learning Engineer Coordinator at Itaú Unibanco
@Henrique.GonçalvesDias, System Management Specialist / Database Administrator, Sao Paulo Federal Court
@Evgeny.Shvarov, InterSystems Developer Ecosystem Manager
You will also have the opportunity to ask any questions to our developers in a special webinar chat.
We will be happy to talk to you at our Virtual Meetup!
➡️ REGISTER TODAY! 🤩 YouTube stream here: https://youtu.be/m6xF5I6wfhg
Please join! Hey Developers!
The recording of this virtual meetup is already on InterSystems Developers YouTube:
⏯ Online Meetup with the InterSystems Multi-Model Contest Winners
Big applause to all the speakers! 👏🏼
Announcement
Anastasia Dyubaylo · Feb 3, 2021
Hi Developers,
We're pleased to invite all the developers to the upcoming InterSystems Grand Prix contest kick-off webinar!
The topic of this webinar is dedicated to our mega Grand Prix contest. We invite to use IntegratedML, Native API, multi-model, Analytics and NLP, Open API and Interoperability, IKO.
In this webinar, we'll talk about the topics to expect from participants and show you how to develop, build and deploy applications on InterSystems IRIS data platform.
Date & Time: Monday, Febraury 8 — 10:00 AM EDT
Speakers: 🗣 @Evgeny.Shvarov, InterSystems Developer Ecosystem Manager
🗣 @Thomas.Dyar, InterSystems Product Specialist - Machine Learning
So...
We will be happy to talk to you at our webinar!
➡️ JOIN THE KICK-OFF WEBINAR Hey guys,
InterSystems Product Specialist @Thomas.Dyar will be one of the webinar speakers!
Save your seat today – register here! 👈🏼 Hey Developers,
The recording of this webinar is available on InterSystems Developers YouTube! Please welcome:
⏯ InterSystems Grand Prix Contest Kick-off Webinar
Big applause to our speakers! 👏🏼
And thanks to everyone for joining our webinar!
Announcement
Anastasia Dyubaylo · Oct 12, 2020
Hi Community!
We're pleased to invite you to the Online meetup with the winners of the InterSystems Full Stack contest!
Date & Time: Friday, October 16, 2020 – 11:00 EDT
What awaits you at this virtual Meetup?
Our winners' bios.
Short demos on their applications.
An open discussion about technologies being used, bonuses, questions. Plans for the next contests.
Our speakers:
@Henrique.GonçalvesDias, System Management Specialist / Database Administrator, Sao Paulo Federal Court
@Dmitry.Maslennikov, Co-founder, CTO and Developer Advocate, CaretDev Corp
@MikhailenkoSergey, Chief Specialist, JSC Mosvodokanal
@Vasiliy.Bondar, Chief technical officer, Yagoda LLC
@Evgeny.Shvarov, InterSystems Developer Ecosystem Manager
You will also have the opportunity to ask any questions to our developers in a special webinar chat.
We will be happy to talk to you at our Virtual Meetup!
➡️ JOIN US ON THE ONLINE MEETUP! TOMORROW! Don't miss our virtual meetup! 😉
Register here ➡️ Please join today's meetup using this link.
See you! Hey Developers!
The recording of this virtual Meetup is available on InterSystems Developers YouTube:
⏯ Online Meetup with the Winners of the InterSystems Full Stack Programming Contest
Big applause to all the speakers! 👏🏼
And thanks to everyone for joining our online Meetup!
Announcement
Anastasia Dyubaylo · Nov 6, 2020
Hey Developers,
See how InterSystems IRIS Adaptive Analytics can be used to aggregate and query billions of records from a virtual cube, applying machine learning and analytics to that data.
⏯ InterSystems IRIS Adaptive Analytics in Action
👉🏼 Subscribe to InterSystems Developers YouTube.
Enjoy and stay tuned!
Announcement
Anastasia Dyubaylo · Nov 27, 2020
Hey Developers,
Are you ready to participate in the annual December competition?
Join the Advent of Code 2020 with InterSystems and participate in our ObjectScript contest to win some $$$ prizes!
🏆 Our Leaderboard 🏆
Here you can find our last year's participants.
👉🏼 Join the ObjectScript private leaderboard with 130669-ab1f69bf code.
Note: You need to sign in to Advent of code (e.g. with GitHub / Google / Twitter / Reddit account) to see the leaderboard and participate in the contest.
Prizes:
🥇 1st place - $3,000
🥈 2nd place - $2,000
🥉 3rd place - $1,000
All winners will also get a special high-level Global Master badge.
Note: InterSystems employees are not eligible for money prizes.
Win Conditions:
To win our prize you should be on the top of the ObjectScript Leaderboard and upload all the solutions in a public repository on GitHub and present the code in InterSystems ObjectScript in UDL form as presented in the template below.
⬇️ The Advent of Code 2020 contest ObjectScript template
So!
The first puzzles will unlock on December 1st at midnight EST (UTC-5).
See you then and good luck to all of you! Also join the discord channel to discuss terms, rules, everything. As we discussed and decided in discord it's OK to keep the repo private until the end of the contest. At the moment the following members are in the top 20 🔥
top 20 🔥 participants according to today's results:
Hey Devs!
Let's see the top 20 participants 🤩
Our 🔥 top 20!
Today's best 20 🔥
Top 20))
Brilliant 20 participants 🤩
Please enjoy the best 20 participants!
Only 4 days left till the end of the competition 💪
Let’s see the results!
Devs!
Please enjoy the results of the best 20🤩
Only 2 days left! Best 20 participants at the moment 🤩
Another way to look at results -- by medal count. Border is part 1 (doesn't count), background is part 2.
https://bitbucket.org/bertsarens/aoc2020/src/master/ https://github.com/uvg/AdventOfCode/tree/master/2020/COS OK. The first time I followed to the end. The code I was forced to produce by time pressure is so ugly and dirty that I refuse to publish it.Nevertheless a clear demonstration for what was ISOS (aka COS) NOT designed for:Higher mathematical calculus, matrix transformations, arrays with independent dimensions, ....[ Though I have to admit that I encountered tensors, rotors, matrix transformations, Mr. Fermat's theories, ... only at university 50+ years ago. And I didn't miss it in between ]
There was no demand for the real strengths of IRIS!In addition, I verified my personal credo that writing some code in ISOS/COSonly because it is possible makes no sense and is of no commercial value.Especially with the broad range of options in IRIS to include external code.
Article
Henrique Dias · Dec 27, 2020
How difficult is it to create a report using InterSystems Reports?
Spoiler
Super easy!
I created two simple examples using the InterSystems IRIS + InterSystems reports and will try to share how easy it is to set up these two applications together!
In the next few paragraphs, I describe a step-by-step guide to this process's ease and simplicity.
After installing the Logi Report Designer, open and choose the InterSystems IRIS icon.
For the second step, you have the option of choosing an existing Catalog or creating a new one.
We will create a new catalog, saving it in your chosen folder, then we will create a new DataSource.
Fill in the fields with the server's IP or DNS name, port, namespace, user, and password.
You can then add tables, views, and queries to your data source.
With your connection information, your tables, views, and/or queries configured, let's move on.
Clicking on the icon New, choose New Report.
For our report, I chose the Table (Group Left) as the image below:
The Table Wizard will guide us by choosing the data source, data display, grouping, summary, chart, filters, and style.
I'm using the covid table that @Evgeny.Shvarov created for the iris-analytics-template to my data source on this report sample. The chosen fields are Confirmed and Deaths.
The group for this report will be Contry_Region.
The Summary for Country_Region group will be Confirmed with the Aggregate Function (SUM), the breaking field will be Country_Region in the Footer position.
Inside the chart step, I chose the Bar Chart with Country_Region as my Category and showed values for the Confirmed field.
I'm applying one of the pre-existents styles, and the chosen one was "Classic."
The image below shows how the report shows itself after the wizard finish.
The file covid19_cases_-_WorldCount-Sample.pdf it's a "print sample" of the report.
If you want another simple sample, my repo has the file refugees_CitiesImpacted_ReportSample.pdf
Showing the report for the dataset for the Refugee Admission to the US Ending FY 2018, the dataset is available on Refugee Admission to the US Ending FY 2018 - dataset by associatedpress | data.world
If you liked the app and think I deserve your vote, please vote for iris-analytics-package!
https://openexchange.intersystems.com/contest/current
Article
Yuri Marx Pereira Gomes · Jan 25, 2021
The ObjectScript language of InterSystems IRIS has a very powerful metadata engine called XData. This feature allows the creation of metadata definitions for your classes, to be used by the compiler or by programs that will extend the standard features of the language, based on the XData definitions of its scope.
An example is IRIS Publisher, an Open Source application from the community capable of collecting all XData definitions in HTML and / or Markdown format and generating a Web Portal with all the application documentation assembled from these XData elements.
See the whole process here:
Let's see a practical example, follow the steps:
Access the link https://openexchange.intersystems.com/package/IRIS-Publisher to download IRIS Publisher.
Clone the project repository in git in a local folder of your choice: git clone https://github.com/yurimarx/iris-publisher
Open the project's source code. It is in the iris-publisher folder. We will create some XData elements.
Go to the Person class inside src / dc / Sample. Inspect the two example XData definitions between lines 34 to 43.
/// Documentation for Person in HTML
XData PersonDocHtml [ MimeType = text/html ]
{
<h1>This is the Person class</h1>
}
/// Documentation for Person in Markdown
XData PersonDocMarkdown [ MimeType = text/markdown ]
{
<h1>This is the Person class in MD</h1>
}
There are 3 large blocks, the text after ///, where it is possible to write a description of the XData element; the very definition of XData and MimeType (only HTML and Markdown are captured) and finally, between {}, all the HTML or Markdown content that will compose your documentation. In this example we use both, but we recommend defining only 1 of them.
It is possible to annotate all classes of the project, or part of them with XData, creating a very complete documentation of your application.
After documenting your classes using XData, we will compile the project documentation, in the terminal, execute: docker-compose up -d --build
After execution, your instance will be live and you will be able to run the IRIS Publisher API.
Run http://localhost:52773/swagger-ui/index.html?Url=http://localhost:52773/api/mgmnt/v1/USER/spec/crud#/default/UpdateDocConfig to define title, developer information and describe your application, use the following content as an example:
{
"SiteName":"Publisher",
"Summary":"Documentation of the Publisher",
"Description":"This an Application to generate documentation from XDATA",
"DeveloperName":"Yuri Gomes",
"DeveloperEmail": "yurimarx@gmail.com",
"DeveloperWebsite": "ymservices.tech"
}
Run http://localhost:52773/swagger-ui/index.html?url=http://localhost:52773/api/mgmnt/v1/USER/spec/crud#/default/InitiatePublisher to generate the documentation and start Documentation portal for your application.
Go to http: // localhost: 8000 and see all the documentation online!
If you enjoyed, vote in my app: https://openexchange.intersystems.com/contest/current
Announcement
Evgeny Shvarov · Feb 4, 2021
Hi Developers!
Here're the technology bonuses for the InterSystems Grand Prix Contest that will give you extra points in the voting.
Group
Bonus
Points
General
Docker
2
ZPM
2
Unit Testing
2
API and languages
REST API
2
ODBC/JDBC
2
Embedded Python usage
4
Native API in Java, Python, .NET, node.js
3
Multi-model
Globals (key-value)
2
SQL
2
Object
2
New model
3
Analytics
IRIS BI
2
IRIS NLP
2
InterSystems Reports
3
AI/ML
Integrated ML
4
Python or Julia Gateway
3
Interoperability
BPL
3
Custom Adapter
2
PEX
4
Workflow Engine
2
FHIR
FHIR Server REST API
3
FHIR SQL Scheme usage
2
Healthcare Data Transformations
3
Total
58
Below are the details and useful links on all the technical bonuses.
General bonuses
ZPM Package deployment - 2 points
You can collect the bonus if you build and publish the ZPM(ObjectScript Package Manager) package for your Full-Stack application so it could be deployed with:
zpm "install your-multi-model-solution"
command on IRIS with ZPM client installed.
ZPM client. Documentation.
Docker container usage - 2 points
The application gets a 'Docker container' bonus if it uses InterSystems IRIS running in a docker container. Here is the simplest template to start from.
Unit Testing - 2 points
Applications that have Unit Testing for the InterSystems IRIS code will collect the bonus.
Learn more about ObjectScript Unit Testing in Documentation and on Developer Community.
InterSystems IRIS API
InterSystems IRIS REST API usage - 2 points
You get the bonus if you access InterSystems IRIS via REST API in your Full-Stack application. You either can build the REST API by yourself, or use any built-in or install it via ZPM. Learn more on InterSystems REST API.
Embedded Python usage - 4 points
Embedded Python needs a certain docker image, e.g. this one:
intersystemsdc/iris-ml-community:2020.3.0.302.0-zpm
See the related video.
Here is the template which shows how Embedded Python works and how to make a ZPM package to deploy it.
InterSystems Native API usage - 3 points
You get this bonus if you access the data in your Full-Stack application using any of the InterSystems Native API options: .NET, Java, Python, Node.js. Learn more here.
InterSystems JDBC usage - 2 points
InterSystems IRIS provides a JDBC driver to access the data. You get the bonus if you refer to the data in your Full-Stack application using SQL and InterSystems JDBC.
Multi-model bonuses
InterSystems Globals (key-value) - 2 points
InterSystems Globals are multidimensional sparse arrays that are being used to store any data in InterSystems IRIS. Each Globals node could be considered a key, which you can set a value for. InterSystems IRIS provides a set of APIs, including ObjectScript commands and Native API to manage Globals.
Tools:
Managing globals in the management portal
Documentation:
Using Multidimensional Storage (Globals)
Using Globals
Articles:
Globals are Magic Swords for managing data
The art of mapping Globals to Classes
Videos:
Globals QuickStart
You can collect 2 points for using Globals via ObjectScript or Native API in your
InterSystems SQL - 2 points
InterSystems IRIS provides SQL access to data via ObjectScript, REST API, JDBC.
Tools:
VSCode SQL Tools
DBeaver
SQL in Management Portal
Other SQL tools
Documentation:
SQL Access
InterSystems SQL Reference
Articles:
Class Queries in ObjectScript
Videos:
SQL Things you should know
Collect 2 bonus points by using InterSystems SQL in your application.
InterSystems Objects - 2 points
InterSystems IRIS provides the way to store and change instances of objects in globals via ObjectScript/REST API, Native API for Java/.NET/Node.js/Python, and XEP for Java/.NET.
Documentation:
Object Access
Get 2 bonus points for the usage of Object Access in your application.
Your data model - 2 points
InterSystems IRIS can be used as a data platform that exposes your own data model API. You are able to use ObjectScript, REST API or Native API to expose your own API which provides any special data model, like Time-Series, Spatial, Graph, RDF/Triple, Column store, Document store.
Introduce any of the new data-model API and collect 2 bonus points.
IRIS Analytics Bonuses
InterSystems IRIS BI - 2 points
InterSystems IRIS Business Intelligence is a feature of IRIS which gives you the option to create BI cubes and pivots against persistent data in IRIS and deliver then this information to users using interactive dashboards. Learn more.
The basic iris-analytics-template contains examples of IRIS BI cube, pivot, and a dashboard.
InterSystems IRIS NLP (iKnow) - 2 points
InterSystems NLP a.k.a. iKnow is an InterSystems IRIS feature and is a library for Natural Language Processing that identifies entities (phrases) and their semantic context in natural language text in English, German, Dutch, French, Spanish, Portuguese, Swedish, Russian, Ukrainian, Czech and Japanese.
Learn more about iKnow on Open Exchange.
Examples:
Covid iKnow Text Navigator
Samples Aviation
and more
Use iKnow to manage unstructured data in your analytics solution and get 1 bonus point.
InterSystems Reports - 3 points
InterSystems Reports is a feature of InterSystems IRIS which lets you design printing reports, send them via email by schedule, and deliver interactive reports for clients. InterSystems Reports is a repackaging of Logi Report (formerly named JReport®), a product of Logi Analytics®. Learn more in Documentation.
Check the Github repo with examples of InterSystems Reports.
Also, watch the video with the demo of InterSystems Reports and try with the Learning Lab.
You can download InterSystems Reports designer and server in the WRC download section.
License keys for InterSystms Reports Designer and Server will be available in Discord.
AI/ML
IntegratedML - 3 points
IntegratedML is a feature of InterSystems IRIS that expands SQL with a set of ML instructions that let you simplify and automate AI and Machine learning calculations for your solution. Learn more on IntegratedML.
You need special images of IRIS to use IntegratedML, check it here.
Examples:
A basic integratedML template
Several examples on Open Exchange
Usage of IntegratedML in your IRIS Analytics solution gives you one extra point.
2. Python Gateway usage - 2 points
Python Gateway is an addon to InterSystems IRIS which gives you the way to use Python in the InterSystems IRIS environment:
Execute arbitrary Python code.
Seamlessly transfer data from InterSystems IRIS into Python.
Build intelligent Interoperability business processes with Python Interoperability Adapter.
Save, examine, modify and restore Python context from InterSystems IRIS.
Learn more about Python Gateway.
You can use the Python Gateway template, which includes IntegratedML too.
Interoperability Bonuses
Business Process BPL or Business Rules Usage - 2 point
One of the key features of IRIS Interoperability Productions is a business process, which could be described by BPL (Business Process Language).
Learn more on Business Processes in the documentation.
Business Rule is a no-code/low-code approach to manage the processing logic of the interoperability production. In InterSystems IRIS you can create a business rule which you can create visually or via the ObjectScript representation.
You can collect the Business Process/Business Rule bonus if you create and use the business process or business rule in your interoperability production.
Business Rule Example
Learn more on Business Rules in the documentation
Custom Interoperability Adapter Usage - 2 point
InterSystems Interoperability production can contain inbound or Outbound adapters that are being used to communicate with external systems by business services and operations of the production. You can use out-of-the-box adapters (like File, or Email) or develop your own.
You get the bonus if you develop your own custom inbound or outbound adapter and use it in your production.
Example of an adapter
Learn more on adapters
Production EXtension (PEX) Usage - 4 points
PEX is a Java or .NET extension of Interoperability productions.
You get this bonus if you use PEX with JAVA or .NET in your interoperability production.
PEX Demo
Learn more on PEX in Documentation
Workflow Engine Usage - 2 points
Workflow Engine is a part of IRIS Interoperability which could be used to automate the distribution of tasks among users.
You get this bonus if you use include the usage of Workflow Engine in your interoperability production.
Learn more on Workflows in Documentation.
There are Community modules WorkflowAPI and WorkflowUI-ngx which provide a nice UI layer on Angular for the Workflow engine.
FHIR Bonuses
FHIR Server REST API usage - 3 points
You get the bonus if you use the REST API endpoint of the FHIR Server in InterSystems IRIS for health. You can take the IRIS-FHIR-Template which prepares the FHIR server during the docker image building. The documentation for FHIR API 4.0.1 could be found here. Learn more in InterSystems IRIS for Health documentation.
FHIR SQL Schema usage - 2 points
You can collect this technology bonus if you use FHIR SQL Schema in the SQL queries of your application. You can use this schema e.g. for making an FHIR Analytics solution. Use HSFHIR_I0001_R for resources schema for full resources and HSFHIR_I0001_S schema to search with SQL for resources. Check the examples in the template.
Healthcare standards transformations - 3 points
InterSystems IRIS for Health contains Healthcare Interoperability modules that help to perform data transformations from different healthcare standards to FHIR and vice-versa. Make CDA to FHIR, HL7v2 to FHIR, or any other transformations in your application to collect this bonus. See the examples of HL7v2 to FHIR and CDA to FHIR transformations. Learn more in the documentation.
The list of bonuses is subject to change. Stay tuned! The part on Embedded Python is updated:
here is the template that could be taken as a foundation to build an Embedded Python solution with IRIS.
here is an article that describes Embedded Python usage and packaging with ZPM for deployment.