#Caché

30 Followers · 4.6K Posts

  

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

Documentation.

Announcement Laurel James (GJS) · Apr 26, 2023

Deltanji 7.1 is now available.

Key updates include: 

* Interoperability Production component driver included, for customers who have purchased the add-on. You can watch a short demo of it here.
* Implement multi-select delete of objects and components
* Add setting to give a passable Beyond Compare launch command line
* Support simplified Locations & Routes diagram 

For more information, read the release notes here >> https://bit.ly/3mHyJHc

Please get in touch with support@georgejames.com for your release kit. 

The update is also available for Serenji debugger users on VS Code, which has the Deltanji solo edition embedded. Simply update the Serenji extension to version 3.2.3 or later and load the server-side code. 

0
0 252
Question Tiana Andria · Apr 21, 2023

Hello,

I have a form from named otpForm from where I post data to actionCheck.csp and redirect it to another csp file cmain.csp after form post and the redirect is not working. I tried to debug and check the value in the cmain.csp but noticed that redirec t is not working.

Do you know if window.location.href = "cmain.csp";    is working with CSP?

Can someone guide me what to do here please

Thank you

Here is what I did:

//post and redirect form data

<script type="text/javascript">
            jQuery(document).

1
0 386
Article Ward De Backer · Apr 21, 2023 5m read

When you install an IRIS or Caché instance on Windows Server, you'll usually need to install it under a specific user account that has network access permissions. This is very handy when you needs to access network resources for creating files or directly accessing printers.

TL;DR: see key takeaways at the bottom!

When you need to change the Windows user account the IRIS/Caché service is running as, you can configure (after installation):

  • for IRIS (also see the docs): 
    <install-dir>\bin\IRISinstall.exe setserviceusername <instance-name> <username> <password>
0
1 723
Question Julian Matthews · May 3, 2019

Hi all.

I have a process/operation within Ensemble that grabs a PDF from a webservice, and then saves it to an external location. All is well, except I am noticing that a lot of .Stream files are being stored on the Cache Server.

Does anyone know what causes these to be stored and what would trigger their removal? Would I be right to assume these would be removed if I ran Ens.Util.Tasks.PurgeMessageBank and the creation dates fell within the purge range?

Edit: I answered my own question on if the purge would clear them out. The answer is yes.

4
0 1535
Article Mihoko Iijima · Apr 13, 2023 6m read

InterSystems FAQ rubric

In this article, we will introduce how to deal with the situation: "I accidentally deleted a global!"

Backup files and journals are used to recover specific globals that have been accidentally deleted. Restoration is performed by specifying conditions and restoring journal records using the ^ZJRNFILT utility In this way, you can apply a point-in-time backup of the database up to and including deleting a specific global for journal records that contain deletions.

2
1 810
Question Anna Golitsyna · Feb 9, 2023

Let's supposed somebody updates routines via %RCOPY or %RI, the really old-style hardcore way which still works. Does that leave any log traces in Journaling or system globals, as of when exactly did it happen or what was the IP address of the machine changes came from? I am aware only of the Date Modified changes as seen when opening the file.

4
0 452
Question water huang · Apr 6, 2023

hi,I meet a problem,i want to move huge data from ensemble to oracle.it`s about 3years business data.i have tried some case!

1. EnsLib.SQL.OutboundAdapter

i parse the data one by one,and translate it into inser or update sql statement then write to Oracle,it·s most slowly,and take more disk space。

2.save the data to a new table,and then use dbeaver transport data to oracle。

3.user linktable. save object as insert,but,i can·t user %openid method.

hope to find a high-efficiency way!

1
0 362
Question Joao Palma · Feb 18, 2019

Hi

I've got a string variable which I need to convert into a XML one.

My main goal here is to use the XML bit I've extracted from a HTML file in a message I need to pass over to an operation.

I'm doing the following which always errors

classMethod WriteNodes(myfile As %String)
{
    Set status=##class(%XML.TextReader).ParseString(myfile,.reader)

....

Any easy way of making this happen?

Kind regards

18
1 2377
Question Marcelo Witt · Mar 29, 2023

Looking at the documentation, I see that the global ^ROUTINE brings the information and code of the .INT version of the routines. However, I would like to know where the equivalent information of the .MAC version is, as I did not find any reference to this in the documentation.
Some information in the .MAC version are hidden or already converted into the .INT version, and I would like to have access to this information through the system, and not just opening the routine in the studio.

2
0 416
Question Michoel Reach · Mar 28, 2023

In the documentation  Data Types | Caché SQL Reference | Caché & Ensemble 2018.1.4 – 2018.1.8 (intersystems.com)

it says that "by default, Caché establishes a system-wide ODBC VARCHAR maximum length of 4096; this ODBC maximum length is configurable"

Per instructions, I went to SMP -> System -> Configuration -> General SQL Settings, where most of the fields from  $SYSTEM.SQL.CurrentSettings()

appear. That one does not.

How does one change it, and can it be increased?

Thanks!

[Cross-posted from https://groups.google.com/g/intersystems-public-cache/c/eRFeORb_sb0]

2
0 469
Question Robert Hildebrand · Mar 27, 2023

Hi,

we get HL7 MDM messages with embedded PDF documents that are Base64 encoded. When the embedded PDF document exceeds the size of 3.6 MB the following error occurs:

FEHLER <Ens>ErrBPTerminated: BP Main HL7 MDM # wird wegen folgenden Fehlers beendet: FEHLER #5002: Caché-Fehler: <MAXSTRING>zgetAtFromArray+46^EnsLib.HL7.Segment.1
> FEHLER #5002: Caché-Fehler: <MAXSTRING>zgetAtFromArray+46^EnsLib.HL7.Segment.1

In other posts I read that you can avoid these errors, if you use the data type %VarString instead of normal %String.

3
0 466
Question Kalle Päplow · Mar 29, 2023

Hello,

I have a question regarding the Intersystems Caché Database and its jdbc driver. I need to set the connection timeout for the database, but I couldn't find any documentation stating that the jdbc driver for Caché supports setting the connection timeout. However, I noticed that the jdbc driver for the Intersystems Iris Database appears to support this feature.

My question is, can I use the Iris jdbc driver to set the connection timeout for the Caché Database?

The jdbc driver I use: cache-jdbc-2.0.0.jar

Thank you for your help.

Best regards,
Kalle

0
0 346
Question Scott Roth · Mar 28, 2023

I am trying to pinpoint and troubleshoot an issue we have been seeing lately. We have several SQL Outbound Adapter Operations that are seeing issues trying to connect to our MS SQL Servers using the JDBC Gateway for calling insert, select, update, and stored procedure calls.

ERROR <Ens>ErrFailureTimeout: FailureTimeout of 20 seconds exceeded in osuwmc.Visit.

0
0 393
Article Hiroshi Sato · Mar 23, 2023 1m read

InterSystems FAQ rubric

You can programmatically retrieve routine dates and sizes using the RoutineList query of the %Library.Routine (or just %Routine) class.

The RoutineList query has an argument, and the routine name to be searched can be specified by prefix match or middle match. (For wildcards, specify * or ?)

In the example below, *.MAC is specified as an argument.

 SET##class

In addition to the routine list, you can also get the class definition list.

2
0 737
Article Julian Matthews · Mar 17, 2023 7m read

Introduction

Say you have a receiving system that accepts HL7 and provides error messages in field ERR:3.9 in the ACK it returns. You require a different reply code action depending on the error message, however the Reply Code Actions settings for the operation do not provide this level of granularity. One option could be to create a process that takes the ACK and then completes the action you were expecting, however things can get a bit messy if the action is to retry the message, especially when trying to view a message trace.

2
1 942
Article Peter Steiwer · Jan 17, 2020 1m read

If you are seeing this error during import: ERROR #6301 Line: 2 Offset: 118 This does not appear to be a Cache exported file, unable to import.

This error is caused by exporting from InterSystems IRIS and trying to import into Caché. If you plan on exporting from IRIS to Caché, you can use the following qualifier to export your classes so that Caché does not throw an error on import:

w $SYSTEM.OBJ.Export(<items>,<filename>,"/exportversion=cache2018.1")

Please see the Documentation for more information about this Export Qualifier

3
0 966
InterSystems Official Jeff Fried · Mar 23, 2023

InterSystems is committed to providing high quality product support to customers for all products, new and old.   As products age – Caché is now 25 – that support will evolve.

InterSystems IRIS was released in 2018 and it is the successor to Caché and Ensemble.  Many Caché/Ensemble customers have migrated to IRIS or have plans to do so in the next few years.  Customers continuing to use Caché or Ensemble should be aware of the following important announcement:

Caché/Ensemble maintenance releases will continue for the next 4 years - through Q1 of 2027.

0
1 1512
Question Smythe Smythee · Mar 23, 2023

Hi Community,

I am trying to save data into SQL table but each entry  getting saved twice in the SQL table. Is there any reason data is saving Twice in the SQL table 

I have created a %Persistent class for the fields

Please find the business operation below

Class Patient.DBOperation Extends Ens.BusinessOperation

{

Parameter ADAPTER = "EnsLib.SQL.OutboundAdapter";

Property Adapter As EnsLib.SQL.OutboundAdapter;

Parameter INVOCATION = "Queue";

Method OnMessage(pInput As Patient.PatientDBReq, pOutput As Ens.Response) As %Status
{
    Set Entry=##class(Patient.PatientDBReq).%New()
    Set Entry.

6
0 422
Article water huang · Mar 19, 2023 9m read

1.Background

        1.1 I met a few project that their interface servers were crashed. Cutoms wanted resume server as fast as we can. their servers are running at lan,and they can't use git,there are some namesapce in the server running different service,and usualy there is only one server.

        1.2 In the message,it has property in typeof characterstream,as you know,the message search page doesn't support filtering with  property of characterstream,so it's so hard to find the messge you want.

        1.3 Other workmate may update the code on the server,and mybe their is something wrong.

2.

11
2 752
Article Eduard Lebedyuk · Mar 1, 2017 17m read

The task of handling office documents, namely docx documents, xlsx tables and pptx presentations is quite complicated. This article offers a way to parse, create and edit documents using only XSLT and ZIP.

Why? docx is the most popular document format, so the ability to generate and parse this format would always can be useful. The solution in a form of a ready-made library, can be problematic for several reasons:

  • library may not exist
  • you do not need another black box in your project
  • library restrictions : platforms, features, etc.
  • licensing
  • processing speed

In this article, I would use only basic tools for work with the docx documents.

3
1 7035
Article Daniel Aguilar · Mar 18, 2023 3m read

One of the reasons why I love Cache and Iris is that not only you can do anything you can imagine, also you can do it in a lot of different ways!!.

Imagine that you have an integration running with IRIS connected by ODBC you probably only run SQL queries but you can also create stored procedures and inside write the code to do everything you can imagine.

I'm going to give you some examples but the limit is your imagination!!

You might wonder, wait! I don't know how to create a store procedure in IRIS.

1
2 588
Question Edoeard Kroetkov · Mar 17, 2023

Goodday,

I would like to Validate token signature with public key i have in pem format, i am using below  code but i get error message. Could you please tell me what i am doing not right? FOUT #5002: Caché fout : <DIRECTORY>zLinkToFile+2^%Stream.FileBinary.1 *-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMI ...

hier is my code

Method ValidateTokenWithPublicKey(jwt As %String) As %String
{
   
     Set tFile=##Class(%File).%New("c:\Kety\publicKey.pem")
    Do tFile.Close()
    Set tStatus=tFile.Open("RU")
    $$$ThrowOnError(tStatus)
    Set tPublicKey=tFile.Read()

1
0 298
InterSystems Official Fabiano Sanches · Mar 6, 2023

InterSystems announces the Maintenance Release (MR) of Caché, Ensemble and HSAP 2018.1.8. This is a maintenance release with many updates across a wide variety of areas.

Caché and Ensemble

Full product installation kits can be downloaded from the WRC Software Distribution website:

For information about the corrections in this release, refer to the Release Changes Notes. The documentation for Caché and Ensemble includes these as well as the Supported Platforms document, the Class Reference, and a full set of guides, references, tutorials, and articles.

1
0 495
InterSystems Official Steve Brunner · Oct 7, 2016

InterSystems is happy to announce the availability of our newest Data Platforms release: Caché and Ensemble 2016.2

The highlights of 2016.2 are:

  • Server support for Atelier, the new Eclipse-based IDE
  • Support for OAuth 2.0 and OpenID Connect
  • SQL syntax has been enriched with support for JSON
  • SQL improvements and performance enhancements

For complete technical details of what’s changed in 2016.2, review the Caché release notes and the Ensemble release notes.  Additional materials have been posted to the InterSystems Developer Community

8
0 2881
Question Mark Charlton · Feb 17, 2023

I know this problem something to do with sort and collation and string comparison vs numeric only strings, but I can't fathom out the details of it. 

I have the following global, where all values are suffixed with a space, I believe the intention is to prevent empty strings and force string comparisons rather than numeric. Which is fine when searching for an exact match, so searching for "ABC" internally looks for "ABC ", or "800999" looks for "800999 ". However one function tries to search for strings containing, (specifically beginning with), a partial code.

12
0 546