#Caché

30 Followers · 4.6K Posts

  

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

Documentation.

Edit
Article Gevorg Arutiunian · Jul 13, 2018 1m read

This code snippet uses GZIP to compress and decompress a file in the file system. Change default file paths to customize code to compress/decompress your files:

Class objectscript.GZIP Extends %RegisteredObject
{
	classmethod test() {
		//Export Global(s) uncompressed
		set filename="C:\Temp\myglobal.xml"
		do $System.OBJ.Export("^oddEXTR.gbl",filename)
		//Open exported Globals
		set uncompressed = ##class(%FileBinaryStream).%New()
		set uncompressed.Filename=filename
		Set compressed = "C:\temp\mycomglobal.xml"
		//Open File Device over Gzip and Copy Uncompressed information to it
		Open compressed:("WUNK":::/GZIP=1:/NOXY=1:/OBUFSIZE=32768):0
		Use compressed
		do uncompressed.OutputToDevice()
		close compressed
		//Create New File  
		set out = ##class(%FileBinaryStream).%New()
		set out.Filename= "C:\Temp\decomp.xml"
		//Open compressed File and save information uncompressed over gzip
		Set file=##class(%File).%New(compressed)
		Do file.Open("RUK:::/GZIP=1:/NOXY=1")
		while ' file.AtEnd
		{
		    set line = file.ReadLine()
		    do out.Write(line)
		}
		do out.%Save()
	}
}

GitHub: https://github.com/intersystems-community/code-snippets/blob/master/src/cls/objectscript/GZIP.cls

0
0 0
Edit
Article Thomas Carroll · Sep 17, 2016 3m read

Embedded SQL is a tool that allows us to execute SQL statements in Caché Object Script. For example, to select the name of a person with a particular SSN from the Sample.Person class we can do the following.

&SQL(

Select Name into :tName

From Sample.Person

Where SSN = :tSSN

)

The colon syntax is used to identify local variables, in this case tName and tSSN. &SQL indicates to our compiler that this is SQL syntax. At compile time, this statement will be optimized to executable Object Script code. More about this syntax can be found here.

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

0
0 0
Edit
Question sansa stark · Sep 12, 2016

Hi ,

     The below code is working in cache 5.02 but it'snot working cache 16.

      while we calling this method in another csp page it's show some different character.

      ClassMethod OnHTTPHeader(ByRef OutputBody As %Library.Boolean) As %Status [ ServerOnly = 1 ]
  {
set user $ZUTIL(67,15,$JOB)
set status %session.Login(username"Test" ,1)
set log $Get(%session.Data("Log")) 
set logtype $Get(%session.Data("logtype")) 
if (log "")
{
!, "<div style='color:#000000; background:white; ; font-size=10pt;'><B>Your session has expired.

1
0 24
Edit
Article Carter Tiernan · Sep 21, 2016 2m read

Overview

Current Caché system monitoring functionality provides real-time information about a Caché environment. This allows for preventative measures to be taken before system failure by highlighting specific metrics when they are at unusual or dangerous values. Additionally, diagnosis of past or current erronious events is aided by informative logs that are created by the system monitoring process.

The System Monitor Dashboard project is a successor to the current system monitoring functionality.

0
0 0
Edit
Question Alexey Maslov · May 11, 2017

Since most of our customers moved to Cache 2015.1, I found some admins abused with CPUPct warnings (sometimes alerts) in console log without other signs of lacking CPU power.
Documentation states that:

          CPUPct               job_type              CPU usage (percent) by all processes of the listed job type in aggregate       

What does it really mean?
E.g., if total system CPU usage is 25%, and all running processes are of the same type (e.g, CSPSRV), would CPUPct be equal to 100%? If so, why this case should be a reason for alert?

0
0 5
Edit
Question Davidson Espindola · Mar 3, 2017

Hello everyone,

I have the following problem in generating a PDF report in ZEN, which has many items, a general total of approximately 30,000 items, but gives an error, I can generate a report with a maximum of 8,000 items, which may be wrong.

==========

Class Ideal.ListaEstoquePDF Extends %ZEN.Report.

0
0 0
Edit
Article Andrey Rechitskiy · Nov 22, 2018 13m read

As you know, Caché can be used as a relational DBMS working with JDBC/ODBC drivers and supporting the execution of arbitrary SQL queries and SQL procedure calls. 

We also know that Caché stores all the data in multi-dimensional sparse arrays called globals. It allows the developer not to use the standard CachéSQL engine in case a particular SQL procedure is underperforming, but instead rewrite its execution code in the Caché ObjectScript (COS) language intended for server-side business logic. This approach may help implement the optimal SQL procedure execution algorithm by using better-optimized NoSQL data structures (globals).

However, the standard class library in Caché has one limitation: for SQL procedures where data selection is controlled by custom COS code, you need to define the set of returned fields at the compilation stage - i.e. it is impossible to dynamically define metadata for an SQL procedure working with NoSQL structures. This article is about how to get around that limitation.

0
0 0
Edit
Question Stuart Byrne · Jul 11, 2018

Hello,

I'm just re-going through the Caché foundations course exercises using a copy of Try-Caché on my home pc.

I'm trying to create a web application to receive REST calls however, when I use the Restlet client I get no response.

My web application config is:

0
0 0
Edit
Article GUILHERME CRUZ DA CUNHA · Jun 15, 2018 2m read
  1. What is this talk? • Provocative • Conflicting • Irritating • For those who want to be professional • Driver

  2. What is this talk not? • Silver bullet • Only for devs Java • Only for devs • To be forgotten

  3. Debt technical or "how to prevent the conductor knock on your door" - Alexandre Freire https://www.infoq.com/br/presentations/divida-tecnica- need-credit

  4. Developers do not know fundamentals!

  5. http://s3.amazonaws.com/magoo/ABAAAfWwoAD-5.jpg

  6. bitly.com/resultadopesquisafusca bitly.com/pesquisafusca

  7. Developers do not know how to make simple software!

0
0 17
Edit
Question sansa stark · Nov 28, 2016

hi all,

        how to configure the crystal report in iis?

        how to generate the crystal report via intersystem cache ?

info :

  sap crystal report 2011

  iis 6 and windows 3 server

cache 5.02

Thanks,

sansa.

0
0 22
Edit
Article John Lambert · Apr 5, 2016 1m read

One of the internal changes in Cache 2016.2 is the switch from using Posix asynchronous IO on Linux platforms to native kernel asynchronous IO for improved performance. There is a kernel parameter that controls the maximum number of events that can be handled across the entire system and it is possible to hit this limit on newer versions of the Linux kernel when Cache is setting up disk IO structures in the WD or user processes. To prevent this from occurring we recommend that the kernel parameter 

0
0 0
Edit
Question Theunis Pretorius · Nov 5, 2016

How do I call an excel report class from another class and name the report from the call class in cache?

This is the Report Class:

/// ProjekCin.Cinema.report.report
Class ProjekCin.Cinema.report.OLSQL16REP Extends %ZEN.Report.reportPage
{

/// Class name of application this report belongs to.
Parameter APPLICATION = "ProjekCin.report.Browse";

/// Specifies the default display mode used for this report if
/// the URL parameter, <var>$MODE</var>, is not present.
Parameter DEFAULTMODE As STRING [ Constraint = ",html,tohtml,toxslfo,pdf,xml,xslfo,excel,toexcel,ps,pdfprint,xlsx,tiff,displayxlsx,fo2pdf,foandpdf", Flags = ENUM ] = "xlsx";

/// Set om multiplesheets te kan save in excel
Parameter EXCELMULTISHEET = 1;

/// This is the optional XML namespace used for the report.
Parameter REPORTXMLNAMESPACE;

/// This is the logical name of this report.
/// If not provided, class name is used.
Parameter REPORTNAME As STRING = "Tutorial";

/// This XML defines the logical contents of this report.
XData ReportDefinition [ XMLNamespace = "http://www.intersystems.com/zen/report/definition" ]
{
<report xmlns="http://www.intersystems.com/zen/report/definition"
 name="report" sql="SELECT 
FTR, ID, Amount, BusinessDate, COARno, Description, Expression, NominalAccountNo, OBJVersion
FROM ProjekCin.LSL" runonce="true">
<group name="SQL161" sql="SELECT 
FTR, ID, Amount, BusinessDate, COARno, Description, Expression, NominalAccountNo, OBJVersion
FROM ProjekCin.LSL WHERE BusinessDate = '20150601'" excelSheetName="1">
<group name="g1">
<element name="No" field="FTR" />
<element name="COARno" field="COARno" />
<element name="NominalAccountNo" field="NominalAccountNo" />
<element name="Description" field="Description" />
<element name="Natureofaccount" field="Expression" />
<element name="TotalAmount" field="Amount" />
</group>
</group>
<group name="SQL161" sql="SELECT 
FTR,ID, Amount, BusinessDate, COARno, Description, Expression, NominalAccountNo, OBJVersion
FROM ProjekCin.LSL WHERE BusinessDate = '20150602'" excelSheetName="2">
<group name="g1">
<element name="No" field="FTR" />
<element name="COARno" field="COARno" />
<element name="NominalAccountNo" field="NominalAccountNo" />
<element name="Description" field="Description" />
<element name="Natureofaccount" field="Expression" />
<element name="TotalAmount" field="Amount" />
</group>
</group>
<group name="SQL161" sql="SELECT 
FTR,ID, Amount, BusinessDate, COARno, Description, Expression, NominalAccountNo, OBJVersion
FROM ProjekCin.LSL WHERE BusinessDate = '20150602'" excelSheetName="Selection">
<group name="Selec">
<element name="sql" field="sql" />
</group>
</group>
</report>
}

/// This XML defines the display for this report.
/// This is used to generate the XSLT stylesheets for both HTML and XSL-FO.
XData ReportDisplay [ XMLNamespace = "http://www.intersystems.com/zen/report/display" ]
{
<report xmlns="http://www.intersystems.com/zen/report/display"
 name="report" title="Tutorial">
<!-- Optional Init element inserts custom XSLT instructions at the top level of the generated XSLT stylesheet. 
<init ></init>-->
<!-- Optional Document element specifies page layout and style characteristics.--> 
<document width="8.5in" height="11in" marginLeft="1.25in" marginRight="1.25in" marginTop="1.0in" marginBottom="1.0in" ></document>
<!-- Optional Pageheader element. 
<pageheader ></pageheader>-->
<!-- Optional Pagefooter element. Does not apply in HTML output. 
<pagefooter ></pagefooter>-->
<!-- Required Body element. -->
<!--<body>
 add display definition of the report here. -->
 <!-- <table group="ProjekCin/cin" 
   excelSheetName="Cinema" >
    <item field="ID"/>
    <item field="FilmShowing"/>
    <item field="NrOfSeats" isExcelNumber="true"/> 
    
   </table>
  
</body>-->
</report>
}

}
3
0 31
Edit
Article Jose Ruperez · Dec 16, 2016 1m read

The first step when dealing with performance is the ability to measure it. In this article, we will show you a way to measure the performance of your CSP and/or ZEN applications. You will be able to answer questions such as: Which pages of my application are hit the most? or Which pages in my application are the slowest?

1
0 21
Edit
Question Mike Kadow · Apr 26, 2017

I need some help on navigating through the DC.

I never know where I am, what comes next, what was previous.

Do I just mindlessly go from post to post? 

A least when I use to receive email on the posts, I had some control.

0
0 0
Edit
Question Nicole Kristen · Oct 13, 2017

AI can be categorized in any number of ways, but here are two examples.

The first classifies AI systems as either weak AI or strong AI. Weak AI, also known as narrow AI, is an AI system that is designed and trained for a particular task. Virtual personal assistants, such as Apple's Siri, are a form of weak AI.

Strong AI, also known as artificial general intelligence, is an AI system with generalized human cognitive abilities so that when presented with an unfamiliar task, it has enough intelligence to find a solution.

0
0 16