#Business Service

4 Followers · 214 Posts

A business service is part of InterSystems Ensemble interoperability production which is responsible for accepting requests from external applications.

Question alex chang · Jun 1, 2020

Hi,

 Recently, I meet some problem at product env.

Some outside http request send to my Business Service.   cause service very slow down. So I want find root cause . But at the message trace page. I can't found any source address .    But at Product env. I can't install packet capturer like wireshark . I meet some problem.

And  Second.  Does ensemble can limit request speed at Business Service?  too many requests slowdown my service.

Tks.

1
0 273
Question ED Coder · Apr 7, 2020

Hi, this might be a silly question, but how can I start a job in ensemble? I am getting the update button, and my business service is not restarting.

it says 1 new job to be started, but where can I start the job? Would appreciate your help on this

6
0 499
Question Yone Moreno · Mar 16, 2020

Hello,

We have a Service which behaves differently even though two equal Soap UI XML requests are being sent, from different systems.

When it is being sent from the other system, our Service's log shows:


ERROR <Ens>ErrGeneral: invalid HTTP version'xmlns:ges="http://XXX.XXXXXXXXX/GestionPacientes">'  

When we send the same XML message from SoapUI, it is being processed by our system.

We have checked that the service's NAMESPACE is: "http://XXX.XXXXXXXXX/GestionPacientes"

How could we debug further this behaviour?

We have read:

https://stackoverflow.

1
0 532
Question Yone Moreno · Feb 10, 2020

Hello,

We would like help to know why our web service which gets Patient's ID number, does not accept messages?

We observe its Event Log, and it contains the following pattern:

We detail each log to give info to discover what's happening:

First there is a new connection:

Then it suddenly disconnects

After that it looks like the service restarts:

The next one is interesting: it outputs that UTF-8 encoding is invalid, inside EnsLib.SOAP.InboundAdapter

We have searched for UTF-8 inside SOAP.

3
0 797
Question Roger Merchberger · Jan 10, 2020

TL;DR: If I set an Ensemble  Production Service based on EnsLib.File.PassthroughService to a Binary charset encoding, it breaks the file handling. Any ideas?

Full long post:

All,

I set up an Ensemble production to transfer files via SFTP, which works fine sending the files to my Linux server. Then I was informed that we needed to save a hash of the file, for comparison with the destination to verify the file arrived unmodified.

8
0 495
Question Thomas Schroyen · Dec 17, 2019

Hello,

I have a little problem that appears to my newest program. One of the purpose of my program is to  transfer a file from a path to another one.

Another person/entity places the file into a specific file ( let's call it \\Server\) but the problem is that my service (a simple EnsLib.File.PassthroughService) takes it and places it directly into my other path. The pdf file is very big and it happens almost all the time that the size of the output file is not the same as in input and so is corrupted.

3
0 425
Question Eduard Lebedyuk · Nov 14, 2019

I have several Business Services which I need to run once on each trigger.

Trigger can be either:

  • Specific time (so once a day, every day)
  • Specific day (so once a month, every month)

For the time, it would be stable (i.e. 0100), but the second case varies - one month it could be 10th, another month - 12th.

After each run I want the service to turn off, so that all the time the service is not running it would be colored grey in Production Management Page.

I plan to use Task Scheduler,but open to suggestions.

Thoughts? Ideas? Code?

2
0 486
Question Kurro Lopez · Oct 30, 2019

Hello,

We need to create a versioning of an existing API, so we going to set a default version (so far) for current connections to version 1

My first attempt is:

XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
    <Route Url="(?i)/check" Method="GET" Call="CheckApi"/>
    <Route Url="(?i)/getcustomer" Method="POST" Call="GetCustomerDefault"/>
    <Route Url="(?i)/revoke" Method="DELETE" Call="RevokeDefault"/>
    <Route Url="(?i)/:version/getcustomer" Method="POST" Call="GetCustomer"/>
    <Route Url="(?
5
0 550
Question Mark Sharman · Sep 19, 2019

Hi,

I've a Service utilising the Adapter EnsLib.SQL.InboundAdapter, which uses a Credentials item set with the details of a local SQL account. This currently works, however, we're looking to use the credentials of an AD domain account.

The domain account is a member of an AD security group, which has the required permissions on the source SQL database. I've checked that access is possible with this account via SQL studio.

I've tested setting the Credential username as domain\username and username@FQDN, but neither create a successful connection.

2
0 373
Question Kurro Lopez · Sep 4, 2019

Hello everyone,

We have a process that is listening to an FTP service to collect some CSV files and process them. The process works correctly and when it ends it clears the directory waiting for it to enter some other file.

We have been receiving the following error message for a long time:

ERROR <Ens>ErrGeneral: Error in SFTP Dir() ERROR #7500: Error DirEnum SSH '-2146430967': 'SSH Error [80101009]: Would block waiting for status message [80101009] at SFTP.cpp:150,0

This happens when there are no files to process and appears from time to time, maybe every 20 minutes.

4
0 1015
Question Warren Grob · Aug 29, 2019

Is it possible to create a task that will initiate a Business Service that is dependent on the completion of a separate EDI data process?

I have a complex data flow with multiple EDI processes where one process must run and produce one or more files that get deposited in the source folder for the next EDI process.  The entire process is currently set up where 2 of the EDI processes execute at a specific time.  The problem with that is when a network or server interruption occurs at the time they are supposed to start, it causes a complete failure of the entire process.

1
0 259
Question Rodolfo Moreira dos Santos · Aug 21, 2019

Hello, I have a task created in my task manager, calling my Business Service class, and it's working fine.
But I need to know the ID of the task, I searched within the class  %SYS.Task.Definition and found nothing related.

Class Example.Tasks Extends %SYS.Task.Definition{Property BusinessService As %String [ InitialExpression = "Example" ];Method OnTask() As %Status{
  SET tSC = $$$OK
  TRY {
  
  SET tSC = ##Class(Ens.Director).CreateBusinessService(..BusinessService,.tBS)
  SET tRequest = ##class(Ens.Request).%New()
  SET tSC = tBS.OnProcessInput(tRequest,
7
0 570
Question Jimmy Christian · Jun 25, 2019

Hello,

Working on to learn very basic CUSTOM Business Service which sends to a EnsLib.File.PassthroughOperation.

But operation is not writing to File and erroring out (No Stream contained in StreamContainer Request")'.

How do convert the object to STREAM and wrap in the StreamContainer so the operation does not error and write to a file.

Thanks.

Persistent Class

Class Hospital.PatientApptRequest Extends %Persistent
{
Property PatientId As %Stream.FileCharacter;
Property PatientName As %Stream.FileCharacter;
.

8
0 654
Question Blakely Herlick · Jun 21, 2019

Hi all, My first post. I hope I have created it correctly.

Our team is looking to increase the number of characters in our Ensemble 'Categories' for Services, Processes and operations.

We are doing this to better identify things like Vendor, Message type and integrated application names...

One of our team members thought his might increase processing overhead and a discussion ensued that was not resolved.

my

2
0 349
Question Jack Smith · May 19, 2019

We have a business service that extends Ens.BusinessService and uses  EnsLib.File.InboundAdapter.

This service polls for json files in a folder.

Method signature is like this:

Method OnProcessInput(pInput As %FileCharacterStream, pOutput As %RegisteredObject) As %Status

And inside that method it tries to read the content like this:

set tData = pInput.ReadLine(,.tStatus, .tEOL)
if ($$$ISERR(tStatus)) quit
set tJSON = {}.%FromJSON(tData)
 

I added some trace calls before and after lines and noticed it's always that last line that fails if content is larger than 32kb.

Any workaround for this?

7
0 591
Question KI Joon Keum · Apr 4, 2019

I trying to get ACK back from the destination to the sending system.

I configured the Business Services to Ack Mode Application but sending system is getting Ensemble generated ACK [7] not destination ACK [9].

This is Ensemble 2018.1.1.312.0.

Ultimately I would like a NACK back when I have a Business Rule that blocks a messages from sending to Business Operations but currently [5] is an ACK |AA

|.

5
0 947
Question Joseph Tsang · Mar 22, 2019

From time to time we develop an Ensemble Production with simple SQL Inbound data from external databases, we need to develop a few new classes. There are at least:

  • 1 Ens.Request class with the fields captured from the SQL ResultSet
  • 1 Business Service class using SQL Inbound Adaptor, and in the OnProcessInput(), copy the relevant field data from ResultSet to the new Ens.Request, and call either ..SendRequestSync() or ..SendRequestAsync().

Let's say, if these codes can be generated automatically in order to make the entire development more "low

3
0 492
Question Kurro Lopez · Feb 20, 2019

Hi all,

I'm wondering if is possible to extend the UrlMap.

I want to create a base class and one method will be in all extended classes, so I've tried to create the map route in parent class, and the specific methods in extended class. But it doesn't work.

I've create the method in parent class and I've wrote the map in extended class. It works, but I want to put it in base class to prevent forget this call.

Note: The base class extend to %CSP.RES

Best regards,

Francisco Lopez

5
1 866
Question David.Satorres6134 · Jan 9, 2019

Hi all,

Does anyone knows if there is a limit per second adding messages to an Ensemble queue? I have a Business Service working and sending async requests to a Business Process, but I can't reach no more than 60-70 messages queued per second.

I've done several tests and same behavior seems to happen with all our productions. So I was wondering if there is a parameter anywhere to maximize the number of requests that can be send to a queue per second.

4
0 629
Question Michel Bruyère · Nov 20, 2018

I created a connector of type "Services" having for name of class "EnsLib.File.PassthroughService". In the parameters, the value "FileSpec " was "*" and the "FilePath " pointed to my directory " .... Documents "; whereas "TargetConfigNames" was empty.

Much to my surprise, as soon as I activated this connector, all the files were deleted.

These are not in the dushbin of Windows. - 

Do you know a way to get back them? Are they in the system of the ESB?

I know that programs can undelete files. I have already used this type of programs.

Thank you in advance.

Sorry for my poor English.

2
0 531
Question Bharathsimha Reddy Jakka · Nov 7, 2018

Call Interval

 
 

The minimum interval between invocations of the adapter by the Ensemble framework. For adapters that poll for external events, this is the polling interval. However, most polling adapters will process all inputs immediately if several are detected at one time. This is also the interval at which each Business Service will check for shutdown requests.

Is this interval duration in Milliseconds or Seconds ?

What is the highest or lowest that I can set in the Call Interval ?

1
0 1237
Question Kurro Lopez · Oct 30, 2018

Hi all,

I have a FTP.Inbounding service that read a file and move it to a other folder when it is processed. The problem is that is not working fine in SFTP server.

The code is coppied from How to - Customize Ensemble Settings article.

// begin customization code// get the Filename, attach the time stamp to it and move the file into the Archive directory// the Rename method below is using RNFR and RNTO FTP commands (RFC 959), effectively moving the file into the new directorySet tSource=pInput.Attributes("Filename")Set tArchive=..Adapter.CreateTimestamp(tSource,"%f_%Q")set fullPath =
4
0 1990
Question Jim Winski · Oct 24, 2018

I am trying to find out when a Business Service was created, and by who. I have reviewed the audit trail and it doesn't appear that this information is actually logged there. I am hoping that this might be logged in a SQL table or global someplace. I have reviewed the SQL tables in that namespace and have come up empty. I thought it might be located in Ens_Config.Item, but that table is sparse.

Anyone know where this information might be logged?

Thanks, Jim

1
0 263
Question Kurro Lopez · Aug 29, 2018

Hi community,

I've created a BS that uses FTP InboundAdapter. It works, read the file and process it.

The problem is when there not any file in the FTP folder, it raises the following error:

 ERROR <Ens>ErrFTPListFailed: FTP: error en List para *.csv (mensaje='No-transfer-time exceeded. Closing control connection.',código=421)

I think it is something about the configuration, but I don't find what is the problem.

Any idea?

Best regards,

Francisco Lopez

4
0 848
Question Hieu Dien Nguyen · Aug 23, 2018

Hello Everyone,

I have a healthshare web application with production, I try to make a field in basic setting of business service, and I would like to set a string to DISPLAYLIST and VALUELIST of that Property (string maked by query to sql table). I code the same here but it's syntax incorrect in DISPLAYLIST = GetTypeDisplay(), VALUELIST = GetTypeValue(). Someone know a best way to solved my problem? Thanks so much!

Class Demo.RegDataService Extends Ens.BusinessService
{

Property xmlTagName As %String(DISPLAYLIST = ",EDocument", VALUELIST = ",Demo.
8
0 1774
Question Antonio Garcia Martinez · Aug 10, 2018

Hi,

Not sure if is possible, but I am trying to find the way to show in the log the username of whoever enable a specific service. The idea is that a service is normally disabled..if someone enable it, the username will be reported to the log...

I have tried with $username but it only return "_Ensemble" when running from ensemble although it works in Studio.

Thanks

8
0 722
Question Milena Donato · Aug 8, 2018

Hi everyone

I encountered this error while trying to access a web service (I send a test message with soap ui):

FEHLER #5002: Caché-Fehler: &lt;CLASS DOES NOT EXIST> {my method &class name} .1 *(No name)

I am not able to understand what goes wrong. If I look at the trace on messages in the ensemble message viewer there are no errors. The response message displayed in the trace looks like it is successful but in the SOAP UI tool I get the error message in the response.

Do you have any suggestions?

Thanks a lot and kind regards

Milena

1
0 852