go to post Eduard Lebedyuk · Nov 4, 2016 Ceiling, floor, $NORMALIZE. Examples: >Write $SYSTEM.SQL.CEILING(.1) 1 >Write $SYSTEM.SQL.CEILING(1.2) 2 >Write $SYSTEM.SQL.CEILING(1.7) 2 >Write $SYSTEM.SQL.FLOOR(.1) 0 >Write $SYSTEM.SQL.FLOOR(1.2) 1 >Write $SYSTEM.SQL.FLOOR(1.7) 1 >Write $NORMALIZE(.1, 0) 0 >Write $NORMALIZE(1.2, 0) 1 >Write $NORMALIZE(1.7, 0) 2
go to post Eduard Lebedyuk · Nov 4, 2016 Docs on Ens.BusinessOperation class, QueueCountAlert property state:Number of messages on this item's queue needed to trigger an Alert message to be sent. Note that no further alerts will be sent unless the number of messages on the queue drops below 80% of this number and then rises again to this number. Note that this alert will be sent even if AlertOnError is False. Zero means no alerts of this type will be sent.
go to post Eduard Lebedyuk · Nov 4, 2016 Try to call it like this: do ..ReportHttpStatusCode(..#HTTP400BADREQUEST, sc) Where sc is an optional %Status. Parameters are defined in %CSP.REST class.
go to post Eduard Lebedyuk · Nov 4, 2016 You can use %File class to create directories: Write ##class(%File).CreateDeirectory(dir) Write ##class(%File).CreateDeirectoryChain(dir)
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.