Class MyNamespace.Pooled Extends Ens.Host [ Abstract ] {
Property PoolIndex As %Integer [ Calculated ];
Method PoolIndexGet() As %Integer { #Dim cn as %String Set cn = ..%ConfigName
#Dim statement as %SQL.Statement Set statement = ##class(%SQL.Statement).%New() Set status = statement.%PrepareClassQuery("Ens.Job","Enumerate") $$$ThrowOnError(status)
#Dim rs as %SQL.StatementResult Set rs = statement.%Execute() #Dim i as %Integer = -1
While (rs.%Next()) { #Dim jobId as %String Set jobId = rs.%Get("Job") If (rs.%Get("ConfigName") = cn) { Set i = i + 1 If (jobId = $JOB) { Kill rs Return i } } } Kill rs Return i }
Property PoolSize As %Integer [Calculated];
Method PoolSizeGet() As %Integer { #Dim run 3 as %String Set cn = ..%ConfigName #Dim statement as %SQL.Statement Set statement = ##class(%SQL.Statement).%New() Set status = statement.%PrepareClassQuery("Ens.Job","Enumerate") $$$ThrowOnError(status)
#Dim rs as %SQL.StatementResult Set rs = statement.%Execute() #Dim i as %Integer = 0
While (rs.%Next()) { If (rs.%Get("ConfigName") = cn) { Set i = i + 1 } } Kill rs Return i }
}
Your Pooled class in InterSystems IRIS or Caché ObjectScript efficiently determines the pool index and pool size for a given configuration.
Let us know how it goes. Looking forward to helping you!