go to post Eduard Lebedyuk · Aug 23, 2018 Not an answer, but you can use LIST function to remove cursors and simplify code. ClassMethod GetTypeDisplay() As %String { &sql(SELECT LIST(DISTINCT TypeName) INTO :result FROM Demo_Data.PrdType) q result } ClassMethod GetTypeValue() As %String { &sql(SELECT LIST(DISTINCT TypeId) INTO :result FROM Demo_Data.PrdType) q result }
go to post Eduard Lebedyuk · Aug 23, 2018 You should not modify system classes.So without Set httpRequest.SSLCheckServerIdentity=0 it doesn't work?
go to post Eduard Lebedyuk · Aug 22, 2018 I use set var1 = "value1" set var2 = "value1" set var3 = "value1" set var4 = "value2" set var5 = "value2" set var6 = "value3" set var7 = "value3" set var8 = "value3" as it's the most readable. Or #dim var1 As Type = "value1" Time spent on local sets is usually a pittance of all CPU time spent.
go to post Eduard Lebedyuk · Aug 22, 2018 You seem to receive empty response.What does set resp = httpRequest.HttpResponse zwrite resp write !,!,! do resp.OutputToDevice() Output?
go to post Eduard Lebedyuk · Aug 22, 2018 Check that stream is an object and contains relevant data: write $isObject(httpResponse) what data does it contain: do httpResponse.OutputToDevice() if it's not an object - what is it? zwrite httpResponse If everything is okay - stream contains what you expect it to contain, then what is the status of convert operation: Set sc = ##class(%ZEN.Auxiliary.jsonProvider).%ConvertJSONToObject(httpResponse,,.Object,1) write $System.Status.GetErrorText(sc) zwrite Object
go to post Eduard Lebedyuk · Aug 20, 2018 1. SELECT parent As Class, Properties FROM %Dictionary.CompiledIndex WHERE IdKey=1 2. SELECT parent As Class, Name, Type FROM %Dictionary.CompiledProperty WHERE Type='%Library.Integer' -- Name='Property' AND parent='Class' 3. SELECT 1 As "Exists" FROM %Dictionary.CompiledIndex WHERE _Unique=1 AND parent = :Class AND Properties = :Property
go to post Eduard Lebedyuk · Aug 20, 2018 You can map ^DeepSee.Folder and ^DeepSee.FolderItem globals, but it would map all dashboards from one NS to another.
go to post Eduard Lebedyuk · Aug 20, 2018 Have you checked ProComm+ alternatives?ZOC advertises as one, maybe there're others.
go to post Eduard Lebedyuk · Aug 17, 2018 Generally speaking, inside Caché you must have two functions InternalToExternal(name) As %String ExternalToInternal(path) As %String That translate Cache names (/app/index.csp) into filenames (i.e. C:\Temp\MyRepo\CSP\app\index.csp) and vice versa. Your CI system should: Build git diff between target commit and environment current commit. Sample code.Separate diff into 2 parts: added/modified and deleted.Load added/modified files into Cache.Translate external names for deleted list into internal names.Delete items from deleted list.Set current environment commit equal to target commit Here's a series of articles on building a CI/CD pipeline for InterSystems Cache.
go to post Eduard Lebedyuk · Aug 16, 2018 I ran InterSystems IRIS containers via Rancher and Portainer it's all the same stuff. GUI over docker run.
go to post Eduard Lebedyuk · Aug 16, 2018 can I deploy a container manuallySure, to deploy a container manually it's enough to execute this command: docker run -d --expose 52773 --volume /InterSystems/durable/master:/data --env ISC_DATA_DIRECTORY=/data/sys --name iris-master docker.eduard.win/test/docker:master --log $ISC_PACKAGE_INSTALLDIR/mgr/messages.log Alternatively, you can use GUI container management tools to configure a container you want to deploy. For example, here's Portainer web interface, you can define volumes, variables, etc there: it also allows browsing registry and inspecting your running containers among other things:
go to post Eduard Lebedyuk · Aug 16, 2018 This info does not seem to be available by default.You can define JOB^%ZSTART that would set global: Set ^TimeStarted($job) = $h And JOB^%ZSTOP: Kill ^TimeStarted($job) And reference this global to get process start time.
go to post Eduard Lebedyuk · Aug 16, 2018 GitHub does not offer CI functionality but can be integrated with CI engine.
go to post Eduard Lebedyuk · Aug 16, 2018 what do I need to have on a production host initially?First of all you need to have:FQDNGitLab serverDocker RegistryInterSystems IRIS container inside your Docker RegistryThey could be anywhere as long as they are accessible from production host.After that on a production host (and on every separate host you want to use), you need to have:DockerGitLab RunnerNginx reserve proxy containerAfter all these conditions are met you can create Continuous Delivery configuration in GitLab and it would build and deploy your container to production host.In that case how Durable %SYS and Application data (USER NAMESPACE) appear on the production host for the first time? When InterSystems IRIS container is started in Durable %SYS mode, it checks directory for durable data, if it does not exist InterSystems IRIS creates it and copies the data from inside the container. If directory already exists and contains databases/config/etc then it's used.By default InterSystems IRIS has all configs inside.
go to post Eduard Lebedyuk · Aug 16, 2018 Are you using JTDS driver?If so, check out the FAQ.First of all, you seem to pass user=domain\username (in your case user=osumc\CPD.Intr.Service), but FAQ offers domain parameter. Other parameter that seems promising is useNTLMv2.Try to pass: user=osumc;domain=CPD.Intr.Service;useNTLMv2=true
go to post Eduard Lebedyuk · Aug 15, 2018 Try: set st = ##class(%ZEN.Auxiliary.jsonProvider).%ConvertJSONToObject(responseStream,,.obj,1) obj would become %ZEN.proxyObject. You can also create a class and parse json into object of that class.