Great article Murray. I'm looking forward to reading subsequent ones.
- Log in to post comments
Great article Murray. I'm looking forward to reading subsequent ones.
Certainly looks strange that you can browse namespaces on the Server Explorer tab but the new project wizard says it can't find any. I don't see your symptoms on mine, but I'm connecting to a Windows instance of 2016.2. My Atelier "About" box shows version 1.0.107. Is yours that version too?
While not directly (yet) addressing Jenny's specific Ensemble HL7 interface scenario, discussions on the "Development teams and namespaces" thread may be of interest.
Existing users of our Deltanji source code management tool, which runs natively inside Caché / Ensemble / HealthShare, may want to start using Atelier without having first to re-engineer their source control. I foresee a need for an Atelier user to be able to interact with a Deltanji dialog and then trigger a server-side action.
Nicki, did you paste the wrong thing as your second image? Under the title "studio:" I'm seeing an Atelier "Create a New Project" dialog screenshot.
That worked. I guess the Developer Community application ought to do a better job with content expiration or something in order to make sure we see the correct images.
I can confirm that the 64bit Windows Ensemble download link is working for me.
Tiago,
Do you mean that when you are writing output from the server (e.g. from a source control class) you want to be able to control the colour of that text? I have never discovered a way of doing that, but let's see if anyone at ISC knows of an undocumented feature there.
Thanks for sharing this detailed information Jamie. I noticed that the headers have links to a wiki on GitHub, but they're unreachable to me and presumably to other non-ISC folk.
Hermain, I think yours predates the point where ISC implemented the ability to update Atelier from within Atelier. I suggest you download the latest kit and install that. Thereafter you ought to be able to update from within. But bear in mind I'm not an ISC person, so my advice might be incorrect.
Thanks Dmitry. That worked, upgrading me from 1.0.107 to 1.0.112
One caveat about transferring globals between namespaces / instances using XML format is that by default when you load the XML into the target namespace the global(s) in your XML file will be pre-killed. In other words, it's a "replace" operation rather than a "merge" one. This may be exactly what you want in many situations, but if you've been used to using other utilities to export and import globals then it's different.
To override this behaviour, add the "/mergeglobal=1" qualifier during your import, for example as the second argument (qspec) to $system.OBJ.Load(), which is of course the Load classmethod of %SYSTEM.OBJ.
See more qualifier documentation here.
Thanks for putting so much time and effort into this Mike.
Would you be willing to offer the examples etc as PDF downloads as an alternative to .docx files?
Maybe also worth deleting the "Sample Page" item from your site.
What version of Ensemble / HealthShare is running its webserver at chft-eprtiedev.xthis.nhs.uk:57772 ?
That's interesting to know. It means that my experiment can become:
USER>s oResult=##class(%Library.File).FileSetFunc("c:\s\","*.txt")
USER>while oResult.%Next() {w !,oResult.%Get("Name")}
...And now static code analysis that detects classmethod references can spot the use of the secret FileSetFunc method within the class that implements the query I'm using.
Sounds good. Any estimate of when we'll get access to this?
AFAIK only the owner of the class (set using the Owner keyword on the class, defaulting to _SYSTEM) has automatic rights to invoke all of the SQL stored procedures that the class implements (as classmethods with the SqlProc keyword). Anyone else who needs to be able to invoke them will need the right granting to them, either directly or via a role.
I think a "GRANT EXECUTE ON SCHEMA xyz TO roleA, roleB" should be sufficient to give users with roleA or roleB the ability to run any stored procedure defined by any class in your xyz package, even classes / procedures that you haven't yet written.
If your READ from wrappercomp raises an error (e.g. end of file) you don't have anything in place to catch this error, CLOSE wrappercomp and USE olddev once more. I suggest you add some code (for example a TRY/CATCH block) to do this, and also to tell you what the error was. That information might help you find out why the wrappercomp pipe didn't work as you expected.
What Caché version are you working with?
The use of SCHEMA in this way is documented at
http://docs.intersystems.com/cache201513/csp/docbook/DocBook.UI.Page.cl… but not at http://docs.intersystems.com/cache20141/csp/docbook/DocBook.UI.Page.cls… so it appears to have been introduced with 2015.1. I didn't find any mention of it in the 2015.1 release notes though.
Thanks for the feedback Ben.
I'm familiar with System Defaults, and we actively try and promote their use when we talk to Ensemble users about this issue. However, the way that Portal defaults to filing configuration item settings into the class means that it's all too easy to do this by accident. In contrast, to add/edit a System Defaults type of setting requires significantly more effort within the UI. Surely a better job could be done here?
I expect Prodlog 94592 already has the name of George James Software all over it, as we've been lobbying on this issue since the very beginning. While we wait, we've devised some techniques that allow Deltanji to leverage the OnConfigChange classmethod that a 2012.1+ production class can be given. You can read about them here.
John
Hmm, I intended the above to be a comment on Jon's question, not an answer. Not sure how it ended up as an "Answer".
At analysis time you can choose which packages to include. The webapp whose time-based graphical output I showed above doesn't let you filter a whole-namespace analysis to view only the stats for a single package. But the Structure101g Studio tool gives a lot more power. For example, here's a drilldown into the top-level packages:
Overall bar length is code size. The red portion is the XS of the package.
I have fixed the XS whitepaper link. Thanks for reporting that.
I'm not advocating making your live environment the first one you upgrade. Upgrade a QA environment initially, and do enough testing there to be confident that your app works.
I take your point about keeping up with the technology curve, but it's no good the next release of your app using all the whizzy new features of the latest Caché version if you're not able to deploy it to your customers until they can be coaxed to upgrade. Yes, you can use the new features as a carrot to entice them to upgrade, but meanwhile you probably have support commitments to them that mean occasionally patching the app release they're currently using.
That's certainly a useful tip. I wonder if it would have helped in a situation we assisted an Ensemble site with last year. They'd upgraded their DEV and QA environments from 2013.1 to 2015.1 but their LIVE was still on 2013.1. Then they amended an HL7 schema in DEV, exported it, imported it to QA, verified it worked, and finally loaded it to LIVE, where it broke the production.
The cause turned out to be a change made in 2014.1 and documented in a bullet point here. Yes, they had been unwise not to retain a QA or pre-live staging environment on the exact Ensemble version that LIVE was running.
Interesting that my browsers (FF and Chrome) stack the two "Related Topic" fields vertically:
Maybe your screenshot is from a newer version of DC?
This is a good move.