Find

Question
· Oct 5, 2023

Routing rule equivalence question

Is there a difference in outcome between the two screengrabs below?

In both cases, when  certain conditions are met, a transformation is called and the output sent on to two targets. In the first case we surmise the transformation is called twice, and the output of the first run sent to the first target, the output of the second run to the second target. In the second case we surmise the transformation is called once, and the output duplicated and sent to the two targets. 

  • Are there any cases where they would not be functionally the same (eg because of side-effects of the transformation?)
  • Could there be performance differences - from only calling the transformation once rather than twice? If so, how significant could those be in a Production handling 40K-50K messages a day (Healthcare, HL7), especially since this pattern of coding is replicated in several places across the production.

2 Comments
Discussion (2)1
Log in or sign up to continue
Question
· Oct 4, 2023

ObjectScript error: <CLASS DOES NOT EXIST>removeprj+7^%occClass *

Hi all,
I am trying to compile my swagger class file with swagger JSON which is a valid JSON as I created it and verified from swagger.io 2.0 spec.
But getting below error. I am not very clear with the error message. Please help me resolve the same.

ObjectScript error: <CLASS DOES NOT EXIST>removeprj+7^%occClass *SwaggerClass

> ERROR #5091: An error has occurred while removing projection SwaggerClass:Reference.

> ERROR #5030: An error occurred while compiling class 'SwaggerClass'

1 Comment
Discussion (1)2
Log in or sign up to continue
Announcement
· Oct 2, 2023

InterSystems Ideas News #8

Hey Community!

Welcome to the 8th edition of the InterSystems Ideas news bulletin! Here's what you can expect from it:

​​​​✓ New video describing all pages of the Ideas Portal  

✓ Ideas implemented since the previous news bulletin

⏯Watch the video: Join the Hall of Fame

 

 Ideas Portal contains, in addition to the "Ideas" page, 4 new pages:

  • Portal Guide
  • News
  • Polls 
  • Hall of Fame

Check them out to always be up to date about what's going on on Ideas Portal

 Since the launch of the Ideas Portal, 24 of the ideas have already been implemented by the Community members. And 6 of them were realized during the last 3 months: 

👏 Thank you for implementing and posting these ideas 👏

Stay tuned to read our next announcements!


In the meantime post your brilliant ideas, vote for existing ideas, and comment on them on our InterSystems Ideas Portal!

1 Comment
Discussion (1)1
Log in or sign up to continue
Article
· Sep 27, 2023 2m read

Listing Production Item connections recursively

If you work with Productions, highlighting connections between Business Hosts is a very convenient feature, allowing developers to get a visual representation of a data flow.

This feature works by default with all system Business Hosts. If a user writes their own Business Services, Processes, or Operations, they must implement the OnGetConnections method for this functionality to work with their custom Business Hosts (or use Ens.DataType.ConfigName properties for connections).
That said, the SMP shows only the first layer of connections of the selected Business Host. Sometimes, we need to get connections of connections recursively to build a complete data flow graph. Or we might need this connection information to check which downstream systems might be affected by a change upstream.To do all that, I wrote an Utils.Connections class, which offers the GetConnectionsJSON method. You can pass an Item ID or Item Name, and it will return you a dynamic object containing all the connections. Here's how it works. Assuming this production:


You'll get this JSON for in.REST service (##class(Utils.Connections).GetConnections("in.Rest")):

{
  "in.REST":[
    {
      "EnsLib.HL7.SequenceManager":[
        "Ens.Alert",
        {
          "Router":[
            "Ens.Alert"
          ]
        },
        "in.BO",
        "s3.BusinessOperation"
      ]
    }
  ]
}

Each item has an array of connections. If a connection has connections itself, it would be an object with an array inside, otherwise, it will be just a string.
There are also SQL queries to get connections for one item or list all connections for all items:

SELECT Utils.Connections_GetConnections(ID)
SELECT * FROM Utils.Connections_ListConnections()

Code on GitHub.

5 Comments
Discussion (5)3
Log in or sign up to continue
Article
· Sep 21, 2023 1m read

Getting started with the Jupyter Server Proxy extension for VS Code

Earlier this year I announced availability of a VS Code extension for coding in ObjectScript, Embedded Python or SQL using the notebook paradigm popularized by Jupyter. Today I published a maintenance release to correct a "getting started" problem.

Here's a video of the installation steps from the extension's README:

(video superseded by an update in a later comment)

Why not try it for yourself?

4 Comments
Discussion (4)3
Log in or sign up to continue