#Business Operation

4 Followers · 262 Posts

InterSystems Ensemble provides specialized business operation classes that use specific outbound adapters to communicate with external systems and UI.

Documentation.

Question Thembelani Mlalazi · Feb 10, 2025

I have an operation using $ZF this operation ran and did not error but the job has been active and it can not be stopped I have tried stopping it from the front end and through the terminal using ##class(ENSLIB.Job).%New() Stop method. Now my production will not update even if I add a new item to the production I cannot update the item is there a way to force stop  this job.

4
0 236
Question Yuhong Snyder · Jan 22, 2025

Hello,

I hope this is a simple ask..

basically I need to create local files daily at a certain time for example 11:30pm.

1. file name needs to be like  xxx__20250113.txt , the date part should be next day's timestamp with format YYYYMMDD, so I will write about 17 files like that with different names.

2. write a dummy hard coded word for example “Dummy Word” in the file.  the file eventually will be used by other operations to add hl7 message on top of this  in it with the live interface message. 

3. this needs to be done every night at 11:45pm

So how am I going to implement this?

     1.

0
0 121
Article Tani Frankel · Jan 19, 2025 1m read

In your Interoperability Production you could always have a Business Operation that is an HTTP client, that uses OAuth 2.0 for authentication, but you had to customize the Operation for this authentication methodology. Since v2024.3, which was lately released, there is a new capability, providing new settings, to handle this more easily.

0
0 189
Article Kate Lau · Dec 29, 2024 4m read

Git link: https://github.com/ecelg/InterSystems-IRIS-as-a-Spotify-REST-client

Recently, I come up an idea in my mind that how can I put my playlist on IRIS.🧐

At the same time, I was told to pay for my Spotify subscription💸💸... ooo.. how about to get some data from the Spotify API... so I started to do study about it.

Like most of the development, let's start from Documentation of  the API https://developer.spotify.com/documentation/web-api

In order to get the data, i am required to request an access token from for the token endpoint URL.🧐

curl -X POST "https://accounts.spotify.com/api/token" \
2
2 318
Question Jacopo Magliani · Nov 4, 2024

I am developing a business operation that receives a request, creates a message with the data contained in it and sends it to an outlook email. For testing purposes both the sender and the destination are the same email account
This is the code:
ClassBO.AlertEmailSenderExtendsEns.BusinessOperation{

ParameterADAPTER = "EnsLib.EMail.OutboundAdapter";
PropertyAdapterAsEnsLib.EMail.OutboundAdapter;
ParameterINVOCATION = "Queue";
MethodOnMessage(pRequestAsMessages.AlertMsgToEmail, OutputpResponseAsMessages.AlertResponse) As%Status
{
    setsc = $$$OK
    Setmsg = ##class(%Net.MailMessag
7
0 297
Article Lorenzo Scalese · Nov 15, 2020 8m read

Hi Community,   OpenAPI-Client Gen has just released, this is an application to create an IRIS Interoperability Production client from Swagger 2.0 specification.   Instead of the existing tool ^%REST that creates a server-side REST application, OpenAPI-Client Gen creates a complete REST Interoperability Production client template.

Install by ZPM:

zpm "install openapi-client-gen"

  How to generate production from Swagger document?   It's very simple.

Open a terminal and execute:

Set sc = ##class(dc.openapi.client.Spec).generateApp(<applicationName>, <Your Swagger 2.0 document>>)

  The first

12
0 1335
Question Scott Roth · Oct 2, 2024

I have been trying to track down an issue we are seeing in our TEST environment with Memory usage.

We have Several BP's for years now that take a HL7 message, parse it apart, and make calls to a Custom EnsLib.SQL.OutboundAdapter to have it execute Insert/Select/Update/Delete stored procedures against a MS SQL Database via JDBC connection. We are using Microsoft's JDBC 12.2 driver to do this.

What we are seeing is that IRIS.WorkQueue globals are being defined for these calls but then the IRIS.WorkQueue is not being cleaned up and taking up large amounts of Memory.

I have tried ensuring the

5
0 177
Question Nick Petrocelli · Aug 28, 2024

Hello all,

On one of my team's systems, we utilize a business operation with the EnsLib.SQL.OutboundAdapter to make SQL queries to another IRIS system using JDBC. To authenticate the connection, we utilize a user account on the target system.

We recently had a failure where this user account expired due to inactivity, causing all queries to error until the account was reactivated on the target system.

6
0 206
Article Keren Skubach · Aug 19, 2024 4m read

Accessing an Azure cloud storage to upload/download blobs is quite easy using the designated %Net.Cloud.Storage.Client class API methods, or using the EnsLib.CloudStorage.* inbound/outbound adaptors.

Note that you'll need to have the %JavaServer External Language Server up and running to use the cloud storage API or adaptors, since they both use the PEX framework using the Java Server.

Here is a quick summary:

Azure Blob Storage is accessed using a connection string that looks similar to this:

DefaultEndpointsProtocol=https;AccountName=abcdefscleanisr;AccountKey=n3mWskdjgfhklsghdfjaskhgkjdfizqMWJ5
0
3 588
Article Guillaume Rongier · Jul 26, 2024 5m read

It's been a long time since I didn't write an update post on IoP.

image

So what's new since IoP command line interface was released?

Two new big features were added to IoP:

  • Rebranding: the grongier.pex module was renamed to iop to reflect the new name of the project.
  • Async support: IoP now supports async functions and coroutines.

Rebranding

The grongier.pex module was renamed to iop to reflect the new name of the project.

The grongier.pex module is still available for backward compatibility, but it will be removed in the future.

Async support

IoP supports async calls for a long time, but it was not

5
0 354
Question Scott Roth · Jul 5, 2024

I have a question about using OnInit() within a Ens.BusinessOperation.

When you include OnInit(), does OnInit() only execute when you start a Business Operation? Or does it execute OnInit () every time you send a REST request to the operation. I am trying to pinpoint when the best time is to execute the POST command to get the Token

I am needing to get a Bearer Token from a REST POST call and return the Authorization key prior to making the rest of the REST calls to pull down data.

When not using OAuth, what have you done to get the Token prior to executing any Requests?

Thanks

Scott

13
0 308
Question Scott Roth · Aug 1, 2024

As I begin our adventure into using an External FHIR Repository, I wanted to see what opinions people have about a design Idea I was working on. 

I want to create a way that my Team has the ability to send a Message Type, and the system knows from that Message Type which FHIR queries to execute and return the Response back to the user, sort of like a FHIR Query Hub. Does this sound reasonable?

While I know that it can be done directly in Object Script, I was trying to incorporate using a Business Process, and Operation for the Trace elements, since most of my team develops within the Management

0
0 102
Article Kate Lau · Mar 12, 2023 1m read

Add a credential to login the FHIR REST interface - in this case only consider a basic authentication

 

Add Service Registry  - in this case only consider a basic authentication

- setup a HTTP service

- input the Path to the FHIR Server

- input the URL to the FHIR service

- use the credential profiled
 

 

Add a "HS.FHIRServer.Interop.HTTPOperation"

Choose the Service Name

Test the FHIR Client

Trace the test result

6
1 722
Question Mark OReilly · May 18, 2023

Trying to pass pdf to save to custom file  using default Trying to pass pdf to save to custom file  and %f. but oriignal filename didn't send (it does in terminal). What is missing from setting filename from stream? can the file passthrough not out of box use outputfilename or has wrong default one been sent. 

set fname="ThisHasBeenChanged.pdf"Set test = ##class(File.EpacsPDF).%OpenId(1)
set tempStream=##Class(%Stream.FileCharacter).%New()
Set sendstream = ##Class(Ens.StreamContainer).%New()
 
set sendstream.OriginalFilename=fname
set sendstream.OutputFilename=fname
Set tempStream=
5
0 363
Article Kurro Lopez · May 21, 2024 9m read

Continuing with the series of articles on voice file management, we are going to see how we can convert text into audio and receive the file with the chosen voice.
We will also explore how a service from OpenAI can help us analyze a text and determine the mood expressed in it.
Let's analyze how you can create your own voice file and how it can “read” your feelings.

0
2 484
Question Mary George · Apr 25, 2024

Hi Team, 

Is there any way to disable all operation ( or services) in a production entirely? 

For example when restoring from one HealthShare environment to another we may need to get the configs (IP, port, ssl etc ) updated before staring the operation. We set the production autostart to disabled but still need to disable the operation one by one if we want to start production without operations enabled.  

Thank you for your help. 

6
0 370
Question Pietro Di Leo · Apr 10, 2024

Hello everyone,

I'm currently working on a business operation that employs a retry mechanism with a FailureTimeout = -1. So, this BO attempts to resend the message at the end of a RetryInterval of n seconds (n is configurable).

What I would like to achieve is to set a timer that runs in parallel with the sending mechanism so that, If I don't receive a response within m seconds (also is configurable and m<=n) from the initial message send (with RetryCount = 1), an alert or something similar is triggered.

4
1 459
Question Colin Brough · Apr 8, 2024

We are writing a custom Business Operation to interact with a downstream SOAP web-service. Classes for the SOAP operation were originally generated using the SOAP Wizard, then modified. This is functioning OK, but we'd now like to set the ReplyCodeActions setting on the operation and are struggling to make it visible via the management portal. How can we achieve this?

The classes are structured like this:

  • The Operation uses class TNHS.SOAPclassExtra
  • TNHS.SOAPclassExtra  Extends TNHS.SOAPclass
  • TNHS.SOAPclass  Extends Ens.BusinessOperation
  • Ens.BusinessOperation has a property ReplyCodeActions
1
0 238
Article Ewan Whyte · Mar 19, 2024 3m read

Introduction

There is a Link Procedure Wizard option within the Management Portal (System > SQL >Wizards > Link Procedure) which I had reliability issues with so I decided to use this solution instead.

Problem

You need to query an external SQL database to use the response within a namespace. This guide is assuming that you already have a working stored procedure in SSMS although you could instead use a SQL block within the operation. Stored procedures in SSMS are preferred to maintain integrity, Embedded SQL can get very confusing if you have a complicated SQL statement.

In this example, I am

2
1 511
Question Fahima Ansari · Apr 1, 2024

In The Business Process and the Business Operation, I am using the following code to get the value of TimeCreated and TimeProcessed 

BP:

%Ensemble("Process").%PrimaryRequestHeader.TimeCreated

%Ensemble("Process").%PrimaryRequestHeader.TimeProcessed

BO:

..%RequestHeader.TimeCreated

..%RequestHeader.TimeProcessed

But I am trying to use ..%RequestHeader.TimeCreated in Business Service it is not storing any value.

How to get the value of TimeCreated and TimeProcessed in Business Service?

5
0 190
Question Emil Odobasic · Mar 5, 2024

Hello everyone!
So, I am supposed to receive a REST-request into my production, and I need to send it, exactly as I received it, to another server.
I am struggling to find any good info on this, and have a hard time coming up with a good approach.
What would be the easiest way to do this?
- I have so far thought about possibly doing it with an EnsLib.REST.GenericService and then sending it with an EnsLib.REST.GenericOperation.
- I have also thought about manually creating a rest-service and somehow using %request and sending it directly if that would be possible.

I would be very thankful if I could

4
0 339
Question Patty Aguirre-Romero · Feb 23, 2024

Hi All,

When resending HL7 messages out, the receiving system rejects the message indicating the "Message Control ID already exists" (see error below). Iris retries resending the same message until the receiving system crashes and the BO disconnects in Iris. I would like to suspend the message when Iris receives that error and move on to the next message. Is this possible? Can it be handled by the BO Reply Code Actions settings? What reply code actions should I use? 

The error comes back when using the default Reply Code Actions ':?R=RF,:?E=S,:~=S,:?A=C,:*=S,:I?=W,:T?=C'

ERROR <Ens>ErrGeneral:

4
0 640