Offtopic but generic JDBC provider for SQLAlchemy has been discussed for years in Python community but nothing has been done.
- Log in to post comments
Offtopic but generic JDBC provider for SQLAlchemy has been discussed for years in Python community but nothing has been done.
Both suggested approaches offer a tight in-process way of InterSystems IRIS - Python integration.
I will show some live examples of bidirectional InterSystems IRIS - Python integration in Best Practices for in-platform AI/ML Webinar.
Use class queries. They are colored.
You can use PythonGateway or IRIS Native for Python to do that.
PythonGateway can retrieve dataframe (any object really) as a JSON.
Here's a corresponding discussion on the SQL side of things.
Use Dynamic Gateway for Java. Does not require classes generation at all.
Well, %Collection classes are the implementation of these constructs:
You can call their methods but do not explicitly create objects of these classes.
%Collection classes are internal and not to be used.
You can request new features/enhancements in WRC tickets.
There is actually. %GetSerial method builds a $lb from %ListOfDataTypes and %SetSerial does the reverse.
Both of these methods are private though. You can subclass %ListOfDataTypes and publish them.
I advice solving your problem by tightening security.
Your app user should have access only to the tables needed for the application to run.
If the user doesn't have any additional/admin roles, he won't see any other tables.
I think fairly straightforward approach works best
set l = ##class(%ListOfDataTypes).%New()
do l.Insert(1)
do l.Insert(2)
do l.Insert(4)
set lb = ""
for i=1:1:l.Count() { set lb = lb _ $lb(l.GetAt(i)) }
zw lb
>lb=$lb(1,2,4)Consider using REST. Creating REST in InterSystems Cache 2017.2 is very easy.
@Alexey Maslov, @Alexander KoblovRHEL8 is supported starting with InterSystems IRIS 2020.1.
String limit is 3 641 144 so 40 000 symbols is quite okay for a string.
How do you import an HL7 Schema from ObjectScript?
You can call any method with Invoke.
I'm not aware of anything HL7 specific in %Installer, but maybe HealthShare has something.
11:00 EDT.
I suppose I can have one Id column and several col1, col2 ..., colN columns, so losing the names.
Interesting! Tank you!
I can also use PPG for runtime storage.
Thank you for the info, Daniel!
Can I implement %GetProperty instead of specifying the list of properties explicitly?
I don't want to compile a new class for each new table-object.
Up. Still searching for Windows/CTerm solution.
Alternatively, %Dictionary package macros can be used:
ClassMethod Values(class = {$classname()}, property) As %Status [ CodeMode = expression]
{
$$$defMemberArrayGet(class,$$$cCLASSproperty,property,$$$cPROPparameter,"VALUELIST")
}Also, you can find object from list without explicitly iterating the whole thing:
set i = %class.Properties.FindObjectId(%class.Name _ "||" _ "Status")instead of:
for i=%class.Properties.Count():-1:0 if i,%class.Properties.GetAt(i).Name="Status" quitInteroperability is one word and not a portmanteau btw.
Please consider upgrading to InterSystems IRIS!
%Net.WebSocket.Client is available and provides WebSocket client.
%Net.WebSocket.Client is available and provides WebSocket client.
Do not specify a timeout or specify a longer timeout.
In your example if the response is taking more than 15 seconds the sync activity will complete

Here's a minimal example for you. BP sends 2 async calls and waits for them in sync activity:

And Visual Trace looks like this:

To test:
How about the topic: Interoperability Adapter for InterSystems IRIS?
July - InterSystems IRIS IntegratedML.
Is only IntegratedML based apps applicable? Or can participants use apps based on a whole stack of technologies available for orchestrating AI/ML solutions on InterSystems IRIS Data Platform, such as PythonGateway, RGateway, JuliaGateway, Spark, Native API for Python and PMML?
Send async calls.
Wait for response from one or both calls.
My preferred approach is using a Query class element.
Here's how it can look like:
Class Sample.Person Extends %Persistent
{
Property Name As %String;
Query ByName(name As %String = "") As %SQLQuery
{
SELECT ID, Name
FROM Sample.Person
WHERE (Name %STARTSWITH :name)
ORDER BY Name
}
ClassMethod Try(name)
{
set rset = ..ByNameFunc(name)
do rset.%Display()
}
}Short and concise.