#Caché

30 Followers · 4.6K Posts

  

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

Documentation.

Article Gevorg Arutiunian · Oct 8, 2018 2m read

This code snippet provides a ZEN page that downloads a stream from its database directly:


/// We assume that you have stored your data within this schema:
/// MyApp.Model.Storage: Filename,FileSize,Content,ContentType
Class zen.downloadStream Extends (%ZEN.Component.page,%CSP.StreamServer)
{
/// Wrapper to get the id of the download, we assume that the id is passed to this zen page
/// as a URI parameter, i.e.: MyApp.Downloads.cls?OID=1234
ClassMethod GetId()
{
    Quit $Get(%request.Data("OID",1))
}
 
/// Set the appropriate header for the file.
ClassMethod OnPreHTTP() As %Boolean
{
    Set tId = ..GetId()
 
    If ##Class(MyApp.Model.Storage).%ExistsId(tId) {
        Set tStream = ##Class(MyApp.Model.Storage).%OpenId(tId)
        // You could "guess" the content type by its file extension
        // or you can store it (before) in the database separately (like in this example).
        // Set Extension = $Piece(tStream.Filename,".",$Length(tStream.Filename,"."))
        // Set ContentType = ..FileClassify(Extension)
 
        Set %response.ContentType = tStream.ContentType
        Do %response.SetHeader("content-disposition","attachment; filename="_tStream.Filename)
        Do %response.SetHeader("Content-Length",tStream.FileSize)
    }
    Else {
        Set %response.Status="404 File Not Found"
        Quit 0
    }
    Quit $$$OK
}
 
ClassMethod OnPage() As %Status
{
    Set Download = ##Class(MyApp.Model.Storage).%OpenId(..GetId())
    Do Download.Content.OutputToDevice()
    Quit $$$OK
}

}

Link to code on GitHub

1
2 688
Question Tuan Minh Do · Oct 4, 2018

Hello,

I am a beginner with Object Script and I hope anyone can help me solving my questions.

1. Is there a way to time a loop in Object Script? 

2. My code leads to the following error, even though it executes the method.

Is there a way to ignore this specific error, so that I can repeat my code in a time loop over and over again without stopping? 

3
1 1091
Question Jagadeesha Krishnamurthy · Oct 3, 2018

Hi 

Anyone worked on "ccontrol  list " command execution through Cache Object Scripting.

I executed through  bat file passing this ../bin ccontrol  list  . Icould not get the results through COS  but executed in command prompt 

it pops up with notepad and list down Cache instances.

Need help here to address the same stuff through cache object scripting.

3
0 915
Question Justin Wilderom · Oct 5, 2018

Can anyone tell me where to find good resources to learn Caché besides InterSystems.  I am  looking foe material (ie books, white paper, exercises, ect).  There does not seem to be a lot of information on Caché.

Thank you for all of your help

Justin

2
0 365
Question John Murray · Oct 2, 2018

Using our cool new debugging extension for Visual Studio Code I'm trying to debug a CreateProjection method of a class, but when I compile it the work apparently gets done in one of the worker jobs, so my breakpoint never triggers.

Is there a compiler flag or qualifier to force the compilation to be done in-process rather than getting handed off to a worker job?

4
0 571
Question Stephen Wilson · Oct 4, 2018

You have a global ^CODE("TNO","BIO",291,"AKI") that may or may not exist. On the data side of the global ref it can have  a boolean value of 0 (false) or 1 (true) and this global is wrapped up in a Caché class accessible from myobject.AKI property. At the object level, how do you check whether the property is defined ie. is there a $DATA equivalent for Cache Object properties? Also, how would you kill /null the property as opposed to making the value  0 (false) or an empty string?

10
0 3957
Question Confused Developer · May 4, 2017

Hi All,

I need urgent help,

I want to export the values from Global to CSV file.

Values are in global are :

^Global1(1)="1,2,3,4"
^Global1(2)="5,6,7,8"
.
.
.
^Global1(n)="n,n,n,n"

I want output in CSV File as:
1,2,3,4
5,6,7,8
.
.
.
n,n,n,n

I made a class:

ClassMethod ExportNewSchemaGlobals(pFile)
{
    Set ary("^Global1")=""
    Set pFile = "C:/Test.csv"
      
    Set ary = ##class(%Library.Global).Export(,.ary,pFile)
}

5
0 2261
Question Tuan Minh Do · Oct 3, 2018

Hello,

I have a question about creating properties with curl.

I already did create properties in Java with the following command.

It created the property TotalSteps with the type %Integer and the data path $.TotalSteps (since the header of my data source is also TotalSteps).

Now I would like to create the same property in curl with the following command

2
0 563
Question Rosti Zacharias · Oct 4, 2018

Hi,

It has been pointed out to me that one of my applications fails to display all of the contents when displayed on an iPhone or a tablet of smaller res that a desktop screen.

Desktop..

iPhone..

The code does not change between the two views of the same page. 

To maintain easy alignment and control, I have used standard <tr> and <td> <table> codes, expecting same behaviour in any browser on any platform.

1
0 413
Question Julie Marulappa · Sep 27, 2018

I have an http adapter that calls out to a web service and is looking for a "Completed" response. I want the adapter to wait a certain number of seconds before calling out again to get a response. I have tried setting the retry interval on the business operation but that does not do it. See my code below.

While pResponse.StringValue = "Processing" {
set tSC=..Adapter.PostURL(tURL,.tHTTPResponse,,tId)
do tHTTPResponse.Data.Rewind()
set pResponse.StringValue = tHTTPResponse.Data.Read(3000000,.tSC)
$$$TRACE("Second Response: "_pResponse.StringValue)
}

5
0 623
Question Alexey Maslov · Sep 28, 2018

There are some classes in our code base that contain Methods only (no properties). I told my colleagues that converting them into the ClassMethods should improve performance as it would eliminate unnecessary OREF support at run-time. Some of them replied that it would be microseconds, so what is the reason to bother.

Is it possible to estimate the impact of OREF support of method calls at run-time? E.g., as a % of all CPU load. 

12
0 604
Question Julian Matthews · Oct 1, 2018

Hi all.

As part of my dysfunctional journey with FHIR, I'm looking at using the SDA3 within Healthshare to then convert to the HSFHIR format.

This is working surprisingly well, except I'm falling over when it comes to repeating fields within the SDA3 when creating the HS.SDA3.Patient object manually from within Cache.

If I take the Patient ID as an example - within a DTL, I can quite easily take an MRN and add that to the target PatientNumbers.(1).Number and then add an NHS number to the target PatientNumbers.(2).Number.

1
1 550
InterSystems Official Jeff Fried · Sep 29, 2018

InterSystems is pleased to announce that  InterSystems Caché and Ensemble 2018 are now released!

New in these releases are features that improve security and operations, including:

· Key Management Interoperability Protocol (KMIP) support
· Microsoft Volume Shadow Copy (VSS) integration
· Integrated Windows Authentication support for HTTP
· SSH enhancements

0
1 1815
Article Gevorg Arutiunian · Sep 27, 2018 2m read

The following class method "test" contains code that can create a new class, create new properties for classes, or create new methods for classes. "test" runs all three of these processes once, and the code that performs each action is labelled by comments in the method:


ClassMethod test() As %Status
{
set sc = $$$OK
// Create a class
set class = ##class(%ClassDefinition).%New("MyClass")
set class.Description = "This is my test class"_$c(13,10)_"testing %ClassDefinition"
set class.Super = "%Persistent"

// Create a property and add it
set property = ##class(%PropertyDefinition).%New("MyClass.MyProperty")
set property.Type = "%String"
set property.Description="This is a property"
set sc1 = class.Properties.Insert(property)
do:$$$ISERR(sc1) $system.Status.DisplayError(sc1)
set sc = $$$ADDSC(sc, sc1)

// Create a method and add it
set method = ##class(%MethodDefinition).%New("MyClass.MyMethod")
set method.ReturnType = "%Integer"
set method.FormalSpec = "x:%Integer,y:%Integer=10"
set method.Description = "Return product of x and y"
set method.CodeMode = "code"
set method.Code = " new result"_$c(13,10)_" set result=x*y"_$c(13,10)_" quit result"
set sc2 = class.Methods.Insert(method)
do:$$$ISERR(sc2) $system.Status.DisplayError(sc2)
set sc = $$$ADDSC(sc, sc2)

// Save the class definition
set sc3 = class.%Save()
do:$$$ISERR(sc3) $system.Status.DisplayError(sc3)
set sc = $$$ADDSC(sc, sc3)

return sc

}

Here's a link to the code on GitHub

1
2 789
Question Roberto Cahanap · Aug 16, 2018

Let's say I have something like this:

Query ClientList(BusinessType As %String) As %SQLQuery (CONTAINID = 1, ROWSPEC = "Name:%String(MAXLEN=100),AltName:%String(MAXLEN=100)") [ SqlProc ]

{...}

Is there a way I can specify the MAXLEN by a function or a calculated method?

Like maybe:

MAXLEN=#(..GetLengthName())#

Or is this something that has to be hardcoded in Studio?

6
0 1134
Question Ciaran Mooney · Sep 22, 2018

Hi,

I am running terminal on Cache on a Mac High Sierria and going through the ObjectSript tutorials.

However there is no instruction on the Intersystems website as to how to open Studio.

Does anyone know how this is done?

Thanks

11
1 1667
Job Teo Rusu · Sep 24, 2018

Good afternoon everyone,

I hope you are well,

I am currently working on the below opportunity and if anyone here would like to hear more details please feel free to contact me on 01908 886 030 or teo.rusu@identifiglobal.com

Cache Developer – Leading Law Firm

Fixed Term Contract - Central London

Salary negotiable

The client is a leading City law firm with around 1,200 partners and worldwide staff, is regarded as one of the most prestigious law firms in the world.

0
1 577