#Caché

30 Followers · 4.6K Posts

  

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

Documentation.

Article Bernd Mueller · Jan 30, 2018 13m read

Some time ago I got a WRC case transferred where a customer asks for the availability of a raw DEFLATE compression/decompression function built-in Caché.

When we talk about DEFLATE we need to talk about Zlib as well, since Zlib is the de-facto standard free compression/decompression library developed in the mid-90s.

Zlib works on particular DEFLATE compression/decompression algorithm and the idea of encapsulation within a wrapper (gzip, zlib, etc.).
https://en.wikipedia.org/wiki/Zlib

6
2 2856
Article Yuri Marx · Jun 8, 2020 3m read

About regulations

Personal data privacy regulations have become an indispensable requirement for projects dealing with personal data. The compliance with these laws is based on 4 principles:

  1. Compliance with the rights of the holder of personal data;
  2. Governance of personal data assets;
  3. Privacy by Design and by Default;
  4. Data protection.
0
2 496
Article Peter Cooper · Mar 18, 2018 1m read

Hi All
This is the index to a series of articles I hope to create over the coming months.

ZEN and ZEN Mojo are no longer being actively developed by Intesystems - this is a great shame as it is a fine product that works so well for business applications.
However ZEN is a 15 year old product and I need a path forward to replace the ZEN UI with a supported development framework.

This article is an index of the other articles I have, or plan to write. - the articles will be subject to change as I develop my thoughts and climb the learning curve.

5
1 1383
Question Arto Alatalo · Apr 29, 2020

Hi Community! I need your advice.

The method below is 6 times slower on production server than on developing machine:

ClassMethod runme4()
{
    s cnt=615210
    s st=$zh
    for i=1:1:cnt {
        s p=##class(digi.packet).%OpenId("packet||5237")
        w:p="" "not found",!
        k p
    }
    w $zh-st,!
}

BUT the server is 6 times faster if OpenId replaced with simple read of a large global (s p=^someLargeGlobal). Any ideas what makes OpenId so slow only on the server?

And another question: I wanted to profile the code with  %Monitor.System.

27
0 1286
Question Đặng Phú Lộc · May 28, 2020

Hi everyone,

I have an existing application on HealthShare 2015 and decide to move it to HealthShare 2018 to make use of Atelier support. I am using Eclipse Photon with Atelier Plugin 1.3.

Most of things are working better on Atelier comparing with Built-in studio of HealthShare. However, when I tried debugging CSP file with Atelier I encounter 2 problems:

1. 

From a CSP file, I can open the generated *.INT file without any problem. But when I open the generated *.cls file it shows me the error:

2.

1
0 446
Article Sergey Mikhailenko · Jun 2, 2020 8m read

When you first start working with InterSystems IRIS, it’s a common practice to install a system with only a minimum level of security. You have to enter passwords fewer times and this makes it easier to work with development services and web applications when you're first getting acquainted. And, sometimes, minimal security is more convenient for deploying a developed project or solution. And yet there comes a moment when you need to move your project out of development, into an Internet environment that’s very likely hostile, and it needs to be tested with the maximum security settings (that is, completely locked down) before being deployed to production. And that’s what we’ll discuss in this article. For more complete coverage of DBMS security issues in InterSystems Caché, Ensemble, and IRIS, you may want to read my other article, Recommendations on installing the InterSystems Caché DBMS for a production environment. The security system in InterSystems IRIS is based on the concept of applying different security settings for different categories: users, roles, services, resources, privileges, and applications. Users can be assigned roles. Users and roles can have privileges on resources — databases, services, and applications — with varying read, write, and use rights. Users and roles can also have SQL privileges on the SQL tables located in databases.

2
3 1227
Question Dan Pahnke · Jun 2, 2020

Hi,

My attempt to run a node.js command fails at the open command with a "Error loading Cache Library: C:/InterSystems/Cache2018/bin/cache.dll; Error Code 126 (The specified module could not be found.)" result. I can't argue with the error message as the cache.dll file doesn't exist. Apparently I missed an installation step. Could somebody point out what it might be please.

Version: Node.js Adaptor for Cache: Version: 1.1.136a (ABI=48)


Cache for Windows (x86-64) 2018.1.4 (Build 504) Thu May 14 2020 14:31:34 EDT

I'm using cache610.node from InterSystems along with Nodejs.org release v6.10.3
 

Dan

2
0 420
Article Eduard Lebedyuk · Mar 4, 2016 7m read

It was InterSystems hackathon time and our team, consisting of Artem Viznyuk and me had Arduino board (one) and various parts of it (in overabundance). And so like that our course of action was set - like all other Arduino beginners, we decided to build a weather station. But with data persistent storage in Caché and visualization in DeepSee!

8
0 1891
Question Yone Moreno · Jun 1, 2020

Hello,

We are wondering how could we iterate over a segments list,

The use case is that we are sending from Process X to process Y a message, only if at the OBR4 CE1 there is a certain code.  We were getting this field as follows:

set context.studyReason = request.GetValueAt("ORCgrp(1).OBRuniongrp.OBRunion.OBR:UniversalServiceIdentifier.Identifier")

How could we iterate over the following message and get both OBR4 CE1 (1 and 2):

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <ORM_O01>
            <MSH>
                <MSH.1>|</MSH.1>
                <MSH.2>^~\&amp;</MSH.2>
                <MSH.3>
                    <HD.1>sistemaExterno</HD.1>
                </MSH.3>
                <MSH.4>
                    <HD.1>27</HD.1>
                    <HD.2>PRUEBAS</HD.2>
                </MSH.4>
                <MSH.5>
                    <HD.1>380316</HD.1>
                </MSH.5>
                <MSH.6>
                    <HD.1>EXTHL7</HD.1>
                </MSH.6>
                <MSH.7>
                    <TS.1>20200429114820</TS.1>
                </MSH.7>
                <MSH.8></MSH.8>
                <MSH.9>
                    <MSG.1>ORM</MSG.1>
                    <MSG.2>O01</MSG.2>
                    <MSG.3>ORM_O01</MSG.3>
                </MSH.9>
                <MSH.10>65636</MSH.10>
                <MSH.11>
                    <PT.1>E</PT.1>
                </MSH.11>
                <MSH.12>
                    <VID.1>2.5</VID.1>
                </MSH.12>
                <MSH.13>1</MSH.13>
                <MSH.16>AL</MSH.16>
                <MSH.18>ASCII</MSH.18>
            </MSH>
            <ORM_O01.PATIENT>
                <PID>
                    <PID.1>1</PID.1>
                    <PID.2>
                        <CX.1>FCCT540403904019</CX.1>
                    </PID.2>
                    <PID.3>
                        <CX.1>11645069</CX.1>
                        <CX.4>
                            <HD.1>MPI</HD.1>
                        </CX.4>
                        <CX.5>11645069</CX.5>
                    </PID.3>
                    <PID.3>
                        <CX.1>FCCT540403904019</CX.1>
                        <CX.4>
                            <HD.1>TISR</HD.1>
                        </CX.4>
                        <CX.5>FCCT540403904019</CX.5>
                    </PID.3>
                    <PID.3>
                        <CX.1>92920000T</CX.1>
                        <CX.4>
                            <HD.1>DNI</HD.1>
                        </CX.4>
                        <CX.5>92920000T</CX.5>
                    </PID.3>
                    <PID.4>
                        <CX.1>11645069</CX.1>
                    </PID.4>
                    <PID.5>
                        <XPN.1>
                            <FN.1>CIUDADANO</FN.1>
                        </XPN.1>
                        <XPN.2>FICTICIO</XPN.2>
                        <XPN.3>ACTIVO</XPN.3>
                    </PID.5>
                    <PID.7>
                        <TS.1>19540403000000</TS.1>
                    </PID.7>
                    <PID.8>M</PID.8>
                    <PID.11>
                        <XAD.1>
                            <SAD.1>C/</SAD.1>
                            <SAD.2>ABREU Y GALINDO, 5</SAD.2>
                            <SAD.3>6</SAD.3>
                        </XAD.1>
                        <XAD.2>87</XAD.2>
                        <XAD.4>28</XAD.4>
                        <XAD.5>35001</XAD.5>
                    </PID.11>
                    <PID.13>
                        <XTN.1>922000000</XTN.1>
                    </PID.13>
                    <PID.19>380000012304</PID.19>
                    <PID.30>N</PID.30>
                    <PID.31>N</PID.31>
                </PID>
                <PD1>
                    <PD1.1>1</PD1.1>
                </PD1>
                <ORM_O01.PATIENT_VISIT>
                    <PV1>
                        <PV1.1>1</PV1.1>
                        <PV1.2>1</PV1.2>
                        <PV1.7>
                            <XCN.1>DAMIAN ALVAREZ PEREZ</XCN.1>
                        </PV1.7>
                        <PV1.8>
                            <XCN.8>27950104</XCN.8>
                        </PV1.8>
                        <PV1.10>APLP</PV1.10>
                        <PV1.11>
                            <PL.1>27</PL.1>
                        </PV1.11>
                        <PV1.15>27</PV1.15>
                        <PV1.30>20200429</PV1.30>
                        <PV1.35>20200429</PV1.35>
                        <PV1.50>
                            <CX.1>11645069</CX.1>
                            <CX.2>LABAP</CX.2>
                        </PV1.50>
                    </PV1>
                </ORM_O01.PATIENT_VISIT>
            </ORM_O01.PATIENT>
            <ORM_O01.ORDER>
                <ORC>
                    <ORC.1>HD</ORC.1>
                    <ORC.3>
                        <EI.1>11111</EI.1>
                    </ORC.3>
                    <ORC.7>
                        <TQ.6>1</TQ.6>
                    </ORC.7>
                    <ORC.8>
                        <EIP.1>
                            <EI.1>65639</EI.1>
                        </EIP.1>
                    </ORC.8>
                    <ORC.10>
                        <XCN.1>43794017Q</XCN.1>
                    </ORC.10>
                    <ORC.13>
                        <PL.1>CON</PL.1>
                    </ORC.13>
                    <ORC.16>
                        <CE.1>PC</CE.1>
                        <CE.2>Study</CE.2>
                    </ORC.16>
                </ORC>
                <ORM_O01.ORDER_DETAIL>
                    <ORM_O01.OBRRQDRQ1RXOODSODT_SUPPGRP>
                        <OBR>
                            <OBR.1></OBR.1>
                            <OBR.4>
                                <CE.1>1</CE.1>
                                <CE.2></CE.2>
                            </OBR.4>
                            <OBR.18>LAB</OBR.18>
                            <OBR.19>LAB</OBR.19>
                        </OBR>
                    </ORM_O01.OBRRQDRQ1RXOODSODT_SUPPGRP>
                    <NTE>
                        <NTE.3>Observations
                        </NTE.3>
                    </NTE>
                </ORM_O01.ORDER_DETAIL>
                <ORM_O01.ORDER_DETAIL>
                    <ORM_O01.OBRRQDRQ1RXOODSODT_SUPPGRP>
                        <OBR>
                            <OBR.1></OBR.1>
                            <OBR.4>
                                <CE.1>2</CE.1>
                                <CE.2></CE.2>
                            </OBR.4>
                            <OBR.18>LAB</OBR.18>
                            <OBR.19>LAB</OBR.19>
                        </OBR>
                    </ORM_O01.OBRRQDRQ1RXOODSODT_SUPPGRP>
                    <NTE>
                        <NTE.3>Observations
                        </NTE.3>
                    </NTE>
                </ORM_O01.ORDER_DETAIL>
            </ORM_O01.ORDER>
        </ORM_O01>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2
0 864
Question Sadagopan Srinivasan · May 31, 2020

Hi Guys,

I am trying to pull data from CacheDB and push into elasticsearch using logstash. In the configuration file i am giving the following. But it is throwing error No Suitable Driver Found for jdbc:Cache://ipaddress:port/namespace. Could anyone please help to resolve this ? I tried both JDK17 and JDK18 but no luck.

My Config file is as follows

input {
    jdbc {
    clean_run => true
    jdbc_driver_library => "C:\InterSystems\Cache\dev\java\lib\JDK17\cache-jdbc-2.0.0.jar"
    jdbc_driver_class => "com.intersys.jdbc.

6
1 1038
Question Mahmudul Hasan · May 31, 2020

I am new on Mac. I have tried to install Caché on Mac. The installation completed successfully but it failed to start up. 

It shows following failure message on the terminal:

Starting up Cache...
Once this completes, users may access Cache
Starting SANCHOY
Using 'cache.cpf' configuration file

Starting Control Process
Automatically configuring buffers
Allocated 430MB shared memory: 256MB global buffers, 35MB routine buffers
Creating a WIJ file to hold 99 megabytes of data
chdir failure. errno=13, program /Users/hello/Documents/SanchoyCache/bin//./cache
Call InterSystems Technical Support. : Permission denied

Sign-on inhibited.
See cconsole.log for details.

You can point your browser to http://MacBooks-MBP:57772/csp/sys/UtilHome.csp
to access the management portal.

Installation completed successfully
5
1 738
Article Sean Connelly · Sep 10, 2019 18m read

In this article, we will explore the development of an IRIS client for consuming RESTful API services that have been developed to the OData API standard.

We will be exploring a number of built-in IRIS libraries for making HTTP requests, reading and writing to JSON payloads, and seeing how we can use them in combination to build a generic client adaptor for OData. We will also explore the new JSON adapter for deserializing JSON into persistent objects.

Working with RESTful APIs
REST is a set of engineering principles that were forged from the work on standardizing the world wide web.

3
3 1314
Article alex kosinets · Feb 24, 2020 2m read

In MX any global can be displayed on a sheet in the form of a table.

We will look at the simplest example (work only with  CACHE-2014+ or IRIS)

Upgrade or install  MX.

Start mx.xlsb  and connect to your namespase with vmx-routines.

After opening first sheet, click button  []   ##class(SYS.Stats.Dashboard).Sample()

Then press button [design-mode]   (top of screen ).

You will see something like this in the top four lines:

M-Formulas works in cells in the process of opening this sheet,  step by step :

  • - go to the namespace %SYS    ( zn “%SYS” )
  • - set dashboard=##class(SYS.Stats.Dashboard).
5
0 685
Question Colin Parker · May 26, 2020

I am using the Java Binding to connect a Java Middleware Application to Cache.  Originally I was using a CacheListOfDataTypes (JAVATYPE = "java.lang.List") object to bring data back.  I was tasked with encrypting the data using AES and I was using the AESCBCEncrypt function on the List elements (up to 20k characters for each element) to bring it back before concatenating it on the middleware.  This almost worked.  Like 95% of the characters were being decrypted correctly but some text was coming back garbled.  I couldn't understand how this was happening.

3
1 611
Question Vikash Aravindh · May 29, 2020

Hello!  I have basic web services application that c# clients connect to the cache web services.  Using the browser, the user enters in the following url.

http://localhost:57772/csp/user/%25SOAP.WebServiceInvoke.cls?CLS=Sample…

which runs a soap method called Add.   I am not sure how to add https  security to the web service calls.  I have reviewed documentation pertaining configuring SST/TTL configuration and other information.   Can somebody please help me out on what I need to do?   If I change the url  from http to https, the web service class will not work.

1
0 1933
Question István Nagy · May 27, 2020

   Hi,

 I've started to use Task Schedule function in Caché. But I have two questions about it:

  1. I want to run the task as an indepedent, technical user. What is the minimum resources for this user to successfully run the defined task.
  2. I disabled the built in user _SYSTEM as the Tightening Security for an Instance article suggest. But I see that built in task run in the name of _SYSTEM user. For example Switch Journal. How can this work, if the user disabled? Should I use another user for this tasks?

Thanks!

4
0 364
Question Daniel McGowan · Mar 13, 2020

Hi All, 

So after finally getting cache to install (by enabling root user and disabling the gatekeeper) it tells me that it has started with one alert... that is "Private web server has not started after 5 seconds." - urgh!

Obviously i need access to the management portal to continue setup, I've done lots of googling but i cant find anything on this, does anyone have any ideas?

Many thanks, 

Dan

10
0 711
Question Daniel Lee · May 26, 2020

I have a class method that accepts a global parameter but when I attempt to order this global, the global name is listed as undefined. I can execute $DATA(pGlobalName) successfully.

ClassMethod ExamineGlobal(pGlobalName As %Global)
 {
    set gStatuspGlobalName 

In debug mode, data returns 1 for a valid global with no descendants. This is expected.

However, when I call $ORDER, it shows <UNDEFINED> for pGlobalName. My guess is that ORDER is operating on the local variable pGlobalName instead of its value?

3
0 412
Article Evgeny Shvarov · May 25, 2020 2m read

Hi ObjectScript developers!

How to Protect Your Belongings from Pests While Moving - Delicate ...

InterSystems ObjectScript is perhaps the best language on the planet to deal with globals - and it is an interpretable language.

Yes, it has a compiler. But even the compiler can compile some lines in ObjectScript which will then fire as bugs during the runtime.

There are some technics on how to avoid that such as unit testing, coding guidelines and your coding experience, of course ;)

Here I want to present to you the yet another approach to how you can reduce the number of errors in your ObjectScript runtime and enforce coding guidelines - it's an ObjectScript Quality tool developed by Lite Solutions, InterSystems solution partner.

See the details below.

0
0 537
Question David Cui · May 24, 2020

I can run the following commands from the AIX command line prompt without any problem

-bash-2.05b$ echo t
t
-bash-2.05b$ echo œ
œ

When I call from insider cache, I have problem.

USER>D $ZF(-1,"echo t")
t

USER>D $ZF(-1,"echo œ")

D $ZF(-1,"echo œ")
^
<TRANSLATE>

I am using cache 2017.2.  Can someone shed some light?

Thank you.

5
0 319
Question Paul Hula · May 22, 2020

Hi All,

   It must be the groundhog days but I can't solve something that I know I've done before.  I have a legacy CSP page on a version of Cache without JSON and just pure Cache.

  I need a CSP page that takes a .xlsx file, manipulates the file (in COS) and then returns a new manipulated file.

  My CSP Page gets the file fine, the problem is then returning the response with the new file as an attachment.  I don't want to pipe to a new csp page with a different content-type so was sure I can set %response.Headers etc to get the reply stream I want.

6
0 971
Discussion Evgeny Shvarov · Mar 24, 2017

Hi, Community!

Would you please share your best practices for utilising 3rd party modules (say community solutions, frameworks, development tools/utils).

There are two approaches which I like:

1. New namespace for every new module

So, if you install something you install it in special separate namespace/database. MDX2JSON/DeepSeeWeb case.

If the package is intended to be used in other namespaces, map the packages to %All and have it available in all the namespaces in this Caché/Ensemble.

And there is one more benefit: it is easy to uninstall the module, just delete the namespace/database.

2.

5
0 594
Question Ronnie Fish · Apr 28, 2020

Has anyone recently deployed the cache-git-studio plugin from Github repo?

In particular, I see that this plugin is installed at the namespace level, so it appears for each user have their commits in their own name, they must all be running a locally installed cache server when doing their dev work. I suspect that is the preferred way.

In my organization they are currently just accessing a remote cache server from Studio. In that scenario, it looks like it would be one installation of git for the whole team. and thus only one shared git user.

3
0 736