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.
go to post Robert Cemper · Sep 24, 2021 %SYS>d ^SECURITY 1) User setup2) Role setup3) Service setup4) Resource setup5) Application setup6) Auditing setup8) SSL configuration setup9) Mobile phone service provider setup10) OpenAM Identity Services setup11) Encryption key setup12) System parameter setup13) X509 User setup14) KMIP server setup15) Exit Option? 1 1) Create user2) Edit user3) List users4) Detailed list users5) Delete user6) Export users7) Import users8) Exit Option?
go to post Robert Cemper · Sep 21, 2021 so you can call the local commandline ( session or terminal) and runyour SELECT in SQL shell [ do $system.SQL.Shell() ]or from SMP System->Explorer->SQL to see if there is any content.If there is some content you may try next to use variables from the global scopefor your embeded SQLinstead of &sql(Select demoVersion into :DemoVersion from demointerface.DemoInstances where ID=:demoID) try it with&sql(Select demoVersion into :%DemoVersion from demointerface.DemoInstances where ID=:%demoID)