#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.

Article Philipp Bonin · Feb 13, 2023 3m read
Logo

In today's fast-paced and highly competitive manufacturing industry, efficient machine communication and data exchange is essential to maximize productivity and minimize downtime. That's where MTConnect comes in. MTConnect is an open, royalty-free standard that provides a common language for communication between machines, devices, and software applications in a manufacturing environment.

The MTConnect technology consists of a set of XML schemas and protocols that define the structure and format of the data to be transmitted, as well as the rules for

0
0 397
Question Clint Childs · Dec 2, 2022

What I can do:
Get a subset of HL7 messages.
Send the messages to a RecordMap (with key fields from the HL7 message).
Save each message to a file.

How can I send all messages until a set time (e.g. 9am each day) to single file?

Scenario:
In the period 09:00 1 Jan 2022 to 09:00 2 Jan 2022 there are say 50 messages to save to file: File001.txt
In the period 09:00 2 Jan 2022 to 09:00 3 Jan 2022 there are say 40 messages to save to file: File002.txt
etc

I would prefer to append the message data to the relevant file as they go through the system (real time), so the data builds up in the respective file

2
0 558
Question Ravi Akkiraju · Dec 15, 2022

I am trying to figure out how to loop through the EnsLib.LDAP.Message.Results to get all the attributes. From router I am passing EnsLib.LDAP.Messge.Search as the request param. Response is  EnsLib.LDAP.Message.Results. I am invoking the EnsLib.LDAP.Messge.Search BO.

At the BP level, trying to figure out how to extract all the attributes for a EnsLib.LDAP.Message.results

2
0 328
Question Smythe Smythee · Nov 7, 2022

Hi Community,

I am working on sending Gmail with error details when any errors occurs in the ensemble production.

I am facing the below issues while doing it

1.I have Ens.Alert (Business process) using the class Ens.Alerting.AlertManager and Emailoperation (Business operation) using the class EnsLib.EMail.AlertOperation. here my business process is not sending the Alarm request to business operation eventhough i am using rule to connect the business operation 

2.What are SMTP server details needs to given for Gmail?

Please let me know how to resolve these issues

Thanks,
Smythee

2
0 403
Question Smythe Smythee · Oct 10, 2022

Hi ,

Still a newbie for ensemble, I am trying to convert XML message to HL7 Message. I am using Custom schema for XML structure which includes MSH and PID segments from HL7 Message.

These are the service, process, Operation classes i am using 

Business service-EnsLib.EDI.XML.Service.FileService

Business Process-EnsLib.MsgRouter.RoutingEngine

Business operation -EnsLib.HL7.Operation.FileOperation

I am using data transformation to convert XML message to HL7 message  and data transformation is working fine and im getting this in the business operation.

 

ERROR <Ens>ErrGeneral: Not routing

8
0 1178
Article Aya Heshmat · Oct 11, 2022 3m read

Watch the session here: HealthShare Health Connect: Tips & Tricks

Enhanced HL7 V2 Productions

1. Review of Interface Settings: Ensure these are set purposefully! (Documentation linked)

Review of Recent Product Features 

(Documentation Linked)

1. HL7 V2 Schema Editor

  • Drag & Drop tooling for faster schema editing!
  • Note: Add-on segments may be made optional if starting from a generic schema.

2. DTL Editor Enhancements

  • Improved UI and functionality
0
0 318
Question Minoru Horita · Jul 20, 2022

I am trying to use EnsLib.SQL.Operation.GenericOperation for retrieving (multiple) rows. But I am looking for a way to handing a StreamContainer returned by the operation, in my business process such as receiving it in the Context object and packing it to a request to call another business operation.

Does anyone have sample code to do this?

Thanks.

2
0 322
Question Scott Roth · Jun 1, 2022

I would like to capture any NACK's that is sent back to the Operation. The Operation is already setup to "Save Replies/IndexNotOK's", but I would like to see if we can query Cache and pull those NACK's into an extract.

Is this possible?

Thanks

Scott

4
0 368
Question Thomas Vessiere · May 5, 2022

Hello. 

I'm trying to POST a JSON on an URL. 

But the body request arrive empty on the web service : 

[DEBUG] # 2022-05-05 15:04:32,966 # scopes founds : api
[DEBUG] # 2022-05-05 15:04:32,971 # PatientController:PostSignaletic object null

Here is the code, i tried a TONS of ways to do it but i'm still in trouble ... 

Method SendSignaletique(Token As %String)
{
    //set UrlPats = "https://app.depistagesurdite.be/externaldemo"
    
    /*set internalID = "123456789"
      set lastName = "Test"
      set firstName = "CHRV"
      set dateOfBirth = "2022-05-04"
      set gender = "1"
14
0 581
Question Scott Roth · Apr 13, 2022

I have been struggling trying to understand "Response From" and "Response Target Config Names" as I am trying to track down Orphaned messages.  I have noticed that when a Business Rule, or Business Process sends to a File Based Operation, there is always a NULL value response being returned. I am thinking these NULL values are causing some of the orphaned message problems we are seeing.

If the Business Operation is a File based operation, how do I prevent the NULL value from being sent back? Is this because our "Response From" and "Response Target Config Names" is blank?

What if the Business

2
0 523
Question gerald hanford · Apr 5, 2022

Hello Community,

I am still pretty new to Ensemble, Cashé, or ObjectScript. My question is this how can I tell when a file was finished and read fully? Currently, I have an EnsLib.FilePassthroughService reads a file from a designated file path and moves it to an archive file path. I need to set up an alert or a notification that can tell me once the file has been read in its entirety and has been moved out of its current file path.

Any help you can give me would be greatly appreciated, or if you need further clarification I can do my best to answer any question you have. Thank you. 

3
0 310
Question Dyego Crisostomo · Oct 3, 2019

Hi,

I'm trying to establish a communication between my edge, which is in one server, with my HUB which is in another one. 
In EDGE, when the HS.Gateway.HSWS.WebServices component sends a message to the HUB component, it receives the following error: "Cannot invoke method RegisterGateway; WebServiceClientClass 'HS.Hub.HSWS.WebServicesClient' could not be instantiated, or the WebServiceURL Location could not be determined".
 

May someone help me? 
 

1
0 488
Question Ting Wang · Jul 2, 2019

Hello community,

I have a very weird situation that in the name space, when I choose the soap service for a component from Basic Settings->ServiceName dropdown menu, the service registry name is there.However, when I go to HealthShare management->Service Registry, there is not any service showing up.Then I am trying to add this service by clicking the Add Service button and fill out the api information, then I hit save button and it says that "Service with this name and service type already exists", which won't allow me to add this particular service.

1
0 482
Question Joe Jung · Jan 26, 2022

Currently running Ensemble on Red Hat Enterprise Linux Server release 7.7

One of our clients is requesting files sent to their SFTP site be encrypted with their PGP public key and digitally signed with our PGP private key

We have created a custom class that includes the following command to encrypt the files

if (pAction = "Encrypt") {
// Find the Key ID from the Keyname
set tKeyId = ..GPGKeyLookup(pKeyName, ..#PUBLICKEYLUT)
set tCmdLine = "gpg --homedir "_pGPGhomedir_" --always-trust -r """_tKeyId_""" -o "_pOutFileName_" -e "_pInFileName
}
// Execute the command to generate the output file
write

2
0 624
Question prashanth ponugoti · Dec 1, 2021

Hi All,

I have configured Business Operation with EnsLib.HTTP.OutboundAdapter and set properties.

In the BusinessOperation method  I am trying to create %Net.HttpRequest 

Set httpRequest= ##class(%Net.HttpRequest).%New()

to post REST Service.

I am able to access HTTPServer ,URL details form Adapter using below code

Set httpRequest.Server = ..Adapter.HTTPServer
Set httpRequest.Location = ..Adapter.URL

How to read SSLConfiguration from Adapter properties?

As of now , I am hardcoding same string which I have configured for BusinessOperation Settings tab


Set httpRequest.SSLConfiguration =

3
0 339
Question Omar Ali Ateen · Nov 9, 2021

Dear All

I am trying to interface LAB instruments with LAB System using ASTM over TCP. I read the documentation here . But I can't understand how to connect instrument and LAB system in same port, please see the screenshot of interface below. Please help.

Details:

  • For Servece I use "EnsLib.EDI.ASTM.Service.TCPService" class.
  • For Proccess I use "EnsLib.MsgRouter.VDocRoutingEngine" class.
  • For Operation I use "EnsLib.EDI.ASTM.Operation.TCPOperation" class.

 

4
0 401
Question Yone Moreno · Nov 4, 2021

Hello community,

It would be appreciated if you could read and respond to us:

➡️ We need to activate a SOAP Operation during a time slot, in order to send messages to the target system, only for a few hours; for example from 4am to 8am.

The requirement is to do this without a scheduled task. This is because when changing nodes, in the production mirrors, there are difficulties, challenges, or issues with scheduled tasks.

Therefore, we need a mechanism that allows us to ensure that the Operation is executed even after a node change.

Please could you point us to documentation, code samples,

2
0 262
Question Tim Miller · Sep 5, 2019

So we are in the midst of setting up a bunch of sFTP operations where we will have Ensemble send files to our various customers.

My questions about the set up are these:

1) For a simple test, I set up an Operation using EnsLib.FTP.PassthroughOperation.  Is this the one I should be using?

2) if the receiving system has a username and password, then all I have to do is put that username and password into a Credential and assign that credential to my operation correct?

3) if the receiving system's directory is just the root directory, do I need to put anything in File Path?

4) Since this is an sFTP,

5
1 2697
Question Scott Roth · Oct 21, 2021

Once a week we are attempting to load an XML file from Workday into a MS SQL table using JDBC and Store Procedures.There is approx 102999 records in this XML file.We are struggling with processing the entire file within a reason amount of time.We feed the XML through a BPL to then populate values in a stored procedure then call the stored procedure through a Business Operation.I have tried splitting out the Business Operations to make two calls, but we still continue to see an issue loading the XML into MS SQL.

4
0 452
Question Eduard Lebedyuk · Aug 20, 2021

In my Business Operation I need to execute a bookkeeping method every X seconds.

How can I do that?

There are two workarounds (I dislike both):

  1. Execute bookkeeping on process start - but there might be no requests at all
  2. Create a BS that sends messages to BO every X seconds - it makes production more complex and also queues might not guarantee that the method is executed on schedule.

Thoughts?

8
0 371
Article Eduard Lebedyuk · Aug 12, 2020 3m read

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).

3. Write your rest broker (docs, more docs)

4. In your handler method create the message and call target BP/BO like this

Include Ensemble
Class test.REST Extends %CSP.REST
{

XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
<Route Url="/launchProcess/:processName" Method="POST"
8
1 1159