go to post Robert Cemper · May 12, 2021 if you use Relationship many As obj [ Cardinality = many, Inverse = one ];you create a managed pointer from many->one with no sequence of insert.Though it may be kept if new "many" elements are inserted in sequence with ascending IDs.Later (manual?) add to the relationship of already exisiting "many" may break this. To bypass this limitation I see 2 possible solutions:- you add a property (auto-incremented, insert sequencer) to "many" to keep the insert sequence e.g. Property InsertSequence As %Integer [ InitialExpression = {$increment(^InSeq)} ];which is rather brute force, but available to manual adjustment for existing data - you add to "one" side: Property ManyList As %ListOfObjects;and add your many with Insert() function at and the end of the individual list.The advantage of this approach is to have the freedom to change the sequence at your needsAnd it also allows a kind of m:n relation as you are not limited to add your many to a unique one.This is not my preferred solution and requires some coding erfort.
go to post Robert Cemper · May 4, 2021 in order to provide efficient updates for DeepSee there is a feature named DSTIME.It writes kind of a log about inserts, deletes, updates. This may suit your requirements.About 2 years ago I have written an article about the subject. Take a look if this is what you need.https://community.intersystems.com/post/synchronize-data-dstime
go to post Robert Cemper · May 2, 2021 All your examples are correct.BUT: - all your examples assume that docker is available to the users.- this prerequisite is not always given. And may even contradict customer-defined rules.And as I mentioned earlier: customers pay so they define their rules.Losing a bid just because someone deep in the background dislikes SSH access must not be acceptable. [I have learned my lessons using VMware long before it became an "accepted platform" ]
go to post Robert Cemper · Apr 30, 2021 Did you ever try this? https://learning.intersystems.com/course/view.php?id=28
go to post Robert Cemper · Apr 28, 2021 ¡Hola @Kurro Lopez !It's a really interresting issue.#2) your second example can't work by principal as you don't pass a call parameter.#1) It is not foreseen to use object properties as host-variables in SQLThe code fails in the generated Execute method. set tResult = tStatement.%Execute($g(pObject.KeyProcess),$g(pObject.CodeSpecialist),$g(pObject.CodeProvider),$g(pObject.CodeCenter),$g(pObject.Date)) $GET for oblect-properties is just not implemented. It is definded by the class and always there,But it is required and makes sense for multidimensional properties ! This is valid for ObjectScript as such and not related to SQL.But in handwritten code you can use $g(NOTHING,pObject.KeyProcess) The generator just doesn't do it. Workaround #1: directly fiddle in the generated code . Not recommendedWorkaround #2: move your properties with a helper function into local variablesand adjust your query to those variables example helper (with obj or id): ClassMethod FillProp(pObject As Kurro.MyClass) As %Boolean [ SqlName = FILLP, SqlProc ]{if '$isObject(pObject) set obj=##class(Kurro.MyClass).%OpenId(pObject)else set obj=pObjectset %Kurro("kp")=obj.KeyProcess ,%Kurro("sp")= obj.CodeSpecialist ,%Kurro("pr")= obj.CodeProvider ,%Kurro("cs")= obj.CodeCenter ,%Kurro("dt")= obj.Datequit 1}example query; Query GetInfoRcc(objid As %Integer) As %SQLQuery(CONTAINID = 0, ROWSPEC = "IdList:%String,IdProcess:%String,Duration:%String"){ SELECT IdList, IdProcess, Duration FROM Kurro.MyClass WHERE KeyProcess = :%Kurro("kp") AND CodeSpecialist = :%Kurro("sp") AND CodeProvider = :%Kurro("pr") AND CodeCenter = :%Kurro("cs") AND "Date" = :%Kurro("dt") AND FILLP(:objid) = 1} works as expected.Sorry for being late. I was interrupted by .... 15 times at least with nonsense
go to post Robert Cemper · Apr 28, 2021 There is an example of the WebSocket Server in namespace SAMPLES on Caché only:in addition there are 4 examples for Caché on Open Exchange https://openexchange.intersystems.com/package/WebSocketsSample https://openexchange.intersystems.com/package/WebSocketsSample https://openexchange.intersystems.com/package/WebSockets-Tutorial https://openexchange.intersystems.com/package/WebSocketClient-js
go to post Robert Cemper · Apr 25, 2021 try: ; set file=$system.Util.ManagerDirectory()_"messages.log" open file:("RS"):1 w $T open 2:99 try { for n=1:1 use file read lin use 2 write lin,! } catch { close 2,file write n_" lines",! } ; then use ^SPOOL mapping (OEX) to work on it with SQL
go to post Robert Cemper · Apr 24, 2021 start of sshd at container start is solved. THANKS to @Hannes Postl OEID
go to post Robert Cemper · Apr 23, 2021 Thanks to the input by @Hannes Postl OEID container start inclusive SSH is now standard $ docker-compose up -d
go to post Robert Cemper · Apr 23, 2021 Thank you @Hannes Postl OEID !You not only made my day but my week!My major issue is fixed and you inspired me to some useful changes
go to post Robert Cemper · Apr 23, 2021 Hello Hannes!Thanks for the hint ! I'll check immedeatly.- for the stop:I've seen this in some cases but could imagine it related to large global buffers.default timeout for docker stop iris is 10 sec but docker stop -t 60 iris will give it a minutethe total save approach could be docker exec iris iris stop iris quietly so iris is downdocker stop iris now stop the container
go to post Robert Cemper · Apr 23, 2021 Hi @Kurro Lopez ! The Follows operator is ] while ] stands for Binary Follows stands ]] for Binary Sorts After the difference is described there though it may sound esoteric at first sight.
go to post Robert Cemper · Apr 22, 2021 Reacting to various security concerns I have adjusted Dockerfile to the templateAt the price of an additional command @ container start.It is now: $ docker-compose up -d$ docker-compose exec -u root iris /sshstart.sh README.md is adjusted, Video is unchanged (to hide the additional grey hairs) .
go to post Robert Cemper · Apr 21, 2021 This is an excellent application.- It allows to create a base configuration and handle variants.- And it's an excellent readable and easy-to-understand documentation.- On top, it is JSON based and therefore well suited to source and version managementThe original CachéParameterFile iris.cpf does a mimic of versioning.But it is buried deep into the installation directory and as cryptic as theEgyptian Book of the Dead. [reserved to the priest of IRIS cultus] I was waiting for something similar useful for decades!I suggest: No one running and supporting more than 2 configurations should miss it!