go to post Robert Cemper · Nov 16, 2020 Hello @Anna Golitsyna!the 3rd example is 1 class that contains 2 basic functionalities: A Server and a Client.The system you want to control runs the ClassMethod Server.- opens an IP port and listens for orders, execute it, and continue looping.- it is typically started in the background during system start (from %ZSTART.mac)This is the "hidden Login"The (Classmethod) Client connects to the listening port and sends a request and gets answers.The structure of Requests and Answer is up to you and makes sure you have always controlover what should happen on the remote system. As your "Listener" is active already thereis no need for any further login. But you are of course free to implement it on top of this basic mechanic.
go to post Robert Cemper · Nov 13, 2020 I confirm it is easy and works !Take the screenshot BEFORE submitting.
go to post Robert Cemper · Nov 13, 2020 The basic logic is hierarchically organized as an extended B+ tree. wiki
go to post Robert Cemper · Nov 13, 2020 The major impact is the default collation for CACHETEMP/IRISTEMP. This may affect sorting! There is my related question Multi Language Sort @Vitaliy Serdtsev provided an excellent solution as reply to the problemincluding a detailed example of how to cover solve the issues I foundwith basic features already available in Caché since almost ever(?).
go to post Robert Cemper · Nov 12, 2020 methodname_"Response" is hardcoded in system class %SOAP.WebServiceI would warn for writing a customized version of it.
go to post Robert Cemper · Nov 12, 2020 To get rid of xmlns: attribute In your SOAPservice class you may try Paramter NAMESPACE = "";
go to post Robert Cemper · Nov 11, 2020 With MS SQL it's even easier as you can directly run ClassMethods/Procedures written in TSQL
go to post Robert Cemper · Nov 11, 2020 I didn't mention SOAP WebServices that you can generate directly in Studio.
go to post Robert Cemper · Nov 11, 2020 see these 3 possibilities with examples in OEX Background Jobs over ECP IRIS Native API for ObjectScript Simple Remote Server Control
go to post Robert Cemper · Nov 11, 2020 It seems that your CSP page doesn't assign a license user. So your user is your session ID. 3 in parallel.Take a look to ##class(%CSP.Session).Login( . . . ) for details
go to post Robert Cemper · Nov 10, 2020 According to your description you most probably experience this: Documented here the doc is for IRIS but it is in place since Caché 2010 or before found for 2013.1 Sessions and Licensesmore verbose
go to post Robert Cemper · Nov 10, 2020 Besides the functionality and speed that you mentioned already,there come other factors to my mind. Just a few from the hip: Portability: Moving a Caché/IRIS DB from one system to the other is as easy as a file copy. And this goes across most actual operating platforms on local HW or in the cloud, from Win to *X and back Flexibility: Splitting or extending your DB if you run out of disk space has no impact on the applications. Vertical or horizontally scaling is a standard feature Connectivity: especially with IRIS you have a huge range of adapters and interfaces available that allow access not only by SQL but also by Objects without any need to separate the data accessed from each other. Openness: You need a private SQL Function or SQL Procedure because Standards don't fit? No problem: Just add your self modeled ClassMethod and you have it done for both SQL and Object access. As I mentioned already in a different place: The only limit is your own imagination.
go to post Robert Cemper · Nov 10, 2020 There is my related question Multi Language Sort and the new extension may cover some very simple cases. @Vitaliy.Serdtsev provided an excellent solution as reply to the problemincluding a detailed example of how to cover solve the issues I foundwith basic features already available in Caché since almost ever(?).
go to post Robert Cemper · Nov 9, 2020 with error trapping /// Set value to %session.Data ClassMethod setValue(params...) As %Status { try { set var=$name(%session.Data) for i=1:1:params-1 set var=$name(@var@(params(i))) set @var=$g(params(params)) set status=$$$OK } catch { set status=$system.Status.Error(710) } quit status }
go to post Robert Cemper · Nov 9, 2020 it doesn' trap this cases yet do ..setValue("key1", "key2", , "key4", "val") do ..setValue("key1", "key2", "", "key4", "val")
go to post Robert Cemper · Nov 9, 2020 did you mean that ? /// Set value to %session.Data ClassMethod setValue(params...) As %Status { quit:params<2 0 set var="%session.Data(" for i=1:1:params-1 set var=var_"params("_i_")," set $e(var,*)=")" set @var=params(params) quit $$$OK }
go to post Robert Cemper · Nov 9, 2020 /// Set value to %session.Data ClassMethod setValue(params...) As %Status { quit:params<2 0 set var="%session.Data(" for i=1:1:params-1 set var=var_""""_params(i)_"""," set $e(var,*)=")" set @var=params(params) quit $$$OK }
go to post Robert Cemper · Nov 6, 2020 The scope and the dimension of possibilities are much wider with IRIS than it was with Caché.Very generally speaking: There is nothing in Caché that you can't do with IRIS.The only thing you might miss eventually, are some ancient compatibility hooks back to the previous millennium. Also, support of some outdated operating system versions is gone
go to post Robert Cemper · Nov 6, 2020 Very generally speaking: There is nothing in Caché that you can't do with IRIS.The only thing you might miss eventually, are some ancient compatibility hooks back to the previous millennium.
go to post Robert Cemper · Nov 5, 2020 In general YES.I did it myself with preIRIS Caché.Data and Tables and Views and Triggers are not demanding.Migrating Stored Procedures could take a little bit more effort.But the ability to transform Stored Procedures to Class Methods should allow also to solve tricky situations. (I'm personally proud that over more than a decade I never lost a benchmark against Oracle))