go to post Eduard Lebedyuk · Nov 2, 2016 Can you post code sample?Going by the error message, have you tried providing googleapis.com certificate?
go to post Eduard Lebedyuk · Nov 2, 2016 I think listing would be a more effective tool for that purpose.
go to post Eduard Lebedyuk · Nov 1, 2016 No, it's open-source. Any bugs/feature requests should be reported on GitHub. It's very stable, though.
go to post Eduard Lebedyuk · Nov 1, 2016 There is Cache web terminal project. It emalates terminal connection to Caché from a web page.
go to post Eduard Lebedyuk · Nov 1, 2016 Call: Write ##class(%EnsembleMgr).EnableNamespace(Namespace, 1)
go to post Eduard Lebedyuk · Oct 31, 2016 This line causes an error: Write tMessage.Name,! Your class does not have Name property, so it causes an error. The following method works : /// Do ##class(Testing.Messages.Session).test() ClassMethod test() { Set messagedata = "<?xml version=""1.0"" encoding=""UTF-8""?><session><sessionId>124364</sessionId><cabinet>demo</cabinet><eventType>IN</eventType><eventTime>20161006160154</eventTime><login>test</login><loginFirstName>test</loginFirstName><loginLastName>test</loginLastName></session>" Set reader = ##class(%XML.Reader).%New() Set status = reader.OpenString(messagedata) Do reader.Rewind() If $$$ISERR(status) {do $System.Status.DisplayError(status)} // Associate a class name with the XML element name Do reader.CorrelateRoot("Testing.Messages.Session") // Read objects from xml data While (reader.Next(.tMessage,.status)) { Do:$$$ISERR(status) $System.Status.DisplayError(status) Write tMessage.sessionId,! } } Terminal: USER >do ##class(Testing.Messages.Session).test() 124364
go to post Eduard Lebedyuk · Oct 27, 2016 The correct way to accomplish that is to use source control and CI:Developers push code into a central repositoryCI system gets the code, tests it and deploys to the server
go to post Eduard Lebedyuk · Oct 19, 2016 It would, because cache for that chunk would be invalidated, and cache for other chunks would still be valid. But OP wants to invalidate cache for a whole cube, and for that inserting one fact is not enough.
go to post Eduard Lebedyuk · Oct 19, 2016 It would only invalidate one chunk (most probably first, but ultimately it depends on id) of cube data, not all of them.
go to post Eduard Lebedyuk · Oct 18, 2016 Disclaimer. I am not familiar with EDI.Some solutions would be:Get official EDI 271 xsd schema files and import them into CachéAlternatively you can read EDI 271 specification/check examples and write your own classesThen you need a dtl to transform incoming message into your new classes. If there's a lot of them maybe it would be better to write one generic transformer or write a transformer generator based on class (which would generate transformation method based on class properties).After that you can transform your class object into json via several ways:Old json via %ZEN.proxyObject/%ZEN.auxillary.jsonProviderNew json via dynamic objects
go to post Eduard Lebedyuk · Oct 18, 2016 If you have classes (persistent or not) producing JSON is much easier.
go to post Eduard Lebedyuk · Oct 17, 2016 The caveat with relationships is that all of the many objects are loaded or none are. That may present a performance problem if you have a one-many relationship with thousands of rows on the many side.
go to post Eduard Lebedyuk · Oct 17, 2016 Generally yes, but here's some thoughts: Use List, instead of Array whenever possibleSpecify STORAGEDEFAULT as "array" to project list collection properties as child tables Property Providers as List of ProviderList(SQLProjection = "table/column", STORAGEDEFAULT = "array");
go to post Eduard Lebedyuk · Oct 17, 2016 The CALLIN^%ZSTART entry point gets executed when an external program begins or completes a callin. You can add logging there to see if something initiates callin.
go to post Eduard Lebedyuk · Oct 17, 2016 Write the same dataset loop (with embedded sql) in Caché ObjectScript and see how much time does it take to fetch the same rows.