go to post Tani Frankel · Sep 6, 2022 Please see from here:https://www.intersystems.com/certifications/intersystems-iris-core-solut... Practice Questions This exam includes a set of practice questions to help candidates familiarize themselves with question formats and approaches. View Practice Questions
go to post Tani Frankel · Sep 4, 2022 Really enjoyed the webinar @Ron Sweeney Great content, insights and results, and thanks for the mentions
go to post Tani Frankel · Feb 9, 2022 Thanks Jeff! This is an important update for our customers - On one hand making them aware they now also have the CD releases as non-container kits, while on the other hand reminding them regarding the limitations of these kind of CD releases.
go to post Tani Frankel · Dec 29, 2021 Working with Yakov on this, we saw that for SCOPE_IDENTITY() to work on the SQL Serve side it needs to be in the same "scope" of the INSERT (for example in the same Stored Procedure), see here for reference. So what Yakov ended up doing was encapsulating the INSERT and SELECT SCOPE_IDENTITY() into a Stored Procedure which returns the newly inserted Row ID, and call the SP via the Adapter, thus inserting the new record and getting back the new ID.
go to post Tani Frankel · Dec 28, 2021 Congratulation to all winners! And especially to our local representative - @Yuval Golan! Yuval last year you were 3rd place, and this year up to 2nd... Bravo! @Kevin An beware next year
go to post Tani Frankel · Dec 20, 2021 Thanks Bob, yes, indeed JDBC/ODBC and using Couchbase's N1QL queries (and JSON results) is another connectivity option. If someone "wrapped" such connectivity into some Adapter that could also be interesting.
go to post Tani Frankel · Dec 11, 2021 I was able to get in, for example: $ docker-ls tags --registry https://containers.intersystems.com intersystems/irishealth ... requesting list . done repository: intersystems/irishealth tags: - 2019.1.1.615.1 - 2020.1.0.217.1 - 2020.1.1.408.0 - 2020.2.0.211.0 - 2020.3.0.221.0 - 2020.4.0.547.0 - 2021.1.0.215.0 - 2021.2.0.617.0
go to post Tani Frankel · Oct 28, 2021 Ok, Carig, so sorry about the superfluous explanation about the SQL Package to Schema name mapping... But now I do understand the problem better - First, as you realized you don't need the asterisk (*), just the name of the schema. And second you need to use the term SCHEMA in your statement before the schema name, or else we expect a table name (hence the error you got - table ... not found). So per the example I quoted originally above from the documentation: GRANT SELECT ON SCHEMA Sample TO Deborah In your example this would be: GRANT SELECT ON SCHEMA MyPkg_Messages TO myRole I just added the word 'SCHEMA' before the schema name. Hope this will get it to work for you.
go to post Tani Frankel · Oct 27, 2021 Hi Craig, I'm not 100% sure this is the problem you are seeing (you might be aware of this already) - but worth a try - When you define an OO package name (and sub-packages) for your classes, these "project" to SQL Schema names a little differently, so instead of "dots" (.) in your full package name you would have underscores (_) in your schema name. For example PackageA.PackageB.Class would be PackageA_PackageB.Class - so the schema name would be PackageA_PackageB (and not PackageA.PackageB). See here for example about this in the Documentation.
go to post Tani Frankel · Oct 21, 2021 Hi Craig, Perhaps this could help - From: https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_grant You can use SCHEMA schema-name as the object-list value to grant the object-privilege to all of the tables, views, and stored procedures in the named schema, in the current namespace. For example, GRANT SELECT ON SCHEMA Sample TO Deborah grants this user SELECT privilege for all objects in the Sample schema. This includes all objects that will be defined in this schema in the future. You can specify multiple schemas as a comma-separated list; for example, GRANT SELECT ON SCHEMA Sample,Cinema TO Deborah grants SELECT privilege for all objects in both the Sample and the Cinema schemas.
go to post Tani Frankel · Sep 2, 2021 I'm not sure if I fully understand your question Eduard, but the token itself, internally, is built by the original request's Message Header ID (and the Production name; concatenated with a pipe - |) E.g., from the code (in Ens.Host): Method GetDeferredResponseToken(pMessageHeader As Ens.MessageHeader) As %String { Quit pMessageHeader.%Id()_"|"_$$$EnsRuntime("Name") } ClassMethod SendDeferredResponse(pDeferredResponseToken As %String, pResponse As %Library.Persistent) As %Status { Set tSC=$$$OK Try { Set tMessageHeaderId=$p(pDeferredResponseToken,"|",1) Set tProductionName=$p(pDeferredResponseToken,"|",2) Note this is of course internal implementation, and I don't think it is documented or supported (i.e. might change in future versions without notice).
go to post Tani Frankel · Sep 2, 2021 Thanks for filling in the picture Michael.So this seems to fit into the theory I had about the error indicating your SOAP client is not receiving the response it expected. You can see the server (the SOAP service) you are turning to is running into an internal error (HTTP status 500) and you also have details about the error they ran into "javax.... " and their relevant stack. I suggest, if it is possible, that you turn to the entity that is behind this service and report to them the error you are getting (makes sense also to share with them what you see in the log that you are sending to them). And they might be able to help you.
go to post Tani Frankel · Sep 1, 2021 Hi Michael, It's a little difficult to tell just from the description you provided what the problem exactly is, but my guesstimate would be that it actually is not related to the encoding (UTF8 vs ISO-8859-1) of what you are sending, but something to do with the response you are getting back. As the error you quoted mentions - "... returned response with unexpected...". And specifically the error is complaining about the content-type being text/html where it should probably be expected to be (in the case of SOAP) xml. So it looks like you provided an extract from the SOAP log - but of what was sent (Output) but not what was received back. Maybe share that part and we'd be able to help a little more.
go to post Tani Frankel · Aug 8, 2021 You can use (inside %SYS) Config.Namespaces:Get(). For example - %SYS > set status = ##class(Config.Namespaces).Get("USER",.properties) %SYS > zwrite properties properties("Globals")="USER" properties("Library")="CACHELIB" properties("Routines")="USER" properties("SysGlobals")="CACHESYS" properties("SysRoutines")="CACHESYS" properties("TempGlobals")="CACHETEMP" %SYS > set dataDatabaseName = properties("Globals") %SYS > write dataDatabaseName USER %SYS > set codeDatabaseName = properties("Routines") %SYS > write codeDatabaseName USER Of course assuming you are coming from other namespace into %SYS, you can have the name of that namespace in a variable, and use that variable instead of "USER" in my example above. If you want the actual directory/folder of the database you can also then use Config.Databases:Get(), for example: %SYS > set status = ##class(Config.Databases).Get("USER",.properties) %SYS > zwrite properties properties("ClusterMountMode")=0 properties("Directory")="C:\InterSystems\IRIS\mgr\user\" properties("MountAtStartup")=0 properties("MountRequired")=0 properties("Server")="" properties("StreamLocation")="" And if you want directly just the locations of the databases, and not their names, you could use %SYS.Namespace:GetAllNSInfo() (without having to move into %SYS first) as @Julius Kavay mentioned. For example: USER > do ##class(%SYS.Namespace).GetAllNSInfo("USER",.info) USER > zwrite info info("GlobalDB","Directory")="c:\intersystems\IRIS\mgr\user\" info("GlobalDB","Mounted")=1 info("GlobalDB","ReadOnly")=0 info("GlobalDB","Resource")="%DB_USER" info("GlobalDB","Status")=1 info("GlobalDB","System")="" info("RoutineDB","Directory")="c:\intersystems\IRIS\mgr\user\" info("RoutineDB","Mounted")=1 info("RoutineDB","ReadOnly")=0 info("RoutineDB","Resource")="%DB_USER" info("RoutineDB","Status")=1 info("RoutineDB","System")=""
go to post Tani Frankel · Jul 29, 2021 In line with what @Yaron Munz was saying - when you purge your messages as part of your interoperability data, and you choose to include Message Bodies, then your Body class' data (whether your message body class extends from Ens.Request or Ens.Response, or whether it is simply a class extending from %Persistent) will get deleted together with the Message Header. The purge code [in Ens.MessageHeader:Purge()] looks at the MessageBodyClassName and MessageBodyId fields of the MessageHeader record and then calls the %DeleteId() method for that class, for the given Id. That being said, as @Cristiano Silva pointed out if the class you use as your message body includes references to other persistent classes, these will not get deleted/purged with the referencing object, unless you have an %OnDelete callback method/Trigger taking care of this. You can see these related posts I shared in the past - Ensemble Interfaces Disk-space Usage Estimation and Purge Verification Framework Delete Helper - A Class to Help with Deleting Referenced Persistent Classes
go to post Tani Frankel · Jul 15, 2021 Ran, Thanks to @Tom Woodfin for finding this - there is a documented limitation for using || within properties that are part of an IDKEY, see from here: IMPORTANT: There must not be a sequential pair of vertical bars (||) within the values of any property used by an IDKEY index, unless that property is a valid reference to an instance of a persistent class. This restriction is imposed by the way in which the InterSystems SQL mechanism works. The use of || in IDKey properties can result in unpredictable behavior. And also after some internal discussion - there is no way around this limitation.
go to post Tani Frankel · Jul 15, 2021 By the way though this question was posed specifically for SQL Storage class (i.e. mapping a class to an existing global), this issue (while using '||' within the value of a multi-keyed key-property) would happen also with standard class storage.
go to post Tani Frankel · Jul 5, 2021 This might be the simple case that when you paste with Ctrl-V into Terminal you get an unseen character (it's there you just don't see it)? Worth trying... (try pasting with your mouse right-click or Shift+Insert) it could explain this "strange" behavior you are describing. If this is the issue check out this article by @Eduard Lebedyuk