go to post Eduard Lebedyuk · Aug 2, 2020 I'm not sure where you get the credentials error. The flow should be from InterSystems IRIS to Java BS/BO and it's credential-less. Check the docs.
go to post Eduard Lebedyuk · Aug 2, 2020 Looks like there's some issues with InterSystems IRIS accessing Java Gateway. Are there some additional Details available in audit log? Here's a sample implementation of Kafka Producer via PEX Java BO.
go to post Eduard Lebedyuk · Jul 31, 2020 You can use this class to produce XLSX from SQL. You can also use %Display/%DisplayFormatted methods to change how things are presented.
go to post Eduard Lebedyuk · Jul 29, 2020 I'd use $lb instead of local as you don't store anything in subscripts anyway.
go to post Eduard Lebedyuk · Jul 28, 2020 Python Gateway - invoke Python code snippets for your analytics and machine-learning related tasks Are there any docs or guides on that feature?
go to post Eduard Lebedyuk · Jul 27, 2020 If the method is inherited in a Persistent class, it won't compile. You can easily modify the method to ignore abstract method if they are system (start with %) or originate from system classes (start with %). It looks as though it checks for the name of the abstract method but not the number of parameters the method requires. You can modify checker to check whatever you need. Also, if I add another parameter in addition to the parameters listed, this also seems to be ok. It is, inherited method can accept more arguments than a parent method. Do you know if there are plans for the compiler to check for the implementation of abstract methods instead of having to inherit code to do this? Please file a WRC issue.
go to post Eduard Lebedyuk · Jul 27, 2020 You can easily add your own compile-time check via method generators. Here's an example which checks that all abastract methods are implemented. Class Test.AbstractChecker { ClassMethod Check() As %Status [ CodeMode = objectgenerator, ForceGenerate ] { #Dim sc As %Status = $$$OK // Get class name from %compiledclass object which is an instance of a currently compiled class Set class = %compiledclass.Name // Iterate over class methods. // You can also use %class object to iterate Set method=$$$comMemberNext(class, $$$cCLASSmethod, "") While method'="" { // Get mthod abstract state Set abstract = $$$comMemberKeyGet(class, $$$cCLASSmethod, method, $$$cMETHabstract) // Quit iteration when we find any abstract compiled method If abstract { set origin = $$$comMemberKeyGet(class, $$$cCLASSmethod, method, $$$cMETHorigin) Set sc = $$$ERROR($$$GeneralError, $$$FormatText("Abstract method %1 in class %2 not implemented (origins from %3)", method, class, origin)) Quit } // Get next method Set method=$$$comMemberNext(class, $$$cCLASSmethod, method) } Quit sc } } After adding this class to inheritance I get an error on compilation:
go to post Eduard Lebedyuk · Jul 19, 2020 PythonGateway does not have this limitation with global transfer and sql procedure for SQL access. Recently I've done an ml poc with a data set 6400 columns wide without issues.
go to post Eduard Lebedyuk · Jul 16, 2020 How do I reference parent from child if parent id is composite? Here's my global: ^data("idA", "idB") = "Parent" ^data("idA", "idB", 1) = "Child" And Class is: Class Parent { Property IdAProp; Property IdBProp; } SQL Storage for Parent works. For Child I have tried: <Subscript name="1"> <Expression>{User.Parent.IdAProp}</Expression> </Subscript> <Subscript name="2"> <Expression>{User.Parent.IdBProp}</Expression> </Subscript> <Subscript name="3"> <Expression>{Position}</Expression> </Subscript> But compilation fails with: ERROR #5547: Map: Map1 - Subscript Expression - invalid expression '{User.Parent.IdAProp}'. Must be a valid field reference. If this is the Master Map, it must be an IDKEY field. > ERROR #5030: An error occurred while compiling class 'User.Children' UPD. SQL schema name should be used, not class.
go to post Eduard Lebedyuk · Jul 16, 2020 Check out this series of articles on the topic of mapping globals to classes.
go to post Eduard Lebedyuk · Jul 15, 2020 Class SerialA Extends (%SerialObject, %XML.Adaptor) [ ProcedureBlock ] { Property SerialB as SerialB; Property SerialC as SerialC(XMLPROJECTION = "NONE"); }
go to post Eduard Lebedyuk · Jul 15, 2020 Please consider posting your question with sample code to reproduce your issue as a separate question.
go to post Eduard Lebedyuk · Jul 13, 2020 You can create your own snippets in VSCode. For example here's snippet code for BS Class ${1:class} Extends Ens.BusinessService { Parameter ADAPTER = "${2:adaptor}"; Property Adapter As ${2:adaptor}; Method OnProcessInput(pInput As %RegisteredObject, Output pOutput As %RegisteredObject, ByRef pHint As %String) As %Status { Quit $$$ERROR($$$NotImplemented) } }
go to post Eduard Lebedyuk · Jul 13, 2020 Well, I'm out of ideas. Check that this global contains all references to Ensemble namespaces (under restricted user): zw ^%SYS("Ensemble","InstalledNamespace") Contact the WRC?
go to post Eduard Lebedyuk · Jul 13, 2020 Does the two resultsets also output a limited list of namespaces (under limited user): Do ##class(%SYS.Namespace).ListAll(.NspAllList,0) Do ##class(%CSP.Portal.Utils).%GetNamespaceList(.NspList) Zw NspAllList. NspList