#Ensemble

23 Followers · 2.3K Posts

InterSystems Ensemble is a complete and easy-to-use integration platform that enables users to connect people, processes, and applications in record

time.

Learn more

Documentation

Question Yone Moreno · Oct 13, 2019

We have in DB two books, first is loaned because it has the Friend ID, and the other is in the shelf.

I execute a class query to get all loaned books:

    Query BooksLoaned() As %SQLQuery
    {
        SELECT *
        FROM Library.Book
        WHERE Friend IS NOT NULL
    }
 

Which I have tested throught the portal:

My task is to retrieve all the loaned books and return them in an array. Method code:

ClassMethod GetLoanedBooks() As %ArrayOfObjects
    {
        set booksRS = ##class(%ResultSet).%New("Library.Book,BooksLoaned")
        set rsStatus = booksRS.Execute()
        set i = 1
        s


6
0 517
InterSystems Official Jeff Fried · Nov 4, 2019

Caché  2018.1.3 and Ensemble 2018.1.3 maintenance releases are now available.   

Full product installation kits can be downloaded from the WRC Software Distribution site.

This is a maintenance release with many updates across a wide variety of areas.

For information about the corrections in this release, refer to the release notes.

This release also adds support for Red Hat Enterprise Linux 8, in addition to the previously supported platforms detailed in the 2018.1 Supported Platforms document.

 The build number for this release is 2018.1.3.414.0

0
0 708
Article Jean Millette · Nov 2, 2019 15m read

The Issue

I help support a legacy ZEN application that makes extensive use of the “dataGrid” component. The application reuses a ZEN page with a“dataGrid” for different views of similar data; depending on the view, the application hides or displays some of the columns of the “dataGrid”. The application does this client-side, setting the “hidden” property of the “columnDescriptor” true or false as needed.

Users have reported the following bug in the app: On views which hide a column, data in the other columns are shifted so as to appear under the wrong headers. In order to demonstrate the iss






0
0 467
Question ED Coder · Oct 30, 2019

Hi,

I am trying to add an OR condition in the DTL but not able to. Sorry if this is a silly question, but can you advice?

I want to add a condition where if source.45 is "" or "..." then map "" to the target. But I am not able to add the OR condition

Currently I have as below

What will I need to do to add an "OR" condition to the DTL?

Would appreciate your guidance

Regards,

ED

2
0 1202
Article Istvan Hahn · May 16, 2016 11m read

Introducing non-persistent messages. eXpert-to-eXpert

Background

InterSystems Ensemble as a tool does a lot for the Developer. One of the nice features is the Message trace utility. It shows a message flow diagram. The diagram shows the progress of the message processing real time. You can get many-many useful information from the production. In any case, someone needs to find a bug in a production implementation, without the Message trace utility it could turn into a real nightmare. 

On the other hand, keeping message “traceability” is not for free. A heavy loaded production can very quickly run out of resources just because of the house keeping functions of Ensemble. House keeping functions such as maintaining message header, log entries, message queue generates a significant load on the Caché database used by Ensemble.

This article is about to show how to force Ensemble work more for the everyday life, instead of being prepared for “any-time-debugging”.

This is an eXpert-to-eXpert article. Therefore, I assume the deep understanding of Ensemble.

1
1 1822
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="(?i)/:version/revoke" Method="DELETE" Call="Revok
5
0 549
Question Scott Roth · Oct 30, 2019

I must be missing something. We have done encoded PDF's in the past with the Encoded PDF in OBX.5.5. When I have used this code in the past I was only working with 1 OBX, but I have a case where I am having multiple OBX's and having to loop through them and I am renumbering the outbound OBX.

<code>
<![CDATA[ // OBX]]></code>
<assign value='1' property='varOBXindex' action='set' />
<assign value='1' property='varOBX1' action='set' />
<foreach property='source.{ORCgrp(1).OBRgrp(1).OBXgrp()}' key='k1' >
<if condition='source.{ORCgrp(1).OBRgrp(1).OBXgrp(k1).OBX:ValueType}="ED"' >
<true>
<assign value='



1
0 653
Question Larry Pinsky · Oct 21, 2019

I have a text file that I pick up in a Business Service and need to send it to our vendor via JSON.  I assumed (probably wrongly) that I could just create a RESTful Business Operation, plug in the server IP and URL as well as complete some of the other fields on the BO to send the file.  When I do this, I get the following error:

ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>zOnMessage+5^EnsLib.HTTP.GenericOperation.1 *HTTPHeaders,Ens.StreamContainer -- logged as '-' number - @' Set tHeaderKey="" For { Set tHeaderKey=pRequest.HTTPHeaders.Next(tHeaderKey) Quit:""=tHeaderKey Set tHeaderLwr=

4
0 935
Question Yaron Munz · Oct 16, 2019

Hello,

Is there an elegant way to define a dynamic "Archive path" for EnsLib.File.InboundAdapter ?

What i mean is to have a sub-folders structure (under the root archive path) with a name similar to: yyyymmdd
This way the adapter "could" store the files on those sub-folders (and create a new one for the 1st file for a specific date).

When a production is processing hundreds of thousands of files every day, we might end up with an archive with huge number of files (many millions) which is then hard to handle (read, search) especially on Windows O/S.

Of course that there is always a "programm

1
1 440
Question Steve Pisani · Oct 19, 2019

Hi,

I'm after feedback and comments on the sort of tools and approaches the wider InterSystems community uses for QA Testing applications written in Cache/Ensemble or IRIS.   I am aware of the %UnitTest package, and understand how that works... but:

- Do you use an alternative or framework built around this native Unit Testing tool ?

- What is your experience with %UnitTest if you use it ?

- Is there a tool you would recommend for your UI (I know this is not specifically an InterSystems' related question)

- What process do you use to routinely run tests on your application ? 

Any othe

4
0 753
Question Federico Raimondo · Oct 18, 2019

Hi everyone, 

I have just started to use JavaGateway and I didn''t encountered so much difficulties since I've got the output of the Java class I have called. 

This is the class I have implemented: 

Method OnRequest(pRequest As EnsLib.HL7.Message, Output pResponse As EnsLib.HL7.Message) As %Status{set MDMarchiv=pRequest.OutputToString()$$$TRACE(MDMarchiv)#dim RPConverter = ##class(training.hl7.HL7toRP).%New()set output=RPConverter.hl7toRp(MDMarchiv)$$$LOGINFO("after transformation: "_output)set RPStream = ##class(%FileCharacterStream).%New(output)#dim finalResponse As %F
6
0 453
InterSystems Official Andreas Dieckow · Oct 17, 2019

With the recent release of macOS 10.15, Apple has tightened its control mechanism , called Gatekeeper, so that it now requires executables to be notarized.  InterSystems products are not currently supported for use on macOS 10.15 and the executables have not been notarized.  (As a reminder, InterSystems products are supported on macOS as a development platform only.)

0
0 517
Question Shameer Sulaiman · May 11, 2018

Hi,

I am sending a request message to Business Process which has one property as Dynamic Object type. So i get the JSON in my REST service and convert that as a dynamic object and set that in the request message and calling the business process from the business service. But the request is not getting sent to the Business Process. Is it possible to send dynamic object input to the business process.

18
0 1051
Question Ravi Akkiraju · Oct 12, 2019

Wondering if there is a limit on max number of rules you can have in a single router? For outbound ADT we are approaching 60. From performance standpoint is it worthwhile to create a new router component and the service sending the same inbound message to 2 processes?

4
0 386
Question Yone Moreno · Oct 13, 2019

I  am reading the following code in ObjectScript:

GitHub repository
 

And there is a sentence which I am facing difficulties to understand:

    kill ^OPNLib.Game.CWLF(..World)

I know that kill removes variables, OPNLib.Game are the package and subpackage, and ..World is a property. However what does CWLF mean?

You could think that it is the class' name, but it is:

Class OPNLib.Game.ConwayLifeGame Extends %Persistent

The class name is ConwayLifeGame

Is CWLF an alias for the class name?

If yes where is it defined?

Because if we see all the definitions in the current class, we do not fou

2
0 270
Question Ting Wang · Oct 8, 2019

Hi All,

I am encountered <INVALID OREF> error in one of the components in the namespace as we are processing and generating huge files and sending them to downstream systems. One possible way we tried was to allocate more memory for the namespace in ensemble, but this kind of intermittent error still occurred only if processing the huge files. Also we tried to resend the failed message and the error would be gone. Another possible solution is to kill unused local variables to release memory space. My question is that what is more efficient way to deal with OREF error related to memory allo

2
0 3765
Question Ting Wang · Oct 8, 2019

Hi,

I got the <INVALID OREF> error in the component and the error screenshot as follows:

​​​​​​

When I try to debug in the code, I go to the class and view other code in eclipse and find out the error method. How should I determine which line threw the error according to the error? There is the line number"+8" in zProcessRequest method. Is that the line counted from the method name or below? Looking forward to your reply. Thanks.

4
0 1417
Job Rose Blackburn · Oct 9, 2019

Hi All!! 


I am currently recruiting a very exciting position to work for a leading Healthcare software provider who are on the lookout for an experienced InterSytems Cache/Ensemble Developer for a 4 month contract! 

This will be working on a leading Childrens Health Product and developing applications for the NHS, particularly working on a migration. 

We are looking for: 

  • Proven Intersystems Cache/Ensemble development experience;
  • Proven data migration experience

Get in touch for more info on Rose.Blackburn@transition-partners.co.uk

Thank you :-) 

0
0 496
Article Ben Spead · Sep 30, 2019 2m read

Every developer has made the mistake of accidentally leaving temporary debug code in place when they meant to remove it after debugging is complete.  The great thing about writing in ObjectScript is that there is a way to make temporary code be truly temporary and automatically self-destruct!   This can also be done in such a way that the code has no change of making it into your source control stream, which can be helpful as well.

The secret to this lies in making use of the "Intermediate code" (.INT) which is generated when you compile classes (.CLS), routine code (.MAC) or CSP pages (.CSP)

1
0 494
Question Graham Hartley · Oct 8, 2019

Hi All, I'm in the process of trying to rollout the git version control system with our current code base within Atelier.  We use Ensemble to develop interfaces but are looking to move to IRIS in the near future.  Our code is structured similar to below:

 Site

           System1

Routers

Processes

Transformations

Data

Services

Operations

System2

Routers

Processes

Transformations

Services

Operations

Data

Productions

Routers

Operations

My initial thoughts are that we would have three repositories.  One for DEV, TEST and PROD.  Each repository would contain multiple Atel

1
0 416
Question Scott Roth · Oct 3, 2019

When compiling in 2018.1.2 using $system.OBJ.CompileAllNamespaces() I am seeing the following errors on some of our Record Maps.

ERROR #5496: Inverse property, 'osuwmc.RQIRecordOut.Record:%ParentBatch', is not defined, 'RQIRecordOut.Record:Records'
ERROR #5496: Inverse property, 'osuwmc.RQIRecordIn.Record:%ParentBatch', is not defined, 'User.RQIRecordIn:Records'
ERROR #5496: Inverse property, 'osuwmc.RQIRecordOut.Record:%ParentBatch', is not defined, 'User.RQIRecordOut:Records'
ERROR #5496: Inverse property, 'osuwmc.EpicADTMergeCSV.RecordMap.Record:%ParentBatch', is not defined, 'osuwmc.EpicADTM

1
0 328
Question David Losiewicz · Oct 3, 2019

I am using Ensemble FTP adapter to monitor file directory for files that require SFTP transfer to remote server using public/private keys for remote server authentication.

This works great in my engineering development space where file protections are loose.

I want to apply "principle of least privilege" regarding the public and private key files specified in  FTP Outbound adapter Business Operation. 

Can anyone recommend (Linux) permissions that allow Ensemble to execute the SFTP operation but minimizing access to the key files?

I've tried variouse combinations without success. 

Any reco

1
0 1017
Question Warren Grob · Sep 30, 2019

How do I manipulate a string in Ensemble DTL (X12 document) to extract a string starting from the right, or end, of the string?

I need to have 10 digit phone numbers, however some of the source data records include the "1" for the long distance dialing and I need to exclude this.

I have tried using Right(), SubStr(), and even SubString(string,*,-10) but it will not compile.

I find it hard to believe that Ensemble does not have the ability to read a string from the right. 

Thank you for any assistance.

5
0 504