go to post Eduard Lebedyuk · Jun 5, 2018 Pinging @Alexander KoblovIsn't it more like anonymous functions?Currently not possible. Check @Gilberto Junior solution - it seems the closest to what you want.
go to post Eduard Lebedyuk · Jun 5, 2018 Like this? write $case(condition, 1:"hello " _ "world", 2:"name", :"!") Hello world is a multiline expression.
go to post Eduard Lebedyuk · Jun 5, 2018 I'd go with if, but you can also resolve case expression beforehand: set condition = .... several lines of logic... write $case(condition, ...) And condition then can be separaten into several different lines. I'm against method chaining in general and several functions on one line/step in particular. Each line should contain one small operation.
go to post Eduard Lebedyuk · Jun 4, 2018 Maybe Property TS As List Of %TimeStamp; ? UPD. Nevermind, got it.
go to post Eduard Lebedyuk · Jun 4, 2018 You can use Security.Services class, it can modify services programmaticaly.
go to post Eduard Lebedyuk · Jun 1, 2018 What risk?There are two distinct cases - where we have users/passwords in place or we don't.In the first case container should use these passwords (via Durable %SYS) and they shouldn't be be superseded by anything happening with a container change.In the second case we have some empty application - no users, no data and so specifying random password only adds unnecessary steps down the line.There is one case where we need to force our container user to create new password - when we are:supplying a complete applicationdon't have control over how it is deployedpasswords are stored inside the containerin this case yes (when all conditions are met), password should be scrambled, but this situation is wrong on itself (mainly in storing passwords inside the container), and should be resolved by other means.
go to post Eduard Lebedyuk · Jun 1, 2018 On non-prod servers we don't need that - developer/ci server should be able to pull the image and work with it.On prod Durable %SYS should be used with secret password and not changed with each new app version, but rather through a separate process (once a year, etc).
go to post Eduard Lebedyuk · May 31, 2018 I'd try to rework this method to avoid object access to speed it up. GetStored method can help. Article about it.
go to post Eduard Lebedyuk · May 30, 2018 This feels more like a DevOps process, where coding is more acceptable. Anyway, maybe you need to ask a separate question on configuration synchronization best practices?
go to post Eduard Lebedyuk · May 30, 2018 1. Import task has these two qualifiers: displayerror displaylog They do not affect import. 2. No. If you check exported xml, you can see that exported tasks do not contain IDs, so, on import they could not overwrite existing tasks. Not sure about how correlate/next work on ID fields btw. Exporting and importing what is currently present is the best way. It's the easiest way. The best way would be to write and document a script (ObjectScript code) that transforms base instance into what they need. This way changes are documented and adding another server is easy.
go to post Eduard Lebedyuk · May 30, 2018 1. Execute this to get a list of available flags and qualifiers: Do $System.OBJ.ShowQualifiers() Do $System.OBJ.ShowFlags() Qualifiers are preferable to use. 2. I'd rather go with programmatic access. Write code that's: Opens system task objectModifies and saves it What system task did you modify?
go to post Eduard Lebedyuk · May 27, 2018 Sure.Open ChromeGo to Settings | Manage search engines...Scroll to the bottom of the windowIn Add a new search engine, enter InterSystemsFor Keyword, enter iFor URL, enter one of:http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.SearchPageZen... - for Ensemble docshttp://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.SearchPag... - for InterSystems Iris docsClick DoneAfter that you'll be able to search InterSystems documentation in Chrome address bar by typing: i keyword and pressing Enter.
go to post Eduard Lebedyuk · May 27, 2018 Added InterSystems IRIS documentation search engine. Download.
go to post Eduard Lebedyuk · May 25, 2018 Do you want to pull all the rows each time?If so, just clear “key Field Name” setting and BS would process all rows every time it's run.
go to post Eduard Lebedyuk · May 25, 2018 Compilation is usually multi-process, I'd try single-process compilation and see how it works: $SYSTEM.OBJ.Compile(.classes, "/multicompile=0") Multicompile qualifier: Name: /multicompile Description: Enable use of work queue manager (optionally specify the number of workers if value >1) Type: string UPD. Who throws a RESJOB? Do you want to kill compile process from external process (that was my idea)? Or do you want to terminate abnormally? If it's the second you need to check errolog from Compile method and terminate the process explicitly: do $system.Process.Terminate(, 1) Also I wrote a series of articles on managing Continuous Delivery process. Check it out.
go to post Eduard Lebedyuk · May 25, 2018 If Is it only Cache SQL, where did you learn about it?From documentation. Here's a link to SQL reference.