go to post Eduard Lebedyuk · Sep 26, 2025 %Close is called automatically. Consider the following example: Class Utils.GC Extends %RegisteredObject { Property Type As %String; /// do ##class(Utils.GC).Test() ClassMethod Test() { set obj = ..%New("explicit") kill obj do ..Implicit() } ClassMethod Implicit() { set obj = ..%New("implicit") // obj will be removed from memory after we exit current method/frame. } Method %OnClose() As %Status [ Private, ServerOnly = 1 ] { Write "%Close is running: ", ..Type,! Quit $$$OK } Method %OnNew(type) As %Status [ Private, ServerOnly = 1 ] { Set ..Type = type Quit $$$OK } } Here's the output from the Test method: HCC>do ##class(Utils.GC).Test() %Close is running: explicit %Close is running: implicit
go to post Eduard Lebedyuk · Sep 23, 2025 In router Force Sync Send should be 1. The default RCA behavior is ':?R=RF,:?E=S,:~=S,:?A=C,:*=S,:I?=W,:T?=C'This means for NACKs received with error code AR or CR retry, while codes AE or CE suspend the current outbound message and move on to the next. I suppose you want ':?R=RF,:?E=F,:~=S,:?A=C,:*=S,:I?=W,:T?=C'
go to post Eduard Lebedyuk · Sep 17, 2025 To avoid getting unrelated http errors on xDBC testing, test in terminal: set sc = ##class(%SYSTEM.SQLGateway).TestConnection(name, 0, 0, .err) set sc = ##class(%SQL.Manager.API).TestDecodeDSN(name, usr, password, 0, .err)
go to post Eduard Lebedyuk · Sep 17, 2025 Are you on Linux? Use JDBC. ODBC Snowflake driver is incompatible with IRIS because it uses a backtrace() syscal which causes signal 11 in IRIS process if the process is running in a background. Snowflake ODBC driver uses backtrace to determine Driver Manager on Linux, so currently it does not work on Linux at all with IRIS.
go to post Eduard Lebedyuk · Jul 8, 2025 Great! IRIS 2019.4.0, Business Host class compilation triggers all Config Items of that class to be automatically restarted. Which compile flag is that?
go to post Eduard Lebedyuk · Jun 30, 2025 Properties are case sensitive. What would be the use case for that?
go to post Eduard Lebedyuk · Jun 3, 2025 Timings heavily depend on your setup. You can always start by collecting the data for an hour.
go to post Eduard Lebedyuk · May 28, 2025 Check this example. It iterates all JSON elements, and also outputs the corresponding paths to access them.
go to post Eduard Lebedyuk · May 28, 2025 You can also use defaults for that: w responseData.%Get("items",[]).%Get(0,{}).%Get("titles",[]).%Get(0, {}).%Get("value",{}).%Get("en_US")
go to post Eduard Lebedyuk · May 27, 2025 %SQLConnection inherits %XML.Adaptor, so you can also use xml export/import.
go to post Eduard Lebedyuk · May 23, 2025 There are three property types which result in custom selectors: %Boolean %Integer %SYS.Task.Password None of them are a directory unfortunately. Path datatype would be nice to have. Please submit a WRC request for it.
go to post Eduard Lebedyuk · May 20, 2025 Are both instances running under a system service account (or user account)? Try to raise process priority before executing your script with: w $SYSTEM.Util.SetPrio(7) - does it change anything?
go to post Eduard Lebedyuk · May 20, 2025 You're welcome. Here's a bit more info about how BPL BPs work. After you compile a BPL BP, two classes get created into the package with the same name as a full BPL class name: Thread1 class contains methods S1, S2, ... SN, which correspond to activities within BPL Context class has all context variables and also the next state which BPL would execute (i.e., S5) Also BPL class is persistent and stores requests currently being processed. BPL works by executing S methods in a Thread class and correspondingly updating the BPL class table, Context table, and Thread1 table where one message "being processed" is one row in a BPL table. After the request is processed, BPL deletes the BPL, Context, and Thread entries. Since BPL BPs are asynchronous, one BPL job can simultaneously process many requests by saving information between S calls and switching between different requests.For example, BPL processed one request till it got to a sync activity - waiting for an answer from BO. It would save the current context to disk, with %NextState property (in Thread1 class) set to response activity S method, and work on other requests until BO answers. After BO answers, BPL would load Context into memory and execute the method corresponding to a state saved in %NextState property. That's why registered objects as context properties can (and would) be lost between states - as they are not persisted.
go to post Eduard Lebedyuk · May 19, 2025 HS.FHIR.DTL.vR4.Model.Resource.Patient is a registered object and not a persistent object, so there's no guarantee it will exist beyond a current BP State. You set context.patient in "Transform 1", so it will be gone from process memory after "Send to FHIR Repo 1" sends the request, but before it gets the reply back. As a solution you can serialize FHIR resource to json and persist that.
go to post Eduard Lebedyuk · May 16, 2025 Can you provide a minimal example, please? I assume you do not mutate/reuse objects.
go to post Eduard Lebedyuk · May 16, 2025 Is it possible to search all globals within a namespace/db or at least to do a full text search on a list of globals?
go to post Eduard Lebedyuk · May 8, 2025 Can't reproduce in IRIS for Windows (x86-64) 2022.1 (Build 209U) Tue May 31 2022 12:16:40 EDT: But can reproduce on IRIS for Windows (x86-64) 2025.1 (Build 223U) Tue Mar 11 2025 18:14:42 EDT Please file a WRC. Looks like something changed between 2022.1 and 2024.1.1