go to post Eduard Lebedyuk · Dec 19, 2018 If you're using InterSystems IRIS try this connection string (replacing values with appropriate): "Driver=InterSystems ODBC Driver;Host=127.0.0.1;Port=56772;Database=USER;UID=myUsername;PWD=" and for Caché/Ensemble try (driver name could be InterSystems ODBC): "Driver=Cache ODBC Driver;Host=127.0.0.1;Port=1972;Database=USER;UID=myUsername;PWD=" If the problem persist, check Audit log.
go to post Eduard Lebedyuk · Dec 12, 2018 %ObjectToJSON writes stream to current device. You need to write to stream: set oMetadata = ... /// metadata is from ADT message which is dynamic object set stream = ##class(%Stream.GlobalCharacter).%New() set tSC = ##class(%ZEN.Auxiliary.jsonProvider).%WriteJSONStreamFromObject(stream, oMetadata) quit:$$$ISERR(tSC) tSC set request = ##class(Ens.StreamContainer).%New(stream) set tSC = ..SendRequestAsync(..JSONOperation,stream,0,,..MetadataContext) /// send the stream to operation And your JSONOperation should be able to accept messages of Ens.StreamContainer class. I just checked Ens.BusinessService:SendRequestAsync signature and it's: Method SendRequestAsync(pTargetDispatchName As %String, pRequest As %Library.Persistent, pDescription As %String = "") As %StatusSo maybe the last line should be just: set tSC = ..SendRequestAsync(..JSONOperation, stream) Finally, use %ZEN.Auxiliary.altJSONProvider instad of %ZEN.Auxiliary.jsonProvider. It's faster.
go to post Eduard Lebedyuk · Dec 11, 2018 At the very least changes in:Query elements of any classClassMethods with [SqlProc] modifierMay require a query purge.
go to post Eduard Lebedyuk · Dec 10, 2018 Try this.1. Stop caché.2. In cache.cpf write correct remote license server [LicenseServers] LOCAL=host,port where port usually is 4001 3. Start instance Instance should start and show correct license information.
go to post Eduard Lebedyuk · Dec 3, 2018 *** Do you see any drawback or issues with this? Can there be any other impact due to this?This is absolutely not a recommended approach.Here's how you can do it.Create your own class MyString that extends %String and specifies MAXLEN parameter (I recommend 5000 or 10000, but something specific in any case).Use %Dictionary package to iterate over all your persistent classes. In there:open each classiterate over its propertieschange %String type if found to MyStringsave classRecompile modified classes.
go to post Eduard Lebedyuk · Nov 22, 2018 Check $system variable: write $system Or, to get just the system call: write $system.INetInfo.LocalHostName()
go to post Eduard Lebedyuk · Nov 20, 2018 Also, if I follow your steps and open the eventlog I get the message ERROR #5580: SQL Privilege Violation: 'User Testuser is not privileged for the operation' SOURCE ELEMENT: %ZEN.Component.tablePane (table)Testuser does not have required privileges to access Ens_Util.Log table. Add SELECT privilege for the Testuser. You may also need to add %DB_<DBNAME> role.I previously got this error when trying to open the messagebank from the production configuration.You'll need SELECT privilege on Ens.MessageHeader and %Ens_MessageHeader resource on U.I have (sort of) accomplished this in Ensemble, but in HealthConnect/Share I just can't get it done.How?I should clarify when I say monitor, I mean being actually able to see the production and navigate the message bank. Being able to see the routingrules and/or transformations would be nice, but not necesary.Check other available pages and resources. There are separate resources for message headers, message contents, visual trace, rules and so on. Production config page is exactly for configuring production.
go to post Eduard Lebedyuk · Nov 20, 2018 If you have ArchivePath setting specified, then the files would be moved there. Otherwise they are deleted.Programs that restore deleted files may be able to restore these files.
go to post Eduard Lebedyuk · Nov 20, 2018 I don't think that behavior can be easily modified. JSON_OBJECT checks first symbol of a value and if it's a { or a [, does the conversion.You can try %ZEN.Auxiliary.altJSONSQLProvider class to generate JSON from SQL queries.we don't always know which properties will contain these valuesWhy? Can a property contain JSON or not JSON? You can also try to parse JSON on a first save and save individual values instead.
go to post Eduard Lebedyuk · Nov 20, 2018 Do you want to access properties without coding them?Use $property for that: set obj = ##class(A).%New() for i=1:1:3 { set $property(obj, "Doctor" _ i) = ##class(%PopulateUtils).Name() } zwrite obj
go to post Eduard Lebedyuk · Nov 18, 2018 You need to write it. From docs:You can execute your custom code when certain events occur. Two steps are required: 1. Define the ^%ZSTART routine, the ^%ZSTOP routine, or both.In these routines, you can define subroutines to execute when the certain activities start or stop.^%ZSTART and ^%ZSTOP must be defined in the %SYS namespace, although they can be mapped to a non-default database.2. Use the Management Portal to configure Caché to invoke the desired subroutines.Specifically, if you define the routine ^%ZSTART and ^%ZSTOP and you include subroutines with specific names, the system automatically calls these subroutines when the activity is beginning or ending. The subroutine names are as follows:SYSTEM — Executed when Caché as a system starts or stopsLOGIN — Executed when a user performs a login or logout using the %Service_Console or Service_Telnet services.JOB — Executed when a JOB begins or endsCALLIN: — Executed when an external program begins or completes a CALLINFor example, when a system starts, the system automatically invokes SYSTEM^%ZSTART, if that is defined and if you have used the Management Portal to enable this subroutine.SYSTEM^%ZSTART and SYSTEM^%ZSTOP are run with $USERNAME set to $system and $ROLES set to %All. To run your code with a different username, use $SYSTEM.Security.Login() to set the desired name and then continue with your custom code. If you use JOB to launch any additional processes, those processes will inherit the same username (and roles) as the initiating process.Enabling %ZSTART and %ZSTOPOnce the routines have been designed, developed, compiled, and are ready to be tested, individual entry points may be enabled through the Management Portal. Navigate to the Startup Settings page by selecting System Administration, then Configuration, then Additional Settings, then Startup Settings, and edit the appropriate individual settings:SystemStart, SystemHaltProcessStart, ProcessHaltJobStart, JobHaltCallinStart, CallinHaltTo deactivate one or more of the entry points, use the same procedure but change the value to false.
go to post Eduard Lebedyuk · Nov 16, 2018 Yeah, there's not much info.To create inventory scan call: set in = ##class(Inventory.Scanner).RunScan("Version 1") set dbU = ##class(Inventory.DatabaseComponent).%New() do dbU.Init(in,"C:\InterSystems\Ensemble\mgr\db\CACHE.DAT") do in.RootComponent.AddComponent(dbU) set sc = in.%Save() //do in.WriteToFile("c:\Temp\scanVersion"_$tr($zdt($h,8)," :","Z")_".xml") And to get diff between two versions/times use SQL: SELECT s1.Name, s1.scan->EndTimeStamp, s2.scan->EndTimeStamp FROM Inventory.RoutineComponent s1 JOIN Inventory.RoutineComponent s2 ON s1.Name=s2.Name WHERE s1.scan=1 AND s2.scan=2 AND NOT s1.SHA1Hash=s2.SHA1Hash it would return items with hashes changed between scan 1 and 2. The same query can be further modified to accept timestamps, etc.
go to post Eduard Lebedyuk · Nov 16, 2018 It only matters that the async node is caught up.Also you need to use SSL.It all depends on connectivity (bandwidth and lag).
go to post Eduard Lebedyuk · Nov 16, 2018 ZSTART and ZSTOP are kind of vague, how does that fit into ccontrol start and ccontrol stop. Is there any setting where this can be set to automatic?ZSTART and ZSTOP are executed on startup/shut down automatically.
go to post Eduard Lebedyuk · Nov 10, 2018 You need so specify your base URL as URL property and pass the parameters in a method: set sc = ..Adapter.Get(.httpResponse, "key,key2", "value", "value2") It would send the following request: GET /baseURL?key=value&key2=value2 HTTP/1.1
go to post Eduard Lebedyuk · Nov 1, 2018 Use ValidateStream method of Ens.Util.XML.Validator class. It does exactly what you need.
go to post Eduard Lebedyuk · Oct 25, 2018 Check RESTForms project - it aims to do exactly that.Community article: part 1, part 2.
go to post Eduard Lebedyuk · Oct 16, 2018 There are far more efficient ways to do that.Move tables you want shared into a separate Namespace with separate Code/Data databases.Map your data and code into original namespace.Verify that it all works as expected. So far it should work as before.Create a mirroring configuration.Add 2 created databases to the mirror configuration.Add second server as a DR mirror.Move databases to a DR mirror and mount them there.(Optional) Create a namespace with 2 mirrored databases.Add desired mappings on a second system.Docs.
go to post Eduard Lebedyuk · Oct 9, 2018 Do you have IMAP available?If not you can use DavMail to convert exchange to POP3 and that's easily consumable from InterSystems IRIS.