I'm trying to catch some WorkQueue errors that are happening on 2019 but not on more recent versions.
I'm getting an error when trying to call a class method via a workQueue. It functions properly in 2024.1. When calling the method, it immediately errors. I have logging at the top of the method that never gets set.
The error being returned by Iris is simply an "ERROR #5039: An error occurred while calling function s %sc=##class(|"NS"|Path.To.Class).ClassMethod(.%p1,.%p2)"
The parameter counts match and are appropriate for the method.
In this case, a robot is nothing like Gort from the movie “The Day the Earth Stood Still” or any other humanoid robot from science fiction. Nor is this Robot the one-armed automated welder from a real-world automotive assembly line. This Robot is a program that controls another program. You might want this for automated testing or to capture application logic from an application for which you don’t have the source, and the application’s author lacked the kindness or foresight to provide an API for its capabilities.
While starting with Intersystems IRIS or Cache, developers often encounter three core concepts: Dynamic Objects, Globals & Relational Table. Each has its role in building scalable and maintainable solutions. In this article, we'll walk through practical code examples, highlight best practices, and show how these concepts tie together.
Trying to create a new SQL Storage map on existing cache Global in the following format - ^MYGLO("R",rec)=data where the 'data' is built using $zel. e.g. $zel(data,1)="p1", $zel(data,2)="p2" etc... and the ^MYGLO("R",123)=data.
I'm having 2 issues. First, using the SQL Storage map wizard, I cannot figure out how to convey data in $zel format in the "Delimiter" field.
Recently, I replaced my old laptop with a new one and had to migrate all my data. I was looking for a guide but couldn’t find anything that explained in detail how to migrate server connections from InterSystems Studio and Visual Studio Code from one PC to another. Simply reinstalling the tools is not enough, and migrating all the connections manually seemed like a waste of time. In the end, I managed to solve the problem, and this article explains how.
I am trying to use upload.csp as a template for choosing a CDV file to process. I am calling it from a zen page using this: <button caption="Import Client Consultation Extract" controlStyle="width:500px; height:100px; font-size:1.5em;"
In the Caché database, when calculating the total count based on the unique identifier of a record, the quantity is over 1.2 million. After removing duplicates based on the unique identifier and then calculating the total count, the quantity is over 400,000. When grouping by the unique identifier, it can be observed that the count for this identifier is not one. However, when performing a conditional query based on the identifier, only one record can be retrieved. Why is this the case?
For example, you start debugging the AAA function, which calls the BBB function, then goes to the CCC^ABC function in a different routine and ends up while executing XXX^XYZ. No other routines or functions are visited in this example. What I would like is to get the record of AAA -> BBB -> CCC^ABC -> XXX^XYZ. No marking each function with recording code should be involved: too time consuming, too many functions in real code.
UPD: Iris has built in %SYS.Trace for this purpose but this class is apparently absent in Cache 2017. Did not find any substitutes yet.
I have a personal copy of Cache which I use to help me with certain things. The instance resides on my Windows desktop. The apps I use a web enabled. It would be great if I could access my apps via web browser from my laptop without having to keep a copy of Cache on my laptop. It would make it difficult to keep the databases synced. So, if I restart my Cache instance, then I can use get to my apps by entering the url: http://ipadd:57772/csp/user/myapp.cls.
I'm currently planning a system upgrade from Caché (2018.1.8.766) to InterSystems IRIS (2024.1). The environment consists of one database server and three application servers connected via ECP.
I am writing a little app where I press a button on a Zen form. It calls a ZenMethod that uses zenPage.launchPopupWindow() to provide me a way to choose a file. I then click on an upload button that calls a csp cache language script file that runs on the server, that grabs the contents of the file and stuffs it into a global. I want it then close and return to the parent window to continue processing the contents of the file.
Working in healthcare IT as a young developer, especially on InterSystems TrakCare, you quickly realize one thing: it’s not just about HL7 messages or backend integrations. A hugepart of making TrakCare work smoothly for hospitals comes down to how it’s configured, customized, and supported on the application side.
Here's a practical example of how to import data from a CSV file into InterSystems CACHÉ using ObjectScript Assuming your CSV file is simple (e.g., comma-separated, with headers), you can use %Stream.FileCharacter to read it line by line and parse the data.
ClassMethod ImportCSV(filePath As %String) As %Status { Set stream = ##class(%Stream.FileCharacter).%New() Set sc = stream.LinkToFile(filePath) If 'sc Quit sc
If you are investigating complex structured Globals this can become a rather boring typing exercise. Different from Global Explorer in System Management Portal Global-Inspector allows a kind of drill-down to dig deeper and deeper by subscript levels. You also have the option to see the stored content or to show only the subscript structures. Globals storing SQL Tables are probably not so thrilling, but in SYSTEM space you find real trees with completely different branches and twigs.
Hi, I have a code that copy a method to another class for analysis purpose.
I also want this method to appear first in the source code to easily use it in VSCode with the classmethod debug button and not search it in the numerous method of the modified class. Is there a way to do such a thing? I tried the placeAfter keyword but I can't find a way to make it really work as I want. Is their other ways to control the order of methods?
Hello to all the Cache Experts out there and Happy Friday!
The company I work for uses Cache 2017.1.3 and we have been seeing intermittent errors in the Cache Error Trap when an SQL query runs. The error message looks like the error is occurring within the cached query routine that Cache auto-generates. Unfortunately, when I pulled up the routine in the SMP System Explorer, I only found an obj version, so was unable to look at any code.
Are you curious about how to run Python scripts directly in your InterSystems IRIS or Caché terminal? 🤔 Good news it's easy! 😆 IRIS supports Embedded Python, allowing you to use Python interactively within its terminal environment.
How to access the Python Shell?
To launch the Python shell from the IRIS terminal, simply run the following command:
Working on wrapping an IRIS Cache ObjectScript method that runs for a few seconds. Trying to get UI updates to show BEFORE the method runs in an async/await function. But it seems to be running synchronously rather than asynchronously . So my question is does IRIS/ObjectScript CSP pages support futures with JavaScript or does it run all synchronously.
The Interoperability user interface now includes modernized user experiences for the DTL Editor and Production Configuration applications that are available for opt-in in all interoperability products. You can switch between the modernized and standard views. All other Interoperability screens remain in the Standard user interface. Please note that changes are limited to these two applications and we identify below the functionality that is currently available.
I'm trying to print from Cache and I have setup the device, but keep getting a message that someone else is using it. this is RHEL 7.9. I have cups running and I can print from the command line. I have also issued this command: lpadmin -p KM501L -u allow:all