#Caché

30 Followers · 4.6K Posts

  

InterSystems Caché is a multi-model DBMS and application server. See more details here.

Documentation.

Article Eduard Lebedyuk · Dec 1, 2016 8m read

In this article I would like to present the RESTForms project - generic REST API backend for modern web applications.

The idea behind the project is simple -after I wrote several REST APIs I realized that generally, REST API consists of two parts:

  • Work with persistent classes
  • Custom business logic

And, while you'll have to write your own custom business logic, RESTForms provides all things related to working with persistent classes right out of the box.
Use cases

  • You already have a data model in Caché and you want to expose some (or all) of the information in a form of REST API
  • You are developing a new Caché application and you want to provide a REST API
23
3 5502
Question Kurt Hofman · May 15, 2018

Hello, I'm trying to install CSP Gateway on Ubuntu 18.04 (Apache) with the installer CSPGateway-2018.1.1.638.0-lnxubuntux64.tar.gz but it doesn't seem to work.  I keep getting access-denied when I try to open CSP-pages or the CSP Management portal.

Does someone have an installation-manual or so ?

5
0 1242
Question Jordi Gomez · May 15, 2018

Hi all,

Do you know if there is a way to create a Lock that is related to an existing transaction, in the sense that if transaction is finished (commit or rollback) Lock is removed. I ask this because in the following example Lock is there until process is killed.

Example :

TSTART

Lock  +^MyLock

TROLLBACK

I know, that, Caché itself is locking internally a table register  when doing an OpenId with exclusive flag during the transaction life. For example :

TSTART

Do ##class(MyTable).%OpenId(<TableID>, 4) (This internally is creating a Lock +^User.

4
0 620
Question Guillaume Lepretre · May 14, 2018

Hello,

In all web services, i need to my get login and token. So with Postman, i tried to call a HTTP request where I put the login/token in the header :

 

I tried to get data from Http request header. The REST APi use %CSP.REST. I tried something like that : 

But it didn't work..

Someone can give me some example or other method ?

Regards,

2
0 1992
Question Justin Wilson · May 9, 2018

I have been tasked with creating a class that will handle error logging in a consistent manor for an application I am working on.  The need is to have all variables in the calling method logged along with some other information. 

The example given was zwrite which is exactly what I need, however, I somehow need to capture the output of ZW and put it into a database table.  Any easy way to capture this data?  I was able to dump ZW to a file, but that is not ideal.

Any help is appreciated!

8
1 1446
Question Minsu Kim · May 9, 2018

Hello Global masters.

I am junior developer about Intersystems cache in South Korea.

I want to develop process management program on server.

My code :

TESTPID(IP)    ;
    #include %syPidtab
    Set Rset = ##class(%ResultSet).%New("%SYS.ProcessQuery:ListPids")
    d Rset.Execute()
    &sql(SELECT ClientIPAddress, Pid INTO :ClientIPAddress, :Pid
    FROM %SYS.ProcessQuery 
    WHERE ClientIPAddress = :IP)
    While Rset.Next() 
    {
​    i SQLCODE'=0 w !,"SQL Error "_SQLCODE continue ; 100 means process does not exist (halted)
    I Rset.GetData(1) = Pid D
    . w !,Rset.GetData(1)," ",ClientIPAddress," ",Pid
            //Set rs=$SYSTEM.Process.Terminate(Pid)
            //If rs'=1 {
            //    Write "Terminate Fialure "_" Pid "_Pid,!
            //}
            //Else {
            //    W "Sucess",!
        //    }
    //    }
    }
    d Rset.Close()
    Q
5
0 446
InterSystems Official Steve Brunner · May 10, 2018

InterSystems is pleased to announce the availability of these maintenance releases

·Caché and Ensemble 2017.1.3

·HealthShare Health Connect v15.03 for 2017.1.3

 

For Caché and Ensemble

·Oracle Solaris 10, 11 for SPARC-64 and Oracle Solaris 10, 11 for x86-64 platforms are now approved for release.  They were not available for earlier 2017.1 releases.

·The full list of corrections can be found in the release notes

·The version number of the kits is 2017.1.3.317.0

 

HealthShare Health Connect v15.03 on core technology 2017.1.3.317.

0
0 604
Question Eduard Lebedyuk · May 9, 2018

I need to redirect user to a url, which is 5000+ characters long.
To do that I set:

set %response.Redirect = url

However, in the browser I receive this header:

LOCATION: <First 3972 characters of the 'url' variable>

In WriteHTTPHeader method of %CSP.Response, where the LOCATION header is
written:

After I added a buffer flush, after the above-mentioned line:

Then in browser I received full, correct value of a LOCATION header.
Is there a better solution?
It's a rest API, so maybe there's some callback method I can override to flush the output buffer? Set device mode? Change buffer size?

8
0 617
Question Mike Minor · Apr 13, 2018

My new question regards connecting to the external database to insert the data. I have the following code:

#include %occInclude// winsurge6// insert winsurge data into cancer registry database

Compiling routine : winsurge6.MAC
ERROR:winsurge6.MAC(30) : SQLCODE=-30 : Table 'WINSURGE_RESULT_FACT' not found within schemas: CANREG,SQLUSER
 
Detected 1 errors during compilation in 0.026s.

I'm not sure what this error indicates. I've tried a few different things regarding the  #SQLCompile Path=canreg  and the

&sql(WINSURGE_RESULT_FACT 
21
0 1767
Question Haifa alomar · Apr 2, 2018

Hi, Community!

I have a problem with a table while move it from Cache to SQL Server by SSIS tool, the table was moved but there is an issue in one of the feild, it's bring only the first 2 digit and truncate the other. The datatype for this feild in the Cache is VARCHAR  and the same thing in the SQL, I tried multiple datatype (char, number, intger, text.etc) and multiple tool to bring the table again (ESF, SQL Server 2014 Import and Export Data and FullConvert) and  the same issue appear. The version of the Cache system is : Cache for UNIX (Oracle Solaris for SPARC-64 U2/M) 2012.

1
0 422
Article Sean Connelly · May 8, 2018 5m read

If your looking to develop a Node.JS to Caché library then you might want to consider using a pure TCP connection with a custom message transport protocol. This bypasses the native Caché connector libraries that can get stale with a new release.

Node.JS is very good at non blocking code development, so building a performant solution isn't that complex. 

The idea behind this example is that we have a node HTTP server that maps HTTP requests to a Caché TCP connection.

0
2 933
Question Alexey Maslov · May 7, 2018

During programmatic classes compilation performed by the code like this:

set status=$system.OBJ.Load(updaterFile,"cruk-d",,.resList)

strange messages appear in console log, e.g.

05/06/18-15:54:12:424 (308512) 0 oops: was expecting crc 0x21e96e85,5a4c8b2c for rtn (Update.Import.1) rbufnum-15523
...
05/06/18-16:17:45:305 (4224) 0 oops: was expecting crc 0x21e96e85,5a4c8b2c for rtn (Update.Import.1) rbufnum-15523
05/06/18-16:22:30:485 (4224) 0 oops: was expecting crc 0x21e96e85,5a4c8b2c for rtn (Update.Import.1) rbufnum-15523...(repeated 3 times)
12
0 787
Question Pasi Leino · May 3, 2018

I need to create a document with a root like this:

<?xml version="1.0" encoding="UTF-8"?>
<RCMR_IN200002FI01 xmlns="urn:hl7-org:v3" ITSVersion="XML_1.0">
...

</RCMR_IN200002FI01>

However, the CreateDocument in %XML.Document only allows namespace as an additional argument.

I did override this method, but trying to do something like

Do document.SetAttribute("ITSVersion",,"XML_1.0") only results an empty document with the <?xml> declation only.

-Pasi-

1
0 668
Question Thiago Zenaro · May 3, 2018

Hi community.

I want to create a custom list inheriting %ListOfDatatypes in order to implement some methods like Map, Filter, ForEach, but I have some questions.
Just to mention, I have already read the topic about DeclarativeCOS.

When I define a property like following, caché uses %Collection.ListOfDT or %Collection.ListOfObj, as it's shown in the documentation

Property TestListString As list Of %String;

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_propcoll#GOBJ_propcoll_def.

1
0 804
Question Thembelani Mlalazi · May 2, 2018

I have a lookup table and record batch Table I would like to do a count on the records stored in that batch by counting the number of records in that batch that have  a certain key on the responseKey column. This column keys are stored in the look up table for comparison. So I would like to do a join sql pivot that will use my keys stored in the lookup as columns and count as values

so far I have managed to do this but this is not efficient I would like to fire that sql once not on every count

SELECT * FROM
(
SELECT tMatch.DataValue, Count(*)
FROM ResponseRMAP.Record bRecord
JOIN Match ON tMatch.TableName = 'Match' AND tMatch.KeyName = bRecord.ResponseCode
WHERE bRecord.%ParentBatch = 55

)
 
1
0 1717
Question David Sterngast · Apr 29, 2018

Hello !   I am still trying to get the sample email working on my computer.  I am getting the below error.   I have tried a number of things and researching it on the net.  I am not sure what I am doing wrong.

Below is a sample class that I have been testing.  

Class email.test Extends %Persistent

{

// set myval= ##class(Package.Class).Method(Args)

// set myval= ##class(email.test).XSendSimpleMessage("")

ClassMethod SendSimpleMessage(server As %Net.SMTP) As %List

{

  Set server=##class(%Net.SMTP).%New()

  Set server.smtpserver="Smtp.aol.

4
0 538
Question Joan Cruz · May 3, 2018

Hi,

I'm trying to export a global with this library %Library.Global with this call:

Do ##class(%Library.Global).Export(pstrNamespace, pstrGlobalName, pstrOutputPath,,,"-d")

When I call this method $ZERROR is setted to "<NOTOPEN>OpenDev+15^%Wprim"

Can someone tell me where is the problem on this?

Thanks a lot

4
0 636