Hello!
My goal is to serve files using REST classes only (no filesystem should be used), and I am a halfway far from it.
What I am succeeded in, is serving character files (html/css/javascript/etc) using the next approach:
An object data model is that data or code is composed of modules that combine data and procedures that work on the data.
Hello!
My goal is to serve files using REST classes only (no filesystem should be used), and I am a halfway far from it.
What I am succeeded in, is serving character files (html/css/javascript/etc) using the next approach:
Object Synchronization is a feature that has been around for a while, since Caché days, but I wanted to explore a bit more how it works. I've always thought that database automatic synchronization is complex by nature but, for some particular scenarios shouldn't be so hard. So I considered a very simple use case (OK, perhaps the typical one, I'm not discovering anything... but if it's common and it works, it's good
). You can download from GitHub and compile it into your system, generate sample data and play a bit with
Over the next few months I will be releasing a number of open source libraries and tools to the Caché community.
Most of the code has evolved from previous production grade solutions over the years and I am collating it together under a single overarching library package that I am calling Cogs.
As a developer, you have probably spent at least some time writing repetetive code. You may have even found yourself wishing you could generate the code programmatically. If this sounds familiar, this article is for you!
We'll start with an example. Note: the following examples use the %DynamicObject interface, which requires Caché 2016.2 or later. If you are unfamiliar with this class, check out the documentation here: Using JSON in Caché. It's really cool!
##Example
You have a %Persistent class that you use to store data.
Hi all,
we are wondering if anybody has a reporting tool that is capable using IRIS Objects?
I know there are things like Crystal Reports and others out there who can read the SQL Data throug ODBC but we need the capability of using object methods while running the report.
Since now we where using a JAVA based report generator (ReportWeaver) but since the object binding for JAVA doesn't exist anymore in IRIS data platform, did any of you have an alternative report generator?
Looking forward to any answers
cheers
Stephan
Hey Intersystems-Developer,
I have already used that and know its possible, but can't find it anymore :(
I need dynamic access on proxy objects. For example:
set key = "lastName"
set name = obj.name
set lastName = obj.key <- Not possible
set lastName = obj.GetAt(key) <- Not possible
How can I get access to that object with my dynamic variable "key" ?
Best regards.
Hi guys!
As you know there are two (at least) ways to get the stored value of the property of InterSystems IRIS class if you know the ID of an instance (or a record).
1. Get it by as a property of an instance with "Object access":
ClassMethod GetPropertyForID(stId As %Integer) As %String
{
set obj=..%OpenId(stId)
return obj.StringData
}
2. Get it as a value of a column of the record with "SQL access":
For each defined property, query or an index, several corresponding methods would be automatically generated on a class compilation. These methods can be very useful. In this article, I would describe some of them.
Curious if there is a string function which can transform a delimited string into an array without looping through $Piece...such as "a,b,c,d,e,f" into array(0)=5,array(1)="a",array(2)="b" etc
I have a class defined like this:
Class test.ABC Extends %RegisteredObject {
Property myProp As %Binary [ Internal, Private ];
}Is there a way to get a value of myProp from outside of the object?
I can't modify or extend the class obviously.
Have some free text fields in your application that you wish you could search efficiently? Tried using some methods before but found out that they just cannot match the performance needs of your customers? Do I have one weird trick that will solve all your problems? Don’t you already know!? All I do is bring great solutions to your performance pitfalls!
As usual, if you want the TL;DR (too long; didn’t read) version, skip to the end. Just know you are hurting my feelings.
If you open up your version of Sample.
Is there a way to get an inventory list of the Services, Processes, Routing, and Operations that are on the system. We get asked constantly from different departments to justify the number of personal we have. We are currently on 2015.2.2, with our upgrade to 2019 set for later this year.
Thanks
Scott
I have a lot of string properties, which need custom but similar Getters and Setters.
Currently I'm generating Getter and Setter in class generation code but that expands class definition.
Is there a way to specify custom datatype which would generate custom getters and setters?
Pieter Brueghel the Younger, Paying the Tax (The Tax Collector), 1640
In my previous article, we just skimmed the surface of objects. Let's continue our reconnaissance. Today's topic is a tough one. It's not quite BIG DATA, but it's still the data not easy to work with: we're talking about fairly large amounts of data. It won't all fit into RAM at once, and some of it won't even fit on the drive (not due to lack of space, but because there's a lot of junk). The name of our subject is FIAS DB: the Federal Information Address System database - the databases of addresses in Russia. The archive is 5.5 GB. And it's a compressed XML file. After extraction, it will be a full 53 GB (set aside 110 GB for extraction). And when you start to parse and convert it, that 110 GB won't be enough. There won't be enough RAM either.
First time post, also a new Cache developer, hence the <Beginner> tag.
If our data has Predefined terms in a dictionary, and a user can add terms on their own, can the terms exist in different tables?
Lets call the tables "Terms" and the user data in "UserTerms".
If a third class definition has a property of "Term" can it not be either Terms or UserTerms?
I'm leaning towards using a Subclass strategy where the pseudo "Parent" (forgive me) is Dictionary.Term and the child is along the lines of Dictionary.Term.User
Dictionary.Term.User can inherit from Dictionary.
Hello,
We have defined four BPL Business Processes. One gets occasionally errors when pool size is two. No errors happen with pool size one. The error happens on calling %Save() on a large objects with many references to other objects.
Error #5803: Failed to acquire exclusive lock on instance of 'classname'.
Error #5002: Cache error: <ROLLFAIL> %TRollBack+10^%occTransaction
The error happens on a particular large object.
Our FileService gets the same Errors #5803 and #5002 with class 'EnsLib.EDI.X12.Document'
Another BPL gets the same errors #5803 and #5002 with lock on instance of 'EDIGW.BPL.ST837.
Is it possible to mimic what selenium does like navigating to a site and logging in and filling out a form then logout in COS.I am trying to do that in COS using %Net.HttpRequest class or should I be using a different class the idea is to be able to call a web app login into it and fill out form and log out
Hi,
what is reason of this error (Not all parameters bound/registered ). this is not happening consistently.
.png)
those are class method parameters
Our lab system is now sending DSC segments in large Pathology results in the ORU message that is followed by a partial continuation message with only MSH and OBX segments. the pointer is in the MSH;14 in the subsequent message. I believe the goal is to concatenate the first and second message but imagine this will require some custom functions which I have not done much of. Anyone already tackled this by chance?
Initial message:
MSH|^~\&|SOFTPATH^2.16.840.1.113883.3.3013.77.4^ISO|SCC|EPIC^2.16.840.1.113883.3.
I have an application which is distributed across maybe 5 servers since it has over a thousand users at a time we had an upgrade to the application last week and I had an integration build that uses the REST service (
I've been wondering about some code that I have come across a lot over the years.
Let's assume I have class Cinema and class Film.
Conceptually the data in these classes are never really physically deleted but only flagged as such, due to business requirements.
What I find is that developers tend to create a 3rd class "CinemaFilms", in a child relationship to parent Cinema, with a reference to Film. Rather than a one-to-many between Cinema and Film.
Hello.
I just noticed that whenever I parse a JSON using %FromJSON, it always return the property values as primary data types, including long strings.
I did a quick stress test to measure it's capabilities and found out that characteristic, this is something I needed to figure out beforehand to implement my REST lib.
What I concluded is that %Dynamic depends solely on volatile storage? What if the user doesn't have long string support enabled or if the server has not enough memory to handle long strings?
Is there a fallback for handling it?
In most cases, if one class depends on another, the class compiler will detect this and determine the correct compilation order. For example:
Yet sometimes, a developer needs to specify compilation order. InterSystems class definitions contain two keywords for this, DependsOn and CompileAfter, that are very similar but not identical.
Hi All,
Actually I am trying to implement a RESt API where in I will get ZIPCODE as request and I need to call external API which will take ZIPCODE as input and give State and City in response.
But the problem is the request is in XML Format and also response is in XML format.
Example :
https://XYZ.com/ABC.dll?API=CSLookUP&XML=<CSLookupRequest USERID="USERID">
<ZipCode ID='0'>
<Zip5>20024</Zip5>
</ZipCode>
</CityStateLookupRequest>
and in Response
I need to select my result into a list and be able to loop through the list when query finished any help appreciated here is where I am
##sql(SELECT %ID INTO :IDArray() FROM MergeHyland.TypeTwoDimesionCollection WHERE GUID = :Key AND EndDate IS NULL)
for I=1;1:$LISTLENGTH(IDArray)
{
w $Data(IDArray),i
}

Neuschwanstein Castle
Tabular data storages based on what is formally known as the relational data model will be celebrating their 50th anniversary in June 2020. Here is an official document – that very famous article. Many thanks for it to Doctor Edgar Frank Codd. By the way, the relational data model is on the list of the most important global innovations of the past 100 years published by Forbes.
On the other hand, oddly enough, Codd viewed relational databases and SQL as a distorted implementation of his theory. For general guidance, he created 12 rules that any relational database management system must comply with (there are actually 13 rules). Honestly speaking, there is zero DBMS's on the market that observes at least Rule 0. Therefore, no one can call their DBMS 100% relational :) If you know any exceptions, please let me know.
When you call a script with language="cache" and returntype="%Boolean" from a javascript script, the return value is interpreted as a string, not as a boolean.
I created the Process to extract the required data from ADT message to a Dynamic Object. I wanted to send the JSON stream to EnsLib.File.PassthroughOperation operation and generate a file with the content of JSON stream.
Here are the codes for Process:
set oMetadata = ... /// metadata is from ADT message which is dynamic object
set jsonRequest = ##class(%ZEN.Auxiliary.jsonProvider).%ObjectToJSON(oMetadata)
set tSC = .SendRequestAsync(.
Has anyone called any outside Javascript code from inside their class files? I asked a long time ago if there was a way to manipulate an image within Cache Object Script, and since Cache doesn't have any image libraries its not really possible. However I have found Javascript to resize an image and wonder how hard it would be to mesh the two together.
Can anyone share any examples?
Thanks
Scott
Hi -
I'm wondering if anyone has coded up a means to create an extension for a %Persistent class from a base class to a sub-class without making a ton of assumptions about the Global structure. I'm trying to create a new "extension" record that would have the same ID as the Base Class
Class BaseRecord Extends %Persistent
and
Class SubRecord Extends BaseRecord
where I would have an instance of a "BaseRecord" and I want to turn it into a "SubRecord" instance and have all of the existing references to the BaseRecord survive.