Since it's a vmware issue, not an InterSystems issue, I think you should ask vmware (now Broadcom).
- Log in to post comments
Since it's a vmware issue, not an InterSystems issue, I think you should ask vmware (now Broadcom).
What's the status returned by the Send() method of %Net.SMTP class?
I believe it should contain some info.
Another option in one line:
do ##class(%SYS.Namespace).ListFunc().%Display()
What operating system? What InterSystem product? What Version?
Your Business Operation (is supposed to) use the EnsLib.EMail.OutboundAdapter, but the in the code you use the %Net.SMTP class directly, ignoring the adapter.
In the Interoperability portal your implementation provide the email adapter configuration (server, certificate, credentials etc. etc.) that in fact are then ignored in the code. This makes it very confusing for anyone using the portal, now...and in the future!
So the first question is, do you want to use the EnsLib.EMail.OutboundAdapter or not?
If you want to use the adapter, if you have not already done it, I suggest to start with the documentation:
Using the Email Outbound Adapter and Settings for the Email Outbound Adapter
If you don't what to use the EnsLib.EMail.OutboundAdapter, then remove the reference from your code.
Using %Net.SMTP class directly (right?), you said that "...I get the error that the property UseSTARTTLS is not available." and this is very strange, can you confirm you are using IRIS version 2021.1?
Is your code the same as in your first post or has changed? If changed, can you post the modified code that fail?
Last but not least, are you sure your outlook.com account allow user/password authentication? Or you must use OAuth2 authentication??
Evidently "The first 4KB of the stream cannot be compressed by at least 20 percent."
Demonstration:
USER>set data="" for i=1:1:400 set data=data_"a"_i
USER>set compressed=##class(%SYSTEM.Util).Compress(data,"lz4")
USER>write $length(data)," - ",$length(compressed),!
1492 - 1481
P.S.: IRIS use lz4 compression for streams
From Stream Compression documentation:
.....new stream data is automatically compressed, except for the following cases, where the data is not suitable for compression:
- The stream can be stored in a single chunk less than 1024 characters long.
- The stream is already compressed, that is, the first chunk of data matches a typical compressed file format, such as JPEG, MP3, or ZIP.
- The first 4KB of the stream cannot be compressed by at least 20 percent.
I guess your test runs into these cases.
Rules are subclasses of Ens.Rule.Definition class, to list rules you can use the class query SubclassOf in the %Dictionary.ClassDefinition class.
From ObjectScript:
Set rs=##class(%Dictionary.ClassDefinition).SubclassOfFunc("Ens.Rule.Definition")
Do rs.%Display()
From SQL:
Call %Dictionary.ClassDefinition_SubclassOf('Ens.Rule.Definition')
You can Export from DEV using:
Set status=##class(EnsLib.DICOM.Util.AssociationContext).ExportXML()
And import in PROD with:
Set status=##class(EnsLib.DICOM.Util.AssociationContext).ImportXML()
You did not specify the IRIS version, so I assume you are using the latest version.
You can export the source of a class to a file:
Do $system.OBJ.ExportUDL("My.Class.Name.cls","/full/path/My.Class.Name.cls")
What's your use case? Are you using Ens.BusinessProcess or Ens.BusinessProcessBPL?
To call a class method the syntax is:
##class(ClassName).MethodName(params)
I don't think there is a ready to use SQL query/procedure but you can call the class query "TypeCategories" in the class "EnsLib.HL7.Schema" from ObjectScript:
set ResultSet=##class(EnsLib.HL7.Schema).TypeCategoriesFunc()
do ResultSet.%Display()In the documentation page there is a "Feedback" button/link on the right, I encourage you to provide your comments as Feedback, possibly linking this post in the Community.
You can call:
Set status = $System.OBJ.Export(SchemaName_".HL7",Filename)
You can call:
Set status = $system.OBJ.Export(Tablename_".LUT", Filename)
Hi Timo, your sample is not a valid/full check for "valid number":
USER>set number="123.40"
USER>write (+number=number)
0
USER>write $isvalidnum(number)
1
True, but the problem definition is:
If both fields are numeric and the result of subtraction of field1-field2 is positive.
My understanding/interpretation is that the subtraction and further test should be performed only "If both fields are numeric", so the code should check that condition.
If the first part of the problem (If both fields are numeric) is irrelevant....then the question/problem definition is misleading.
I think you can do that in IIS using URL Rewrite Module
Use XML format and you get 6x faster load than using UDL.
My guess the difference is due to the parsing needed by UDL import.
My estimate in your case you can get as low as 42 seconds, I'm curious to see the actual numbers.
I really don't think that an addon package is the solution.
I access, more or less regularly, around 20 IRIS different systems used by various customers and a number of local instances in my machines and VMs.
Do you really think that installing an add on package in all this systems is a "solution"?
Can you please provide some details on what you are actually doing in your DTL?
To check if MyVal is a valid positive number I'd use $ISVALIDNUM(MyVal,,0)
Have you tried to leave the ResponseClass setting empty?
This works only if you assume that the stream size is less than the maximum string length.
I miss how you are going to compare the two base64 json properties.
If you assume that the stream AND the base64 converted stream sizes are less than maximum string length, then I miss the point of converting to base64.
From the other old post:
Characters with accents are encoded with two characters in Unicode while it's only one character in Latin1.
Unicode IRIS:
USER>w $zv
IRIS for Windows (x86-64) 2024.2 (Build 247U) Tue Jul 16 2024 09:52:30 EDT
USER>w $l("è")
1
USER>w $a("è")
232
USER>
232 is 0xE8, it correspond to è in both latin1 and Unicode.
Do not confuse Unicode with utf-8.
The reason why it happen is explained in the Indirection (@) documentation:
Important:
All variables referenced in the substitution value are public variables, even when used in a procedure.
So, I'd write your method something like:
ClassMethod test() [ PublicList = arg ]
{
new arg
s arg = "asd"
s routine = "say^hello(arg)"
do @routine
}
In these situations what I use is:
If ##class(Ens.Job).ShouldBeQuiescent() || ##class(Ens.Job).ShouldTerminate() {
; close shop!
Quit
}
True, only if you don't need/want a response from the called BO.