Studio is an integrated part of Caché, Ensemble, IRIS, ... and part of any installation kit for Windows
https://docs.intersystems.com/iris20201/csp/docbook/DocBook.UI.Page.cls?KEY=GSTD
- Log in to post comments
Studio is an integrated part of Caché, Ensemble, IRIS, ... and part of any installation kit for Windows
https://docs.intersystems.com/iris20201/csp/docbook/DocBook.UI.Page.cls?KEY=GSTD
In studio you open the class and click the class attribute in the inspector
.png)
to edit a table by DDL the corresponding class hat to be DDL allowed.
I have implemented an extension to %ZJSON.Generator to fix missing JSONTYPE
Standard Caché data types don't have a parameter JSONTYPE (!!) so everthing is set to (quoted) "string".
Especially numbers and boolean data must not be in quotes.
e.g ....."NUMfield":124, "TrueFalse":true, ....
instead of ....."NUMfield":"124", "TrueFalse":"true", ....
this extension bypasses the missing parameter for these standard data types as indicated in %ZJSON.Adaptor
/// number = %BigInt, %Currency, %Decimal, %Double, %Float, %Integer, %Numeric, %SmallInt, %TinyInt
/// boolean = %Boolean
For customized data classes it is easy to add Parameter JSONTYPE=". . . ."
But changing sometihng in SYSLIB is a clear NO-NO to me. ( though it might have been easier)
The extended version of %ZJSON.Generator is here:
https://github.com/rcemper/Backport-JSON.-to-Cach-/blob/master/MissingJSONTYPE.xml
Great stuff @Vitaliy Serdtsev
https://docs.intersystems.com/iris20192/csp/docbook/Doc.View.cls?KEY=RSQL_json
everlasting learning! ![]()
Got you!
Something like $isJSON() ? like $isobject() or $listvalid()
I didn't meet that.
Basically it's %String or a %Stream based on size.
I'd suggest having a private data type.
This allows you also to have all tricky LogicalToODBC, .... under control. (and no MAXLEN for %String)
And mapping it to %ALL or naming it %ZstringJSON or similar makes it public and update-restistant
Some more findings what happens:
The output methods are code generated. And the generator just uses JSONTYPE from the data type class.
That means that even as the property parameter is available in Studio, ... you can't change it.
example: Property bool as %Boolean (JSONTYPE="string") is just ignored and you see ,"bool":false
This means: JSONTYPE is frozen in the data type class
Bringing Parameter JSONTYPE into the class (e.g, by %ZJSON.Adaptor) has no influence to the Generator
To achieve the expected result you require a customized data class as suggested by @Timothy Leavitt
Out of 25 only these 7 6 classes are affected the rest is string which is default anyhow.
boolean %Library.Boolean.cls(JSONTYPE): Parameter JSONTYPE
number %Library.Currency.cls(JSONTYPE): Parameter JSONTYPE
number %Library.Decimal.cls(JSONTYPE): Parameter JSONTYPE
number %Library.Float.cls(JSONTYPE): Parameter JSONTYPE
number %Library.Integer.cls(JSONTYPE): Parameter JSONTYPE
number %Library.Numeric.cls(JSONTYPE): Parameter JSONTYPE number %Library.PosixTime.cls(JSONTYPE): Parameter JSONTYPE not in Caché
IRIS has added a new parameter in 25 Data Classes:
Parameter JSONTYPE = ...
I'll see the impact as soon as I find free time
With a small extension, you may get closer to your result.
What you expect is a JSON Array, but %JSONExport... works on data OBJECTS, not on data TYPES { same as XMLExport() }
So I have created a small wrapper object:
Class Test.javier Extends (%RegisteredObject, %JSON.Adaptor)
{ Property wrap As Test.elementList(%JSONFIELDNAME = " "); }extending Test.Main:
And here we go:
Just to verify if this is a %JSON specific problem I added also %XML.Adaptor to the classes.
And there is a similar problem: %ListOfObjects seems to be the bad guy.
You use set patientMRN = msgIn.GetValueAt("PID:3.1") and get back a value
the reverse is do msgOut.SetValueAt(patientMRN,"PID:3.1")
in your query, I see "Timestamp" and Timestamp
Check the status of SUPPORT_DELIMITED_IDENTIFIERS parameter
Next check the date type of your column named Timestamp.
easiest SELECT top 5 "Timestamp","Skillset" FROM "dbo"."iSkillsetStat"
also try SELECT Timestamp,Skillset FROM dbo.iSkillsetStat
without any quoted columns
You won the extra points !
It's good to know someone is reading your comments.
THANKS!
Just found an example:
#1)
- create a simple Business Process using the wizard
- compile it and see the resulting class and at least 4 related .int routines.
- then decide if you really want to do this all manually
the challenge is to properly use and service the methods you see in Ens.BusinessProcess
To make it easier you may install (or activate) the ENSDEMO namespace as an example (before IRIS. have no idea where it is gone)
#2)
you write. ---transformation (written in DTL), but the code is manually written. ---
It might sufficient to put your code just into a CODE Block of a BP generated with the wizard.
My personal opinion:
WIN* is a nice Desktop OS good for mom and aunt Betty. With an incredible paranoic approach.
In post VMS times all *X (LinuX,AIX, OS X, Solaris(rip+), ***UNIX, ....) are real server OS systems by nature.
I did this implicitly during my Sharding Evaluation
https://community.intersystems.com/post/sharding-evaluation-1
and more on
https://community.intersystems.com/post/sharding-evaluation-2
Good observation.
Try run a "force" down of the image. For Caché it's .../bin/ccontrol force <instance>
The service calls itself always "Controller" .
I've seen such orphans rarely every now and then. but I don't have any explanation.
stopping it should allow a new start. Check if there are other processes with Ensemble or Cache.exe
There's still alert.log - (not a big hope)
eventually, a Windows event logging may give a hint. - (less hope)
next emergency startup with -nostu
WRC = last chance
Does %installdir%/mgr/cconsole.log have anything useful to tell you ?
When I found it, I felt like Indiana Jones when he detected the Holy Grail. ![]()
Terminal Multi-Line Command Editor will do it
See also this Editor Archaeology as long as you don't use WebTerminal.
or my new Terminal Multi-Line Command Editor
Pls. use GitHub.
That makes it easier to follow and complete
why ("%MAXLEN"),! ???
it should be only ("MAXLEN"),! no %
Is it really %String or a subtype without MAXLEN or MALXEN disabled ?
I have done this in past and I know of some types just defined to remove MAXLEN =50
e.g. %Library.RawString, %Library.Text, ...
in class %Dictionary.CompiledProperty you have.png)
if a Property Parameter exists it is in this Array:
But not all properties have MAXLEN this is a %String
.png)
I think you were waiting for this
exact!
ZS temp creates temp.int