go to post Robert Cemper · Oct 18, 2021 if you don't have the fitting Dockerfile + docker-compose.yml your installation might end in troublesI'd suggest using one of the ready-made templates.https://github.com/intersystems-community/objectscript-docker-template or any other from OEX https://openexchange.intersystems.com/
go to post Robert Cemper · Oct 18, 2021 As by default is READ ONLY as with any installation and you are well-advised not to change this.What container image do you start ?
go to post Robert Cemper · Oct 15, 2021 @Sergei Shutov You missed the point.validatoris typically stored as part of the individual data record to handle various types of checks within your class to provide the highest flexibility. Think of language or geographically related checking.You can't bypass the challenge.Neither by $classmetho() nor any code generator as this is all static code frozen and inflexible a runtime. Creating a check routine by field or by record is not a realistic solution
go to post Robert Cemper · Oct 14, 2021 SMELLS ! what a waste of energy just for cosmetics and no added value or functionality !
go to post Robert Cemper · Oct 13, 2021 Good Morning,Now the case seems rather clear to me: in a fresh image of IRIS, the namespace USER is preconfigured for Interoperability/Ensemble and your Copy from should be USER differently in a fresh installed HS image, it is the namespace HSSYS that is preconfigured for Interoperability/Ensemble and your Copy from should be HSSYS namespace %SYS was and is NEVER configured to work in Interoperability/Ensemble similar is IRISSYS using as your working database a bad misconfiguration with unpredictable conflicts and consequences
go to post Robert Cemper · Oct 12, 2021 There's a mismatch. You see the code but no data at runtime.Project is always just a subset of Namespace
go to post Robert Cemper · Oct 12, 2021 you seem to miss this mapping by failed installation [Map.your namespace> Global_Ens.SecondaryData*=ENSSECONDARY Global_EnsDICOM.Dictionary=ENSLIB Global_EnsEDI.Description=ENS Global_EnsEDI.Description("X","X12")=ENSLIB Global_EnsEDI.Schema=ENS Global_EnsEDI.Schema("HIPAA_4010")=ENSLIB Global_EnsEDI.Schema("HIPAA_5010")=ENSLIB Global_EnsEDI.Schema("ISC_00401")=ENSLIB Global_EnsEDI.Schema("ISC_00405")=ENSLIB Global_EnsEDI.X12.Description=ENS Global_EnsEDI.X12.Description("HIPAA_4010")=ENSLIB Global_EnsEDI.X12.Description("HIPAA_5010")=ENSLIB Global_EnsEDI.X12.Schema=ENS Global_EnsEDI.X12.Schema("HIPAA_4010")=ENSLIB Global_EnsEDI.X12.Schema("HIPAA_5010")=ENSLIB Global_IRIS.Msg=ENS Global_IRIS.Msg("Arial,Tahoma,Verdana")=ENSLIB Global_IRIS.Msg("Confirm")=ENSLIB Global_IRIS.Msg("EDIDocumentView")=ENSLIB Global_IRIS.Msg("Ens")=ENSLIB Global_IRIS.Msg("EnsAlert")=ENSLIB Global_IRIS.Msg("EnsBPL")=ENSLIB Global_IRIS.Msg("EnsColumns")=ENSLIB Global_IRIS.Msg("EnsDICOM")=ENSLIB Global_IRIS.Msg("EnsEDI")=ENSLIB Global_IRIS.Msg("EnsEDIEDIFACT")=ENSLIB Global_IRIS.Msg("EnsEDIHL7")=ENSLIB Global_IRIS.Msg("EnsEDISEF")=ENSLIB Global_IRIS.Msg("EnsEDIX12")=ENSLIB Global_IRIS.Msg("EnsEnt")=ENSLIB Global_IRIS.Msg("EnsLDAP")=ENSLIB Global_IRIS.Msg("EnsMQTT")=ENSLIB Global_IRIS.Msg("EnsPushNotifications")=ENSLIB Global_IRIS.Msg("EnsRecordMap")=ENSLIB Global_IRIS.Msg("EnsSAP")=ENSLIB Global_IRIS.Msg("EnsSR")=ENSLIB Global_IRIS.Msg("EnsSearchTable")=ENSLIB Global_IRIS.Msg("EnsWf")=ENSLIB Global_IRIS.Msg("EnsXPATH")=ENSLIB Global_IRIS.Msg("EnsebXML")=ENSLIB Global_IRIS.Msg("Ensemble")=ENSLIB Global_IRIS.Msg("ITK")=ENSLIB Global_IRIS.Msg("RuleEditor")=ENSLIB Global_IRIS.Msg("Workflow")=ENSLIB Global_IRIS.Msg("tahoma,verdana")=ENSLIB Global_IRIS.MsgNames=ENS Global_IRIS.MsgNames("Arial,Tahoma,Verdana")=ENSLIB Global_IRIS.MsgNames("Confirm")=ENSLIB Global_IRIS.MsgNames("EDIDocumentView")=ENSLIB Global_IRIS.MsgNames("Ens")=ENSLIB Global_IRIS.MsgNames("EnsAlert")=ENSLIB Global_IRIS.MsgNames("EnsBPL")=ENSLIB Global_IRIS.MsgNames("EnsColumns")=ENSLIB Global_IRIS.MsgNames("EnsDICOM")=ENSLIB Global_IRIS.MsgNames("EnsEDI")=ENSLIB Global_IRIS.MsgNames("EnsEDIEDIFACT")=ENSLIB Global_IRIS.MsgNames("EnsEDIHL7")=ENSLIB Global_IRIS.MsgNames("EnsEDISEF")=ENSLIB Global_IRIS.MsgNames("EnsEDIX12")=ENSLIB Global_IRIS.MsgNames("EnsEnt")=ENSLIB Global_IRIS.MsgNames("EnsLDAP")=ENSLIB Global_IRIS.MsgNames("EnsMQTT")=ENSLIB Global_IRIS.MsgNames("EnsPushNotifications")=ENSLIB Global_IRIS.MsgNames("EnsRecordMap")=ENSLIB Global_IRIS.MsgNames("EnsSAP")=ENSLIB Global_IRIS.MsgNames("EnsSR")=ENSLIB Global_IRIS.MsgNames("EnsSearchTable")=ENSLIB Global_IRIS.MsgNames("EnsWf")=ENSLIB Global_IRIS.MsgNames("EnsXPATH")=ENSLIB Global_IRIS.MsgNames("EnsebXML")=ENSLIB Global_IRIS.MsgNames("Ensemble")=ENSLIB Global_IRIS.MsgNames("ITK")=ENSLIB Global_IRIS.MsgNames("RuleEditor")=ENSLIB Global_IRIS.MsgNames("Workflow")=ENSLIB Global_IRIS.MsgNames("tahoma,verdana")=ENSLIB Global_IRIS.Temp.EnsHostTotals=IRISTEMP Global_IRIS.Temp.EnsPortal*=IRISTEMP Global_IRIS.Temp.EnsPublic*=IRISTEMP Global_IRIS.Temp.Ens*=ENSENSTEMP Routine_Ens*=ENSLIB Package_CSPX.Dashboard=ENSLIB Package_Ens=ENSLIB Package_EnsLib=ENSLIB Package_EnsPortal=ENSLIB and eventually also these databases ENSENSTEMP=C:\InterSystems\IRIS\mgr\ENS\ensenstemp\ ENSLIB=C:\InterSystems\IRIS\mgr\enslib\ ENSSECONDARY=C:\InterSystems\IRIS\mgr\ENS\enssecondary\
go to post Robert Cemper · Oct 12, 2021 What do you mean by "my namespace extends %sys"This makes no sense to me.Did you setup the namespace yourself ?
go to post Robert Cemper · Oct 12, 2021 which means table does not exist.SO your namespace is not setup for Interoperability aka Ensemble as you use Studio jus look for some Ens* classes if you see nothing of them,then the setup of your namespace is just wrong You have to create it again or change your configeratiion manually.
go to post Robert Cemper · Oct 12, 2021 I think this should work if your namespace is enabled for Ensemble / Interoperability Check this in SMP:SELECT count(ID) FROM Ens.MessageHeader ClassMethod FetchMsgCount() As %Integer [ PublicList = msgCount,SQLCODE ] { set msgCount=-1&sql(SELECT count(ID) INTO :msgCount FROM Ens.MessageHeader)If SQLCODE=0 Quit msgCountQuit SQLCODE} or just simpler ClassMethod FetchMsgCount() As %Integer [ ProcedureBlock = 0 ]{ set msgCount=-1&sql(SELECT count(ID) INTO :msgCount FROM Ens.MessageHeader)If SQLCODE=0 Quit msgCountQuit SQLCODE}
go to post Robert Cemper · Oct 12, 2021 Your last finding signals to me that you get blocked by [ProcedureBlock] either try using %suspendedCount instead of suspendedCount Method OnTask() As %Status [ PublicList = suspendedCount,SQLCODE ] { //implementation } or put it into a PublicList together with SQLCODE https://docs.intersystems.com/iris20211/csp/docbook/DocBook.UI.Page.cls?KEY=ROBJ_method_publiclist
go to post Robert Cemper · Oct 12, 2021 The license-mechanic is a little bit complicated: users are identified by username@127.0.0.1 (as mentioned already) every new process consumes a license slot over its lifetime each user gets a set of license slots (typically 25) once this limit (25) is exceeded ALL 25 slots are converted to normal (non-licenses) As a consequence, a request for license number 26 consumes 25 additional licenses for that user !!And these licenses come back to in the license slot mode only if ALL processes of that user are terminatedSo using a single user (e.g. from CSP) is rather risky in that relation $system.License.Login() may help you cross that limit.from docs: This function will relinquish a license if the session/process is already holdingone under a different identifier and it will obtain a new one on the behalf of theuser ID provided.If the MAXCONNECTIONS connection limit per user is exceeded,the usual transition to one-license-unit-per-connectionwill apply to this user identifier.
go to post Robert Cemper · Oct 7, 2021 From the main menu, in DC select members select the member of interrest and show all posts
go to post Robert Cemper · Sep 27, 2021 Hi @Jeffrey Drumm . there are 2 options #1)From SMP > Explorer > Classes in %SYS set filter to %IO*.cls and Documentation #2)In Studio in NS %SYS load the class and show Class Documentation[CTRL + SHIFT +F1]and see the code. I have seen more thrilling constructs before.
go to post Robert Cemper · Sep 26, 2021 @Marlin Mixon It is just not possible the way you tried. Because: (from class docs) method MoveTo(position As %Integer) as %Boolean Move to this position in the stream. If this suceeds then return true, else return false. Note this implementation is not efficient because it searches from the start of the stream, This means it does a Rewind() and a Read(position) • method Write(data As %RawString) as %Status Appends the string data to the stream and advances the current stream position by the number of characters in data. Note that a write operation immediately following a read or rewind will clear out the existing data in the stream.