#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 Ed de Moel · Aug 29, 2019 7m read

Some time ago, InterSystems introduced the concept of %DynamicObjects.
This feature is a powerful tool that makes it very easy to convert any string of JSON text to objects and vice versa.
However, in the work that J2 Interactive is doing for our customers, there are a couple of things that "need some tweaking".

Very often, we create REST services for our customers. Those services have a payload (in JSON format) that contains information that our customer expects in the form of an object that is proprietary to them.

3
2 1382
Discussion Evgeny Shvarov · May 1, 2019

Hi Community!

Sometimes I meet a method which accepts 10+ parameters.

And often I need only the 8th parameter  to  pass. And I call the method something like:

do ##class(Some.Feature).Method(,,,,,,,"flag")

And I don't like this method when I call it like this cause, you know, often I just miss the number of commas and raise some other flag I wanted.

How do you avoid this situations? 

If you meet such a code, how do you call it and sure that you didn't miss the number of ","?

What is a good number of parameters in a method and f you need to pass more parameters in a method what do you do?

27
1 1859
Question Rodolfo Moreira dos Santos · Aug 21, 2019

Hello, I have a task created in my task manager, calling my Business Service class, and it's working fine.
But I need to know the ID of the task, I searched within the class  %SYS.Task.Definition and found nothing related.

Class Example.Tasks Extends %SYS.Task.Definition{Property BusinessService As %String [ InitialExpression = "Example" ];Method OnTask() As %Status{
  SET tSC = $$$OK
  TRY {
  
  SET tSC = ##Class(Ens.Director).CreateBusinessService(..BusinessService,.tBS)
  SET tRequest = ##class(Ens.Request).%New()
  SET tSC = tBS.OnProcessInput(tRequest,
7
0 570
Article Jean Millette · Aug 22, 2019 3m read

Our team is reworking an application to use REST services that use the same database as our current ZEN application. One of the new REST endpoints uses a query that ran very slowly when first implemented. After some analysis, we found that an index on one of the fields in the table greatly improved performance (a query that took 35 seconds was now taking a fraction of a second).

We saw this improvement on our development system and our test system. However, when we moved the code to the production system, the query still took “forever”. What went wrong?

4
0 569
Discussion Evgeny Shvarov · Aug 18, 2019

Hi Developers!

InterSystems IRIS stores everything in globals and if we use ObjectScript classes to persist data class documents globals it uses in storage. But if you use globals for calculations, temporary storages, for special indexes or for some other purposes - how do you document it?

Possible options which come to my mind:

1. Macro

#define Array ^MyGlobal

usage:

s $$$Array(1)=1

2. Class parameter

Parameter Array ="^MyGlobal";

Usage:

s @(..#Array)@(1)=1

3. Documentation comment

Just document it to have it in a class documentation

/// ^MyGlobal is used to store my data

What do you do?

3
0 428
Article Jose-Tomas Salvador · Aug 14, 2019 5m read

Object Synchronization is a feature that has been around for a while, since Caché days, but I wanted to explore a bit more how it works. I've always thought that database automatic synchronization is complex by nature but, for some particular scenarios shouldn't be so hard. So I considered a very simple use case (OK, perhaps the typical one, I'm not discovering anything... but if it's common and it works, it's good wink ). You can download from GitHub and compile it into your system, generate sample data and play a bit with

1
2 570
Question David.Satorres6134 · Aug 19, 2019

Hi all,

One of the most useful features for me in IRIS was the queue page. From there, I could see how the different elements (BS, BP & BO) from a production were behaving, thanks to the possibility of auto-refresh every second. Great thing.

But we have updated to 2019.1 and this possibility is gone... we need to refresh manually! So, is there any way to set a parameter somewhere to have the queues status refreshed automatically?

Thanks a lot.

1
2 448
Question Eduard Lebedyuk · Aug 17, 2019

 I have two local instances:

  • IRIS for Windows (x86-64) 2018.1.2 (Build 626_3U) Wed Jun 12 2019 19:07:59 EDT
  • IRIS for Windows (x86-64) 2019.1 (Build 510U) Thu Mar 14 2019 14:13:37 EDT

I'm using Java Gateway to talk to external system.

Both instances are using the same:

  • jar
  • generated class
  • java version


They are calling the same method with this java signature:

package isc.rabbitmq;
public class API {
    public void sendMessage(byte[] msg) throws Exception {}
}

On the InterSystems IRIS side I'm calling it like this:

set sc = ##class(%Net.Remote.Service).OpenGateway(gatewayName, .
1
1 277
Question Luis-Ángel Pérez-Ramos · Aug 1, 2019

Hi! I am creating a Jasper Report using IRIS like DB, I've created my Data Adapter to connect with my DB configuring the JDBC connector and it works perfectly:

But when I try to create a report connecting to my DB I am getting this error:

This is the error in detail: 

java.sql.SQLException: Communication link failure: Socket closed
    at com.intersystems.jdbc.OutStream.send(OutStream.java:48)
    at com.intersystems.jdbc.IRISDatabaseMetaData.executeCatalogQuery(IRISDatabaseMetaData.java:865)
    at com.intersystems.jdbc.IRISDatabaseMetaData.getTableTypes(IRISDatabaseMetaData.java:679)
    at com.

1
0 716
Article Henry Pereira · Apr 11, 2019 10m read


 

Hello everyone,

I was first introduced to TDD almost 9 year ago, and I immediately fell in love with it. 
Nowadays it's become very popular but, unfortunately, I see that many companies don't use it. Moreover, many developers don't even know what it is exactly or how to use it, mainly beginners.

Overview

My goal with this article is to show how to use TDD with %UnitTest. I will show my workflow and explain how to use cosFaker, one of my first projects, which I created using Caché and recently uploaded to OpenExchange.

So buckle up and let's go.

What is TDD?

7
10 1689
Question Thomas Schroyen · Apr 11, 2019

Hello gentlemen,

here is my question: I would like to delete files one by one (not all at a time because I need to check somethinkg to delete it or not) in a defined folder but how can I handle it?  I have used the extension :

EnsLib.File.PassthroughService

But it only works when a file is moved in my folder. But I want to launch my program everyday (with a planifier) in the purpose to delete file that more that 2 months old.

6
0 2017
Announcement Dmitry Maslennikov · Jun 10, 2019

Hi all, I have released the latest version of VSCode extension for ObjectScript already a month ago, and finally a time for the info about this new release.

So, what's new in the release:

What's new in this version

  • added export setting "objectscript.export.addCategory" if enabled uses the previous behaviour, adds category folder to export folder, disabled by default
  • added Server actions menu, by clicking on server info from status bar. Open Management portal, Class Reference and toggle connection.
  • Class Suggestion in ##class, Extends, As, CompileAfter, DependsOn, PropertyClass
  • $SYSTEM suggestion by Classes from %SYSTEM
  • Import and compile folder or file by context menu in File Explorer
  • Server Explorer, now possible to open any other namespace
  • Macros suggestion

For details how it works now, look further.

14
5 1065
Job Amanda Duff · Aug 8, 2019

An exciting position has arisen for a Junior Application Support Analyst in an established support team at CDS Computer Design Systems Ltd  CDS is an independent SME, based near Manchester City Centre, specialising in the Oil and Gas distribution software market for over 45 years with strong ties throughout the industry https://www.codas.com

 The role will suit candidates looking to enter, or are at the start of their career in, the software industry who want to provide good customer service, enjoy finding solutions for problems and are enthusiastic about software and technology.

0
0 430
Job Amanda Duff · Aug 8, 2019

An exciting position has arisen for an Application Support Analyst 3rd Line, in an established support team at CDS Computer Design Systems Ltd.  CDS is an independent SME, based near Manchester City Centre (United Kingdom) specialising in the Oil and Gas distribution software market for over 45 years with strong ties throughout the industry - https://www.codas.com

The role will suit candidates looking to work in the software industry who want to provide good customer service, enjoy finding solutions for problems and are enthusiastic about software and technology.

0
0 393
Question Sergio Martinez · Aug 6, 2019

Hi,

I have a method that has multiple parameters and is normally used from other classes in ObjectScript. Most of the parameters have default values. Withing the server code that's perfect. In some areas I can call myMethod(,,"sometext") or myMethod(tVariab) and thats fine... I use it as it's required in each place.

But now I want to expose it as a REST service so I need to buld a kind of wrapper.

3
0 1059
Article David Crawford · Jul 31, 2019 2m read

IRIS provides us with anti login CSRF attack mitigation, however this is not the same as a CSRF attack, as login attacks only occur on the login form. There are currently no built-in tools to mitigate CSRF attacks on api calls and other forms, so this is a step in mitigating these attacks.

See the following link from OWASP for the definition of a CSRF attack:

https://www.owasp.org/index.

5
1 838
Announcement Jacquie Clermont · Aug 5, 2019

Hi Community:

If you're interested in the future of InterSystems technology, you won't want to miss these nine Global Summit sessions on our hottest technologies:

Roadmap Sessions

  • Business Intelligence (BI) & Analytics Roadmap
  • In-Place InterSystems IRIS™ Conversions 
  • InterSystems IRIS Adoption Guide
  • InterSystems IRIS Cloud Roadmap
  • Partner Hub: An Overview
  • Personas: Your Team's Quiet Partners
  • Selling InterSystems to Your Manager
  • Showcase: InterSystems IRIS Directions
  • User Experience Feedback: Focus on BI

REGISTER SOON. Early bird rates end August 30.

Thank you,

Jacquie

0
0 341
Question Evgeny Shvarov · Aug 3, 2019

Hi developers!

Every day coding with IRIS and docker I call the following 3 commands in VSCode terminal. Always the same for any projects:

docker-compose build   ; to build the container

docker-compose up -d   ; to run the IRIS in container

docker-compose exec iris iris session iris ; to open the IRIS terminal

Is there any way to map the key sequence which will type me the rest? 

e.g.

irisb for docker-compose build,

irisup for docker-compose up -d,

irist for docker-compose exec iris iris session iris

I know and use keyboard sequences for mac, but it doesn't work in VSCode terminal :/

2
0 576