I meant a custom utility function, not a custom process.  It would be a class derived from Ens.Rule.FunctionSet.

An Ensemble rule expression must be constructed using + - * / Max Min etc.  That does not include the ability to use a generic ObjectScript expression.

You can add your own custom function, and inside it, you can use any ObjectScript expression that does what you want.  If you define a parameter in a class, you could make it a COSEXPRESSION; this parameter might be used by your custom function to obtain the value at run time and return it to your rule.

An alternative is to set a property in your BPL context object and simply use it in the rule. 

Have you browsed the sample rules provided in ENSDEMO?  There are some interesting examples of what you can do.

Heloisa

Hi.  Without seeing the source code for your production, I would guess that there is an item in your Production for which the associated class does not exist.  When the Production starts, Ens.Director obtains information from for the classes involved, in order to create the jobs and message queues, among other things.

If you can't spot the problematic item from the log, I suggest that you disable all items and begin re-enabling one at a time, and seeing which item is the source for the error.

Hope it helps,

Heloisa

Hello.  Here is a suggestion of what you could do. Please note I did not actually try it, so this still needs extra work, but hopefully will help you move forward.

In your helper class, add code to your OnBankMsg() method to index  messages:

ClassMethod OnBankMsg(pHeader As Ens.Enterprise.MsgBank.MessageHeader, pFullHeaderID As %String, pBody As %RegisteredObject = "", pFullBodyID As %String, pService As Ens.Enterprise.MsgBank.TCPService) As %Status
{
 If (pHeader.ClientBodyClassName="mypackage.mymessageclass") {
  Set pStream = ##class(%Stream.GlobalCharacter).%OpenId(pHeader.MessageBodyId)
  Do ##class(mypackage.mysearchtableclass).IndexDoc(pStream)
}
 Quit $$$OK
}

}
 

Where your search table class mypackage.mysearchtableclass would look like:

Class mypackage.mysearchtableclass Extends Ens.CustomSearchTable
{

Property myproperty As ...

ClassMethod OnIndexDoc(pDocObj As %Persistent, pSearchTable As mypackage.mysearchtableclass) As %Status
{

 // Set the properties
 Set pSearchTable.myproperty = ... // extract the information you want to index
 Quit $$$OK
}

}

This is only a sketch, hope it helps,

Heloisa