Hi.
Is there any example how to implement Production to exchange data with SAP repeatly?
Regards,
Matjaž
InterSystems Ensemble provides specialized business operation classes that use specific outbound adapters to communicate with external systems and UI.
Hi.
Is there any example how to implement Production to exchange data with SAP repeatly?
Regards,
Matjaž
I'm working with a REST API that will sometimes rate limit our requests by returning an HTTP 429 Too Many Requests status code. Is there a good way in a business operation to handle this by throttling our requests until we get a success response? My initial thoughts are:
set %rate = $get(%rate,1)*2, then hang %rate, then send the request to the back of the queue.kill %rateI'm wondering if there's a better way to do this.
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 .
Our solution will run completely in docker and look like this:
First of all, let's develop Java Operation to send messages into Kafka. The code can be written in your IDE of choice and it can look like this.
In short:
I have a requirement to update the Ensemble Host Settings Programmatically. Mainly the "AlertOnError,QueueCountAlert,QueueWaitAlert,InactivityTimeout" settings.
I used Ens_Config.Item (persistent) class to get the settings (list object) and then update it. But for some of the Business Host's, I dont see the above settings in the table, but present in Settings of that particular Host in Ensemble Management Portal. So my logic is not working.
Why is that and how to write a code to update the above settings for all the hosts ?
Please let me know the way to achieve my requirement.
My code.
Hello,
I created a custom business operation to copy PDF files in Intersystems Healthshare. To copy the files I used:
$ZF(-100, "", "cp", "-f", tSource, tTarget)
tSource contains the source file e.g. "/opt/var/data/dir/1821008687135422926_5849146876.pdf".
tTargetSource contains the target file "/opt/targetdir/Müller_Jörg_1821008687.pdf".
Copying files without german Umlaute works fine (e.g Smith_Robert_1821081542.pdf), but when the string contains special characters like "ä", "ö", "ü" or even "ß" copying is not successful.
Hi all,
I have a very weird error when I'm calling to a SOAP Webservice as client.
I've create all objects to invoke to this SOAP using the add-in "Assistant SOAP" in Eclipse, it has created all objects (Response, Request, Business operation WS class, etc...).
When I call to this service it retuns the following error message:
ERROR #6243: HTTP request to SOAP WebService returned unexpected CONTENT-TYPE response: text/html.
However, If I call the same WS using SOAP UI or Postman, the header of response has the content-type "text/xml", as expected.
What is
This article is a continuation of this post.
In the previous article, we reviewed how to create and define messages used to send and receive data between components.
In this article, I will explain how to create a business operation from the component creation methods.
We will quickly check the code by referring to the sample.。

| Component Name | Role |
|---|---|
| Start.FileBS | A business service that uses file inbound adapter to read files placed in a specified directory at regular |
So now that I have figured out how to send a Page via HTTP.OutboundAdapter, I have another question. I want to use a Function that all I have to do is pass two variables and it is sent to the HTTP.OutboundAdapter I created to send the Page.
So.. If I have a class file that ExtendsEns.Rule.FunctionSet, how do I force it to send a Request to my HTTP Business Operation, without having to go through a DTL, or Business Process?
Thanks
Scott
I am trying to figure out how to send a Page via a HTTP.OutboundAdapter to a URL from Ensemble.
We have a URL that I am able to pass PNo=xxxx%PMsg=xxxx as parameters to send the page to a pager.
http://xxxxx.xxxxx.xxx/Employee/Tools/Paging/SendPage.aspx?PNo=1817&PMs…
When I send the above URL through a REST client I receive a Response of "SENT".
But when I try to send it through the HTTP.OutboundAdpater I do not get a response.
We are getting more and more request wondering if we could send/receive data via HTTPS to the outside world from within our Hospital Network. As you can imagine our Ensemble/Cache productions are not exposed to the DMZ or has access outside of the network. We only communicate with external vendors through a VPN, so communicating not using a VPN is rather new to us.
Currently there is a project to get rid of using Proxy, and instead of through a Load Balancer that can use rules to filter out traffic, which adds another layer of complexity.
I am trying to write a REST consumer the API that I am talking to expects a file to be sent over and in response I will get a file back if anyone out there has ever had a similar use case please could you kindly guide us or share some sample code please
Hi:
I've looked on many of these examples and questions how to post the JSON body but all the posts are a little complexly worded for me to follow.
so i have an EnsLib.REST.Operation
The example in ENSDEMO Directory Request says
Set tSC=..Adapter.PostURL(tURL,.tHttpResponse,"",pRequest.Body)
What i can't see is how in Demo Rest Directory request it happens to get the value of the message fields into
/// For JSON content submission
Property Body As %GlobalCharacterStream;
I have also played around with converting objects to JSON
I have a case where our EMR is sending data, but not all the values needed for the Ancillary are valued properly and causes that message to error/halt processing on the Ancillary system, not ideal but its what they do. I would expect them to still process the message except that 1 field, but they don't.
I want to add validation to make sure certain fields are valued correctly for the Vendor.
So I add some statements to take those items that don't pass this validation out to a batch file with headers.
But I want to email out that batch file.
We have a webserver which is using a port different to 443 for HTTPS communication. I can connect from the terminal session but not via the EnsLib.HTTP.OutboundAdapter.
the example used in Terminal:
set httprequest=##class(%Net.HttpRequest).%New()
set httprequest.Server="appserver"
set httprequest.Port="4999"
set httprequest.Https=1
set httprequest.SSLConfiguration="app server"
do httprequest.SetHeader("Custom","cust")
set httprequest.ContentType="application/json"
do httprequest.EntityBody.CopyFrom(jsonfile)
do httprequest.Post("/FHIR/Bundle")And this is my method using the EnsLib.
We are trying to convert some of our SQL Service Integration Service jobs from Visual Studio to Ensemble. If we execute a Stored Procedure within SQL Server Management Studio it is returning approx 12,000 rows. However when Ensemble executes the same Stored Procedure it is only returning 250 rows.
Is there a limitation to EnsLib.SQL.Snapshot?
This is how we are calling the Stored procedure
Method uspInterfaceEnsSelectPER355MC(pRequest As osuwmc.SSIS.DataStructures.InputPER355MC, Output pResponse As EnsLib.SQL.Snapshot) As %Status
{
Set SPQuery = "{ ?= call dbo.
Hello,
I am attempting to setup a DICOM Routing to Storage Production using Ensemble 2017.1. I have followed the Routing to Storage production given in Ensemble Demo Namespace. I have created association with appropriate “Presentation Context” for inbound and outbound PACS system. I am attempting send a Computed Radiography Image from one PACS to another via Ensemble but its failing when sending the image to the receiving PACS with following error :
ERROR <Ens>ErrException: <READ>zAcceptPDU+4^EnsLib.DICOM.Adapter.TCP.1 -- logged as '-' number - @' Use .
We have 3 env. using different ports schemes Is there a way to create a rule if msg comes on ports starting 22 then route it to devoperation, if it starts with 33 then route to testoperation, if its 44 route to stageoperation?
We use ExecureProcedure() to execute a stored procedure which returns a result set. But we see lot of "Invalid cursor state" errors when the result set is empty. The connection to SQL server database is made through ODBC.
ERROR #6022: Gateway failed: Fetch. + ERROR <Ens>ErrGeneral: SQLState: (24000) NativeError: [0] Message: [Microsoft][ODBC Driver 11 for SQL Server]Invalid cursor state
Here is the code snippet from the business operation class which uses EnsLib.SQL.OutboundAdapter
do ..Adapter.DSNSet(DataSourceName)
set sp = "{call sqlstoredprocedure(?,?,?)}"
set tSC = ..Adapte
HI
I want to known How to measure the time spent entire bussiness process
Two stage:
1. Business service to bussiness operator
2. bussiness operator to outside (like http, tcp) include request and response time.
Is has any method to do this?
I find the Data Import Wizard very handy. Has anyone thought of enabling the form in the application where it can be adapted for application user requirement?
csp/sys/exp/UtilSqlExImWizardContent.csp?Wizard=Import&$NAMESPACE=
When calling out to web services there are several settings of the Business Operation that play together in controlling what will happen when a response is not returned in the desired time.
Hello everyone ![]()
We are facing what seems to be a network problem while transferring HL7 messages from Ensemble/Healthshare to a distant target through TCP/IP.
Here is the version of the system in any case it could be useful: Cache for Windows (x86-64) 2017.2.1 (Build 801U) Wed Dec 6 2017 09:07:51 EST [HealthShare Modules:Core:14.02.2415 + Linkage Engine:15.03.9901]
Then the configuration of the operation:
.png)
.png)
.png)
NB high numbers for Read- and Response-Timeouts come from "long" transfers occuring sometimes, e.g. HL7 messages with about 600 segments, successfully transferred if we let them this "long" time.
Hi i have rules and i want to log them to analyse what rules executed , I want to add in the log Msg Controller Id, MRN, Value coming in the message, and my customize text telling whats wrong with this field... i have like 50 rules and at the end i can check the log table and found like 20 entries so it means 20 data issues are there for a given message control id. any advice how to to do it
.png)
You might have encountered this and not known how to prevent it, or perhaps not even noticed it...
Hi:
I have an sql outbound adapter. Sometimes we have trouble connecting to the database.
The timeout in develpment is set to 15 seconds in live it is 150 seconds as it is an always connected Buisness operation.
I thought adding E=S or/and X=S would suspend the message. Why does it not?
Is the only way around then adding something to the buisness operation itself/ creating a customised SQL buisness operation rather than EnsLib.SQL.OutboundAdapter?
Thanks
Mark
Hello All,
I have been using IRIS / Ensemble for over a decade and appreciate lot of it's functionalities and features, however besides having a UI of 80's era (which doesn't bother me), what I believe where IRIS is lacking is lack of out of the box connectors (services/operations).
If we look at IRIS's competitors for eg Mulesoft, Talend, Boomi they all have hundreds of pre-built connectors for major applications like Salesforce, SAP etc and cloud services like Azure, AWS etc to store and retrieve information and data.
Just to give an idea here is a link of Dell Boomi connectors
Messages between Business Hosts in Interoperability Production often contain object properties.
Do you define and pass them as object properties or do you define and pass them as Integers with objects conversion where required?
Why?
Hello,
We would need to know the Ens.Response SourceConfigName to identify which Operation has raised an exception.
We have tried:
$$$LOGINFO("..%Process.%PrimaryResponseHeader.SourceConfigName..: "_..%Process.%PrimaryResponseHeader.SourceConfigName) //It outputs an empty string
$$$LOGINFO("response.SourceConfigName: "_response.SourceConfigName) //It generates an exception
We would need to get from an Ens.Response which body is null, its SourceConfigName:
.png)
.png)
How could we know it? 📛
I'm cautious not to ask too many questions on here, but there really doesn't seem to be a good XML end to end guide that explains these things.
I have now a Business operation that's going to call a url like https://directory.spineservices.nhs.uk/ORD/2-0-0/organisations/Y00334?_…
I'm looking the status of the practice- I tried date but again fell flat as i wan't able to ensure i only got the end date from the first <date> tags and not any subsequent dates.
Managed to do it kinda in a class method like so
set httprequest = ##class(%Net.HttpRequest).%New()
set httprequest.
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.
Note that there's an issue with some InterSystems IRIS versions (older than 2021.1) which caused cterm launch instead of iristerm.