changing functional spec is not allowed ;)
- Log in to post comments
changing functional spec is not allowed ;)
most of the solutions don't cater for the ")(" case being not valid
here is mine size 92
ClassMethod IsValid(sAs%String) As%Boolean
{
sr=1 f {s c=$e(s,$i(i)) q:c="" d:c="("$i(r) d:c=")"$i(r,-1) q:r<1} ret $s(r=1:1,1:0)
}your 2nd solution shows )((()) as valid which is not true
Hi,
question is here how is that global being populated/created? Is this global defined by usage of a class inheriting from %Persistent?
If so, a fast way would be to be using %Extent to enumerate all instances and then look at the rowcount.
e.g.
set query = ##class(%SQL.Statement).%New()
set qStatus = query.%PrepareClassQuery("User.Person","Extent")
set rset=query.%Execute()
d rset.%Display()
zw%ROWCOUNTHi,
the issue is with your 2nd method return values. You have defined the method to return %String which is fine.
But then at the end you quit $$$OK, which translates to a return value of 1.
You need to build your return string e.g.
set retVal="some string:"_variableExample
return retVal
Hi Jennifer,
first things yes mirroring is supported in AWS and Azure. What is not working is the automatic VIP failover managed by IRIS. This is due to limitations imposed by the cloud providers, as you cannot dynamically add an IP address.
For this usually a loadbalancer is utelized, that queries a specific csp page on the mirror servers to decide which mirror is active and redirect the "VIP" accordingly.
Also depending on what access (application,xDBC) you need, you can deploy a load balanced array of web servers. These can host the webgateway, which in turn can be configured to be mirror aware and does no tneed a VIP to automatically failover.
Best Regards
Timo
Hi,
SSL error 54 points to an issue with an untrusted certificate in chain.
Hi,
using zf will always be difficult as IRIS is not running a root. You will need to configure the OS to allow privilege escalation for the irisusr, which open quite a big door.
Or allow irisusr to start/stop httpd, which might be the safer way.
The other options is, if this is only about the application via webgateway contacting the correct primary.
1. set web gateways to be mirror aware
2. configure a VIP address in the mirror and point the cspgateways to this ip address.
Hi Chen,
i would suggest for you to open a WRC ticket.
Best Regards
Timo
Hi Scott,
IRIS requires at least one enabled user with the role %All (e.g. superuser)
If you got one enabled there is no dependency on the installer user to be enabled. Actually, its good practise to disable that user.
Best Regards
Timo
just to mention this is not totally correct. Ensemble/IRIS does not need to be stopped to take a backup of dat files. There is an api that can be used to freeze and thaw disk activity during a backup. This is intended to be used with snapshot type backups though as the freeze duration is limited by memory available and DB activity.
refer to: Backup - external freeze
Hi Rochdi,
this might be the local firewall on the server blocking it. Also ensure th eport you are trying to use is not in use by something else.
Best regards
Timo
How, did this instance get installed?
During IRIS install you get asked if you want to add ML components or not as this increases the disc size required.
Best Regards
Timo
No t100% sure what you are after but if you just want to generalize the if then something like this will do:
set key1=1set key2=2if ($piece($get(^global(@key1,@key2)),"*",2)=c) { quit }Hi,
This sounds like a misconfiguration on the webgateway.
PWG get configured automatically by IRIS for all web applications. Not sure if this happens for the external webgateway.
There also could be an issue with webgateway integration into external apache.
Also worth to check audit database in IRIS. To see if any errors get logged.
Hope this helps.
Best Regards
Timo
Having an instance frozen for 8minutes is not so good in my experience.
Have you considered to move to snapshot based external backups? Using ShadowCopies on windows and LVM snaps on Linux? This will reduce the freeze time to the time used to actually take the snapshot. Then CommVault can backup the snapshot drive while IRIS continues on unfrozen.
hmm i just did a bit of searching and found this Volume Snapshots | Kubernetes
As i have never worked with kubernetes i don't know if this can be leveraged to get a "Backup" volume.
Your approach is actually correct. Just in class Bna.Init.Main extend Bna.Utils.Sql.
Then call the get method using set status=..SelectFirstColsInArray(query, .userIds)
That should work.
Roberts approach is correct for mapping the class into another namespace. You have to use package mapping to map the class AND Global mapping to map the storage location.
ClassMethod MultiTap(t) As%String
{
f{s f=$f(" _ADGJMPTW,__BEHKNQUX,__CFILORVY,_______S_Z",$e($$$UPPER(t),$i(i)))-1q:f=0s$p(e,f#11-1,*+(f\11+1))=""} q e
}Size 123
Hi, there was a breaking change after upgrading some IRIS version in regards to credential stored in IRIS for ldap connections.
Can the user logon to SMP using LDAP successfully? If not, then it might be worth a try deleting the user account for the user marked as LDAP. in IRIS, It will get recreated on next successful login.
Hi Abdulaziz,
In TrakCare you can attach any type of file to a patient record. But that does not transcribe an audio file into a text. (I think that is what you are after in case of dictation.)
TrakCare fully relies as far as i know on 3rd party software atm to provide dictation features.
Best Regards
Timo
If you mean something like this?
.png)
This is essentially only displaying a "good" functional spec definition plus /// supplied documentation.
Hi Anna,
this would iterate through a file line by line checking if the line contains a keyword and then outputting the line. also it will continue outputting until another condition resets the found variable to 0.
Set stream=##class(%FileCharacterStream).%New()
Set stream.Filename="c:\myfile.txt"set keyword="MyTestWord"set found=0While 'stream.AtEnd {
Set line=stream.ReadLine()
if (line [ keyword) {
// the line contains the keyword out put linew !,line
set found=1continue
}
if (found=1) {
// keyword was previously found so continue outputting linew !,line
}
}Just wondering my initial thought was that just use the master process to initiate the transaction check the returned stati and rollback if it has failed.
This can be done with WQM easily enough.
Set queue=$system.WorkMgr.%New()
If (queue="") {
// Report Error, can check %objlasterror for %Status code
}
TSTARTFor i=1:1:100 {
Set sc=queue.Queue("##class(MyClass).ClassMethod",i)
If$$$ISERR(sc) {
// report error
}
}
Set sc=queue.Sync()
If$$$ISERR(sc) {
// A worker encounteres an issueTROLLBACK
} and {
// no errros reported by workersTCOMMIT
}
That should work just fine, i haven't tested it though.
size 258 249
all unit tests passed
ClassMethod Type(a...) As%String
{
s (f,r)=0,c=2 i $g(a){f i=1:1:a{s$p(b,",",*+1)=$zstrip(a(i),"*"," ")} f{q:(c=$l(b,",")) s p=$l($p(b,",",$i(c)-1))-$l($p(b,",",c)),f=$s(p>0:-1,p<0:1,1:0) i f,r,r'=f{ret "Unsorted"} s:f r=f}} ret $s(r<0:"Decreasing",r>0:"Increasing",1:"Constant")
}
Most annoying "feature" when i started to learn objectscript was the very strict left to right processing
e.g. if a>0 & b< 0 {} get evaluated as (((a>0) & b) <0) not as you would expect (a>0) & ( b<0)
also very strange variable casting from number to string.
e.g
set a=1
set b="7 dwarves"
w a+b
actually return 8 instead of e.g. concatted string "17 dwarves" or a variable casting error as in other languages
But meanwhile i love it :D
another option is to use a list
setx=$listfromstring("1,4,6,8,9,12")
SET ptr=0WHILE$LISTNEXT(x,ptr,y) {
WRITE !,y
}if you are using a dedicated web static folder in a separate web application definition. Make sure the ../csp folder content is being also updated with content from the new Ensemble version. (usually in [installdir]/csp/)
also ensure browser has cache cleared etc.
Hope i understood your problem correctly.
This sort of sounds like a "DataMigration" task, loading legacy information into the current IRIS database.
If you know an exact date where the value was available in the current messages, a onetime load based on an extract for legacy messages would be enough i think.
Then amend the messaging code to add the field if its not there, based on the lookup table, this should only happen for legacy messages, not new messages as they would already have the field.