Article Eduard Lebedyuk · Aug 12, 2020 3m read Calling production from a REST Broker Productions often need to receive REST requests. Here's how to do that. 1. Create proxy Service: /// Empty BS we would use to send Produciton requests Class production.ProxyService Extends Ens.BusinessService { } 2. Add it to production as RESTService (or any other name). #Business Operation #Business Process (BPL) #Business Service #Interoperability #REST API #InterSystems IRIS 5 8 1 998
Article Eduard Lebedyuk · Aug 7, 2020 5m read Containerising .Net/Java Gateways (or Kafka Integration Demo) 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: #.NET #Best Practices #Business Operation #Business Service #Docker #Interoperability #Java #InterSystems IRIS Open Exchange app 7 7 1 1.3K
Article Eduard Lebedyuk · Aug 3, 2020 3m read Creating classes/tables with more than 999 properties in InterSystems IRIS InterSystems IRIS currently limits classes to 999 properties. But what to do if you need to store more data per object? This article would answer this question (with the additional cameo of Community Python Gateway and how you can transfer wide datasets into Python). The answer is very simple actually - InterSystems IRIS currently limits classes to 999 properties, but not to 999 primitives. The property in InterSystems IRIS can be an object with 999 properties and so on - the limit can be easily disregarded. #Globals #Object Data Model #Python #Relational Tables #SQL #Tips & Tricks #InterSystems IRIS 5 13 1 730
Question Eduard Lebedyuk · Jul 9, 2020 Is there a way to defermine that column is a JSON_OBJECT I got a resultset, and some columns might be a JSON_OBJECT. Is there a way (based on metadata) to determine that the column was formed from JSON_OBJECT function? set rs = ##class(%SQL.Statement).%ExecDirect(,"SELECT 1 colA, JSON_OBJECT('id':1) col2") do rs.%Display() I do not want to try parsing json. #SQL #InterSystems IRIS 0 5 0 247
Question Eduard Lebedyuk · Jul 6, 2020 How to generate runtimeconfig.json\deps.json for dependency with dotnet publish? I'm building a .Net Core Gateway container. Here's the issue. As a final step I'm building a .Net Core 2.1 library. It has a runnable dependency - .Net Gateway, which I need to start first. However dotnet publish generates .runtimeconfig.json and .deps.json only for my library and not for my dependency (.Net Gateway). Is there a way to force dotnet to generate .runtimeconfig.json and .deps.json for a dependency? I have tried: #.NET #Interoperability #InterSystems IRIS 0 2 0 8.5K
Question Eduard Lebedyuk · Jun 30, 2020 Running .Net/Java Gateways in Docker Does anyone have a Dockerfile for .Net/Java Gateways to share? I'm trying out PEX and I think being able to run it as a docker container would be great. To clarify I'm interested in container without IRIS, gateway only. #.NET #Containerization #Java #InterSystems IRIS 0 1 0 523
Article Eduard Lebedyuk · Jun 19, 2020 2m read Generate Swagger spec from persistent and serial classes Recently I needed to generate a Swagger spec from persistent and serial classes, so I'm publishing my code (it's not complete - you still need to hash out the application specifics, but it's a start). It's available here. Let's say you have these classes: #API #Best Practices #Code Snippet #REST API #InterSystems IRIS 9 14 2 1.8K
Article Eduard Lebedyuk · Jun 18, 2020 1m read Debugging Business Operations Often we need to debug a Business Operation. Tracing and logging work but sometimes you want to work with a BO as with your local terminal session. Here's how you can do that on any operating system. Windows has a great tool for debugging Business Operations - Foreground mode. In that mode Windows launches a local terminal with operation job. #Business Operation #Debugging #Interoperability #InterSystems IRIS 2 0 2 518
Article Eduard Lebedyuk · Apr 22, 2020 1m read Get VSCode to look like Studio One of the things I want from VSCode is to have a familiar Studio look. Thankfully VSCode is easily customizable so you can choose any color for any element. Here's what I got so far: To get the same look add to your settings.json: #VSCode #InterSystems IRIS Open Exchange app 6 0 1 411
Announcement Eduard Lebedyuk · Apr 10, 2020 JuliaGateway 0.5 released I'm happy to announce the release of the interface to Julia programming language for InterSystems IRIS. Execute Julia code and more from InterSystems IRIS. This project brings you the power of Julia right into your InterSystems IRIS environment: #Artificial Intelligence (AI) #Analytics #Machine Learning (ML) #InterSystems IRIS Open Exchange app 1 0 0 262
Question Eduard Lebedyuk · Apr 1, 2020 Use table-object as a part of SQL Query During runtime I build an object which is essentially a wrapper over in-memory table: col1 ... colN val11 ... valN1 val12 ... valN2 I want to use this object as a part of INSERT or UPDATE queries, based on a value of some column (the main use case one of the columns is an ID value) What's the best way to expose the object to SQL? #SQL #InterSystems IRIS 1 13 0 652
Discussion Eduard Lebedyuk · Mar 24, 2020 USER namespace in Docker For standalone installations I always recommended to use custom namespaces and not the USER namespace. However, what about Docker? In many Dockerfiles I see the creation of additional namespace, but why, if only one namespace is required? What do you think? #Containerization #Docker #InterSystems IRIS 0 2 0 284
Question Eduard Lebedyuk · Mar 22, 2020 Adjusting LD_LIBRARY_PATH in containers I'm building a container from store/intersystems/iris-community:2019.4.0.383.0 . I need to add my folder to the LD_LIBRARY_PATH so that my custom shared library would load at runtime. How can I do that? Here's what I tried: #Containerization #Docker #InterSystems IRIS 0 2 0 3.2K
Question Eduard Lebedyuk · Mar 17, 2020 Building $lb from C I have a C string and I need to build a $lb from it. This code works fine for strings shorter than 254 characters: char *str = "some string"; int len = strlen(str); int add = 2; char *list = malloc(len + add + 1); char lenChar = len + add; sprintf(list, "%c\x01%s", lenChar, str); Thought maybe someone can share the code for longer strings? #Callout #InterSystems IRIS 0 1 1 309
Question Eduard Lebedyuk · Mar 6, 2020 Force terminal to the foreground after current command finishes running Simple problem: I leave a long-running command in terminal Switch to another task(s) Remember that I need to check on my command after a few hours Is there any way to force terminal to the foreground after current command ends? This is Windows with cterm/iristerm although Putty/Kitty solution would also be nice. #Microsoft Windows #Red Hat Enterprise Linux (RHEL) #Terminal #InterSystems IRIS 1 6 0 609
Discussion Eduard Lebedyuk · Mar 6, 2020 Temporary Tables in InterSystems IRIS Temporary tables are tables available for a current process only (and destroyed when process ends). What are you approaches to creating temporary tables? #SQL #InterSystems IRIS 1 5 0 1.1K
Question Eduard Lebedyuk · Mar 4, 2020 Request Timeout in Business Processes I want to send requests from custom BP with timeout and be able to understand that timeout event happened. I thought that I need to implement OnTimeout method in my process (in either caller or callee), however it seems like OnTimeout is never called. Let's say we have this parent process: #Business Process (BPL) #Interoperability #Ensemble #InterSystems IRIS 0 2 0 731
Article Eduard Lebedyuk · Feb 11, 2020 6m read Asymmetric RSA encryption with JS and InterSystems IRIS Asymmetric cryptography is a cryptographic system that uses pairs of keys: public keys which may be disseminated widely, and private keys which are known only to the owner. The generation of such keys depends on cryptographic algorithms based on mathematical problems to produce one-way functions. Effective security only requires keeping the private key private; the public key can be openly distributed without compromising security. In such a system, any person can encrypt a message using the receiver's public key, but that encrypted message can only be decrypted with the receiver's private key. Robust authentication is also possible. A sender can combine a message with a private key to create a short digital signature on the message. Anyone with the sender's corresponding public key can combine the same message and the supposed digital signature associated with it to verify whether the signature was valid, i.e. made by the owner of the corresponding private key. (C) Wikipedia. #Encryption #REST API #InterSystems IRIS Open Exchange app 0 2 0 669
Question Eduard Lebedyuk · Jan 19, 2020 Mass XSD export I have a large amount of classes in several XML namespaces. Is there a way to generate all XSDs automatically? I've read the docs but it seems like it's a manual class-by-class process. #XML #InterSystems IRIS 0 1 0 265
Article Eduard Lebedyuk · Jan 16, 2020 2m read Python Gateway VI: Jupyter Notebook This series of articles would cover Python Gateway for InterSystems Data Platforms. Execute Python code and more from InterSystems IRIS. This project brings you the power of Python right into your 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 Other articles The plan for the series so far (subject to change). Part I: Overview, Landscape, and Introduction Part II: Installation and Troubleshooting Part III: Basic functionality Part IV: Interoperability Adapter Part V: Execute function Part VI: Jupyter Notebook <-- you're here Part VII: Dynamic Gateway Part VIII: Proxy Gateway Part IX: Use cases and ML Toolkit Intro The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. This extension allows you to browse and edit InterSystems IRIS BPL processes as jupyter notebooks. #Convergent Analytics #Machine Learning (ML) #Python #InterSystems IRIS Open Exchange app 4 0 0 632