go to post Enrico Parisi · Mar 13, 2024 If you use server side editing, you can have as many servers/namespaces as you need in Explorer. In many environments server side editing in much more convenient.
go to post Enrico Parisi · Mar 13, 2024 In fact, for simple XML export (no namespace and other amenities) you can just use XMLExport*() methods. ClassMethod test() { Set message=##class(Mensajes.Response.Radiologia.NumeroOrdenAcodigoSERAMResponse).%New() Set message.resultado.codigo="06050301" Set message.resultado.error=##class(EsquemasDatos.Seguridad.Error).%New() Set message.resultado.error.codigo=0 Set message.resultado.error.descripcion="Proceso realizado correctamente" Set sc=message.resultado.XMLExportToString(.string) ; handle sc error here Write string,!! ; convert XML string back to object Set reader = ##class(%XML.Reader).%New() Set sc=reader.OpenString(string) ; handle sc error here Do reader.Correlate("resultado","EsquemasDatos.Radiologia.Resultado") Do reader.Next(.ReturnObject,.sc) ; handle sc error here Write "ReturnObject is of type ",ReturnObject.%ClassName(1),! do ReturnObject.XMLExport(,",indent") Quit } Result: Do ##class(Mensajes.Response.Radiologia.NumeroOrdenAcodigoSERAMResponse).test() <resultado><error><codigo>0</codigo><descripcion>Proceso realizado correctamente</descripcion></error><codigo>06050301</codigo></resultado> ReturnObject is of type EsquemasDatos.Radiologia.Resultado <resultado> <error> <codigo>0</codigo> <descripcion>Proceso realizado correctamente</descripcion> </error> <codigo>06050301</codigo> </resultado>
go to post Enrico Parisi · Mar 13, 2024 OK, you asked XML string to object 😊 ClassMethod test() { Set message=##class(Mensajes.Response.Radiologia.NumeroOrdenAcodigoSERAMResponse).%New() Set message.resultado.codigo="06050301" Set message.resultado.error=##class(EsquemasDatos.Seguridad.Error).%New() Set message.resultado.error.codigo=0 Set message.resultado.error.descripcion="Proceso realizado correctamente" Set writer=##class(%XML.Writer).%New() Set writer.Indent=1 Set sc=writer.OutputToString() ; handle sc error here Set sc=writer.RootObject(message.resultado) ; handle sc error here Set string=writer.GetXMLString() Write string,! ; convert XML string back to object Set reader = ##class(%XML.Reader).%New() Set sc=reader.OpenString(string) ; handle sc error here Do reader.Correlate("resultado","EsquemasDatos.Radiologia.Resultado") Do reader.Next(.ReturnObject,.sc) ; handle sc error here Write "ReturnObject is of type ",ReturnObject.%ClassName(1),! do ReturnObject.XMLExport(,",indent") Quit } Result: Do ##class(Mensajes.Response.Radiologia.NumeroOrdenAcodigoSERAMResponse).test() <resultado> <error> <codigo>0</codigo> <descripcion>Proceso realizado correctamente</descripcion> </error> <codigo>06050301</codigo> </resultado> ReturnObject is of type EsquemasDatos.Radiologia.Resultado <resultado> <error> <codigo>0</codigo> <descripcion>Proceso realizado correctamente</descripcion> </error> <codigo>06050301</codigo> </resultado>
go to post Enrico Parisi · Mar 13, 2024 To export a XML enabled class use %XML.Writer class. ClassMethod test() { Set message=##class(Mensajes.Response.Radiologia.NumeroOrdenAcodigoSERAMResponse).%New() Set message.resultado.codigo="06050301" Set message.resultado.error=##class(EsquemasDatos.Seguridad.Error).%New() Set message.resultado.error.codigo=0 Set message.resultado.error.descripcion="Proceso realizado correctamente" Set writer=##class(%XML.Writer).%New() Set writer.Indent=1 Set sc=writer.OutputToString() ; handle sc error here Set sc=writer.RootObject(message.resultado) ; handle sc error here Set string=writer.GetXMLString() Write string,! Quit $$$OK } In your EsquemasDatos.Radiologia.Resultado class add XMLNAME parameter to obtain the correct (lowercase) tag name: Class EsquemasDatos.Radiologia.Resultado Extends (%SerialObject, %XML.Adaptor) { Parameter XMLNAME = "resultado"; Property error As EsquemasDatos.Seguridad.Error; Property codigo As %String(MAXLEN = ""); Result: Do ##class(Mensajes.Response.Radiologia.NumeroOrdenAcodigoSERAMResponse).test() <resultado> <error> <codigo>0</codigo> <descripcion>Proceso realizado correctamente</descripcion> </error> <codigo>06050301</codigo> </resultado>
go to post Enrico Parisi · Mar 11, 2024 Strange. Maybe a permissions issue? What user starts the IRIS service? The default Local system?You can check that in Windows Services, look for "InterSystems IRIS Controller for IRIS". If so, does the SYSTEM account have access to e:\intersystems\iris ? I'm just guessing.
go to post Enrico Parisi · Mar 7, 2024 Change to Do ..SendRequestSync("process.Reconciliation",pInput, .pOutput)
go to post Enrico Parisi · Mar 7, 2024 In your OnProcessInput() methods, how do you call the business process (or operation)? SendRequestAsync() or SendRequestSync()?
go to post Enrico Parisi · Mar 6, 2024 Sure, that's fine, each process commit/rollback it's own transactions. My message was to @Timo Lindenschmid where he was trying to commit/rollback worker processes from the "main" process. That's not possible.
go to post Enrico Parisi · Mar 6, 2024 How can a process commit/rollback transactions of other process(es)??
go to post Enrico Parisi · Mar 5, 2024 Are you using "direct" file I/O using Open/Use etc. commands?I think that's the way to go for your requirements. If so, have a look to the $ZSEEK() function, the documentation is here.
go to post Enrico Parisi · Mar 5, 2024 I think that using EnsLib.REST.GenericService and EnsLib.REST.GenericOperation is the way to go.
go to post Enrico Parisi · Mar 4, 2024 What platform and upgrade target version? I think the platform is relevant because install/upgrade script is different in Linux and Windows.
go to post Enrico Parisi · Mar 4, 2024 I'm sorry, I don't have a system that old to check/test. The oldest I have is 2018 and there AESEncode() and AESDecode() are deprecated (use AESCBCEncrypt() and AESCBCDecrypt() instead). Are AESCBCEncrypt() and AESCBCDecrypt() implemented in version 2016?And AESCBCEncryptStream(), AESCBCDecryptStream()?
go to post Enrico Parisi · Mar 3, 2024 Please note that, by default, Base64Encode() Insert CR/LF after every 76 characters.Did you take that into account? See class reference.
go to post Enrico Parisi · Mar 3, 2024 When you run $zf(-100) from IRIS session terminal the external process is run in the OS context (secutity/permissions) of the OS user loggen in. When $zf(-100) is run by a storedproc or studio is run in the OS context (secutity/permissions) of the OS user used by the IRIS instance. You have permission and/or environment issue. Why run python using $zf(-100)? You can use embedded python to avoid this issues, it is simpler and have better performance.
go to post Enrico Parisi · Mar 3, 2024 What's the value of the parameter ELEMENTQUALIFIED in your classes? As Luis said, "The type for ELEMENTQUALIFIED is Boolean (0 or 1)". If you cannot post your actual class, can you reproduce the error writing a simple sample class and port it here?
go to post Enrico Parisi · Mar 1, 2024 How do you get to the download page? Thy using the "Download InterSystems IRIS" link in the left side of the community homepage. Using that link I can choose to download 2022.3