#Caché

30 Followers · 4.6K Posts

  

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

Documentation.

Question Sreevani Goli · Jan 26, 2022

Hi Developers,

I need to construct a string as xml which consists of "" in it.  As example below

set teststr ="<book id="bk105"><author type="old">Corets, Eva</author><title>The Sundered Grail</title><genre>Fantasy</genre></book>"

giving error in the area where " in middle of the string (highlighted in bold)

Could anybody suggest to me, how to construct a static string in object scripts with " in it?

4
0 504
Question John Hotalen · Jan 26, 2022

Hello To all my fellow Cache Developers,

How the new year is finding everyone well.  The purpose of this post is to ask everyone a question about Cache tablepane dblclick functionality that does not appear to be working like I thought it would.   Here is my dilemma:   I have a fairly simple tablepane that displays several columns of data (just strings and dates).  I setup the tablepane property dblclick to call a client method, so I can take an action based on the row that the user double-clicked on.  So that table property is set to this     dblclick="zenPage.

2
0 195
Article Andrey Shcheglov · Dec 13, 2018 6m read

Astronomers’ tools

5 years ago, on December 19, 2013, the ESA launched an orbital telescope called Gaia. Learn more about the Gaia mission on the official website of the European Space Agency or in the article by Vitaly Egorov (Billion pixels for a billion stars).

However, few people know what technology the agency chose for storing and processing the data collected by Gaia. Two years before the launch, in 2011, the developers were considering a number of candidates (see “Astrostatistics and Data Mining” by Luis Manuel Sarro, Laurent Eyer, William O’Mullane, Joris De Ridder, pp. 111-112):

Comparing the technologies side-by-side produced the following results (source):

Technology Time
DB2 13min55s
PostgreSQL 8 14min50s
PostgreSQL 9 6min50s
Hadoop 3min37s
Cassandra 3min37s
Caché 2min25s

The first four will probably sound familiar even to schoolchildren. But what is Caché XEP?

9
1 1162
Question Norman W. Freeman · Jan 17, 2022

I would like to create a toolbar button in Cache Studio. After clicking on it, it would run a custom command (eg: to execute a routine that will clean a global).

I took a look at dialog that is shown after right clicking on a toolbar in Studio, then choosing "Customize" but AFAIK there is nothing there that allow such a thing.

I know it's possible to customize menu items by extending %Studio.SourceControl.Base class, is there something similar for toolbars ?


6
0 414
Question Dominic Chui · Oct 11, 2021

Does anyone know of a relatively quick and straightforward way of converting code written in the old dot scoping syntax with argumentless do (see here for reference: https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_cdo_legacy) to the modern parentheses scoping syntax? It's not too bad to do it by hand, but it's also easy to make a mistake and leave a "quit" in an if statement by accident for example.

E.g.

do:someCondition

.set value = do ##class(ExampleClass).ExampleFunctionThatReturnsValue()  quit:'value

do ##class(ExampleClass).

10
1 727
Question Jeff Herring · Jan 10, 2022

I am trying to emulate a behavior we used to have on an older Cache' system, namely the ability to call "csession cache" from inside of .bash_profile.

On the older system, passwordless users were allowed, now password is required.

The desired behavior is to have user log into linux and go directly into our cache application, which is character-based.

I have tried this technique, without success:

csession cache < myfile.txt.  where myfile.txt contains two lines, username on first line, password on second line.

2
0 386
Question Murray Oldfield · Apr 21, 2017

I am looking for experience of people running Veeam with Caché databases. 

Tips/Tricks/General questions like; what Veeam features are you using, what your backup cycle looks like, where does your data end up, what recovery/integrity checks you do, what sort of compression/dedupe you get. 

Also what questions _you_ have and what problems you might be trying to solve.

9
0 2136
Question Limyandi Vicotrico · Aug 23, 2020

Hi Everyone,

Has anyone tried to write down a function in a routine that list all of possible function inside the routine? I can only think of iterating through the routine line one by one and differentiate between function and function definition. Is there any existing function that can be utilised? I think it should work similar to how

do function^routineName 

works. I could not find the source for how "do" works, but I believe do will look at the list of function in the routine, and if it finds it, it will call the function, but if it does not find it, it will give an error?

5
0 686
Article Henrique Dias · Aug 20, 2019 2m read

Hi, everyone!


I want to share a personal project that started with a simple request at work: 

Is it's possible to know how many Caché licenses we are using? 

Reading other articles here in the community, I found this excellent article by  David Loveluck 


APM - Using the Caché History Monitor
https://community.intersystems.com/post/apm-using-cach%C3%A9-history-monitor

So, using David's article, I started using Caché History Monitor and to show all that information. 

When facing the question: Which cool tech should I use?

24
8 2450
Article Chris Stewart · Apr 18, 2017 3m read

or "So you just got yelled at by your boss, for sending him an unformatted Hello World webpage"

Our previous lesson ended with us serving a Message value obtained from a Caché REST service to the client, using Angular as a runtime.  While there is a lot of moving parts involved in this process, the page is not especially exciting at the moment.  Before we can start adding new features, we should take a step back and review our tools.


This tutorial is using the JSON functionality built into 2016.2+ versions of Caché.  This functionality is partially available in 2016.

1
1 2736
Question prashanth ponugoti · Jan 6, 2022

Hi Friends ,

We have requirement to convert source hl7 message to target json message using dtl.

Currently I have created persistent cls for json and completed the dtl.

DTL giving output as json equivalent xml.

Now how to convert DTL result xml object to json?

set oStream = ##class(%Stream.GlobalCharacter).%New()
set json = pResDTLresponseXml.%ToJSON()
set tSC = ##class("%ZEN.Auxiliary.altJSONProvider").%WriteJSONFromObject(pResDTLresponseXml,.json)
set tSC = oStream.Write(json)
if $$$ISERR(tSC) $$$LOGERROR("Error convert dynamic object to JSON stream: "_$System.Status.

1
0 653
Question Vermon Ferre · Dec 9, 2020

I am trying to connect to an external SFTP. They have our public key and I have the private key which is password protected. I have the credentials set to the sftp username and the password to the private key.

If I set the private key only, I get a username/password error connecting. If I set both the public and private key files, I get the error below:

ERROR #7510: SSH Error '-19': SSH Error [80101013]: Callback returned error [80101013] at Session.cpp:418,0

I have this working perfectly using filezilla, however I can't get it to work with EnsLib.FTP.PassthroughService.

4
0 5151
Article Rob Tweed · Dec 20, 2021 1m read

For those of you who might be new to IRIS, and even those who have used Cache or IRIS for some time but want to explore beyond its usually-assumed boundaries and practices, you might want to dive into this detailed exploration of the database engine that is at its heart, and discover just what you can really do with it, going way beyond what InterSystems have done with it for you. 

You'll discover that it's actually a hugely powerful yet incredibly simple storage engine that allows you to model any kind of database you wish, once you understand and master its simple, basic principles.

5
4 560
Question Christopher Hardage · Feb 4, 2020

The "Download Caché Evaluation" at the top of this forum takes the user to a page that only allows her to download versions of IRIS. What am I missing here? Does IRIS encompass Caché? I've wandered around both on the main website and in the Developer Community site looking for a way to only get Caché... Very frustrating.

I appreciate any help you all can provide. Thanks!

11
0 2448
Question Justin Richter · Jan 3, 2022

So I've been reviewing a lot of questions posted in the InterSystems community regarding NULL properties in JSON. I've also been reviewing the JSON documentation. None of these things have been able to help me so far.

1. We don't seem to have the %JSON.Adaptor class available for us to use in our system.

2. I'm not really confident enough to create JSON Type classes or backporting code, etc.

I created a dummy class and I need my JSON to look like this:
{
    "notanumber":"28001",
    "aboolean":true,
    "anumber":12345,
    "adecimal":1.

2
0 887
Question Marcio Coelho · Dec 15, 2021

I Have a problem with a Signature validator to XML file, when this file have more than one Signature tag.

Like This

<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00">
    <NFe>
        <infNFe Id="NFexxx" versao="4.00">
            ...
        </infNFe>
        <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
            <SignedInfo>
                <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
                <SignatureMethod Algorithm="http://www.
3
0 603
Question Eduard Lebedyuk · Dec 16, 2015

Hello.

I want to store a mailbox in Caché, persistently.

Does anyone have some code for downloading all messages from mailbox into Caché? And maybe automatic syncing after download? I know, there is  %Net.POP3 but maybe someone has already done that.

Thank you.

12
0 1478
Question Craig Clifford · Mar 4, 2021

We have an interface that need to be disabled then re-enabled when it starts to queue up. I wrote the following code to do this functionality in a process. This works in our development domain, but in production it says it fails to disable the job - it only shuts down the interface without updating the production/starting the interface back up. Error message: "Failed to stop job '36831290' within 60 seconds. Status '<unknown>" 

Is there something wrong with how I'm trying to do this? 

set tSC = ##class(Ens.Director).EnableConfigItem(itemname,0,0) 

set tSC = ##class(Ens.Director).

3
0 428
Question Cristiane Ferreira Mello · Dec 23, 2021

I need to send the data from a view that returned NULL, but is going as empty. The fields are of type String.

I'm using: 

 SET tSC  ##Class
{
    "altura": "",
    "atendimento_id": "3060382",
    "data_atualizacao": "2021-12-16 10:39:12.0",
    "data_coleta": "2021-12-16 10:37:00.0",
    "data_liberacao": "2021-12-16 10:39:12.0",
    "dor": "1",
    "dor_nr_seq_result": "",
    "escala_dor": "",
    "escala_temp": "C",
    "freq_cardiaca": "80",
    "freq_respiratoria": "22",
    "glicemia_capilar": "",
    "ds_ritmo_ecg": "",
    "ds_decubito": "",
    "ie_derivacao_seg_st": "N",
    "ds_derivacao_seg_st": "",
    "nivel_consciencia": "",
    "pa_aparelho": "",
    "pa_diastolica": 80,
    "pa_manguito": "",
    "pa_sistolica": "120",
    "paciente_id": "903283",
    "peso": "",
    "profissional_id": "260",
    "prontuario_id": "903283-7",
    "sat_o2": "",
    "sat_o2_membro": "",
    "setor": {
        "id": "38",
        "nome": "7 A CLIN/CIR PEDIATRIA"
    },
    "temperatura": "36",
    "unidade_altura": "CM",
    "unidade_peso": "KG",
    "ie_o2_suplementar": "N"
}
9
0 2120
Article Sylvain Guilbaud · Oct 6, 2016 3m read

to dismount/mount a database, use Dismount() and Mount() methods in SYS.Database class available in %SYS namespace.
NB: the database ID is its Directory

You'll find  some examples of how to dismount/mount and check if a database is mounted (Mounted=1) or not (Mounted=0), and quickly see all the attributes of a database (via zwrite)


%SYS>set db="/opt/irisapp/data" 

%SYS>w ##class(SYS.Database).%OpenId(db).Mounted                     
1
%SYS>w ##class(SYS.Database).%OpenId(db).Dismount()
1
%SYS>w ##class(SYS.Database).%OpenId(db).Mounted   
0
%SYS>w ##class(SYS.Database).%OpenId(db).Mount()   
1
%SYS>w ##class(SYS.Database).%OpenId(db).Mounted
1
%SYS>zw ##class(SYS.Database).%OpenId(db)
+----------------- general information ---------------
|      oref value: 3
|      class name: SYS.Database
|           %%OID: $lb("/opt/irisapp/data","SYS.Database")
| reference count: 2
+----------------- attribute values ------------------
|       %Concurrency = 0  <Set>
|        BlockFormat = 2
|          BlockSize = 8192  <Set>
|             Blocks = 780288
|       BlocksPerMap = 62464
|   ClusterMountMode = 0  <Set>
|     ClusterMounted = 0  <Set>
|        CurrentMaps = 13
|          Directory = "/opt/irisapp/data/"  <Set>
|     DirectoryBlock = 3
|        EncryptedDB = 0  <Set>
|    EncryptionKeyID = ""
|          Expanding = 0
|      ExpansionSize = 0  <Set>
|               Full = 0
| GlobalJournalState = 3  <Get,Set>
|     InActiveMirror = 0
|  LastExpansionTime = "09/06/2023 20:00:01"
|            MaxSize = 0  <Set>
|MirrorActivationRequired = 0
|    MirrorDBCatchup = 0
| MirrorDBCreatedNew = 0
|       MirrorDBName = ""
|     MirrorDBPaused = 0
|   MirrorFailoverDB = 0
|      MirrorNoWrite = 0
|     MirrorObsolete = 0
|      MirrorSetName = ""
|           Mirrored = 0
|            Mounted = 1
| NewGlobalCollation = 5  <Set>
|NewGlobalGrowthBlock = 50  <Set>
|    NewGlobalIsKeep = 0  <Set>
|NewGlobalPointerBlock = 16  <Set>
|   NumberOfConfigDB = 0
|       ROReasonCode = 0
|       ROReasonText = ""
|           ReCreate = 0
|           ReadOnly = 0  <Set>
|    ReadOnlyMounted = 0
|       Reinitialize = 0
|        RequestSize = 0
|       ResourceName = "%DB_IRISAPP-DATA"
|RunCatchupDBOnCreate = 1
|                SFN = 6
|               Size = 6096  <Set>
|           Skeleton = 0
|           SparseDB = 0
+----------------------------------------------------- 
%SYS>
2
1 2966
Question Maxim Berezkin · Dec 24, 2021

Hello!

I send request: 

set hr=##class(%Net.HttpRequest).%New()
set hr.Server = "server.com"
set hr.Location = "method?param=value"
do hr.EntityBody.Write("{ "name": "value" }")
set tSC=hr.Send("POST")
But when request incoming to server.com URI = "method
%3Fparam%3Dvalue".
How I can 
disable urlencode params in URI, so that the URI remains "method?param=value"?

7
0 880
Article Vivian Lee · Dec 15, 2021 3m read

Setting the Scene

I was editing the properties of a persistent ObjectScript class the other day and noticed that the storage definition wasn't updating to reflect my latest changes.

In this case, I deleted a property that was no longer needed from the class definition, saved, recompiled, and still saw it in the storage definition.

No problem, I thought. If the storage definition gets autogenerated on compile, I can just delete it and recompile the class. Sure enough, after doing this, I no longer saw the deleted property in the storage definition.

There, problem solved.

7
5 928