Eduard Lebedyuk · Oct 4, 2016 go to post

I think compile should be called once after the loop. While in the loop you can build a local array of affected classes and pass it to the compiler after the loop.

Eduard Lebedyuk · Oct 4, 2016 go to post

If you are on windows you may have access problems while writing into the root of system drive.

 I suggest you:

  • Provide filename pointing to your desktop directory (C:\Users\eduard\Desktop\1.xls for me, for example)
  • Instead of w ##class... save the status and decode it into a more readable form:
set sc = ##class(Utils.XLS).generateFileFromSQL(...)
write $System.Status.GetErrorText(sc)
Eduard Lebedyuk · Oct 7, 2016 go to post

I use the following script (courtesy of Alexander Koblov):

wget --delete-after --keep-session-cookies --save-cookies cookies.txt --post-data='UserName=?????&Password=???????' 'https://login.intersystems.com/login/SSO.UI.Login.cls?referrer=https%253A//wrc.intersystems.com/wrc/login.csp'
wget --load-cookies cookies.txt --content-disposition 'https://wrc.intersystems.com/wrc/WRC.StreamServer.cls?FILE=/wrc/distrib/HS-2016.1.2.208.0-hscore15.01_hsaa15_hspi15_hsviewer15.01_linkage15-b6402-lnxrhx64.tar.gz'

First line for authentication and saves cookies into a file. Second line loads cookies from file and downloads with file.

Eduard Lebedyuk · Oct 12, 2016 go to post

Sorry, I posted a link to an old FieldTest version, it  not available now. I replaced the link in my example with actual version, so it should work now (delete cookies.txt and both lines need to be executed again).

Eduard Lebedyuk · Oct 13, 2016 go to post

The largest pool size is recommended to be the same as the number of CPUs in the Ensemble server, since there are only going to be as many jobs available as the number of CPUs.

Why should number of jobs be less or equal to the number of cores? I tested (admittedly only one) BP for processing some objects and results (messages processed per second) were better with PoolSize=100, than with PoolSize=50 on a system with 1CPU/8cores.

Eduard Lebedyuk · Oct 13, 2016 go to post

What's speed are you getting? Rows per second and average size of row for example.

Have you tried comparing that speed with direct iteration over a same resultset in COS?

Eduard Lebedyuk · Oct 17, 2016 go to post

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.

Eduard Lebedyuk · Oct 18, 2016 go to post

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 classes

Then 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.jsonProvider
  • New json via dynamic objects
Eduard Lebedyuk · Oct 19, 2016 go to post

It would only invalidate one chunk (most probably first, but ultimately it depends on id) of cube data, not all of them.

Eduard Lebedyuk · Oct 19, 2016 go to post

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.