Hey
all,
I'm
trying to make my rule more efficient but I'm not sure how. I've designed
my rules based around xml objects. Basically, I have these documents and
XPath queries are executed against the Object to determine if the rule should be
executed. The problems is, is that we have over 900 rules that need to be
executed. The performance isn't really that bad but I would like to Make
it even better.
To do
the job, I have written an XmlUtils class to execute the expression.
The class first gets the XPathFactory. Then compiles the expression and
then executes the expression. This happens for every expression, and will
happen each time the same expression is executed. I want to make the rules
more efficient by getting the XPathFactory once and compiling the
expression once and then execute the expression n time on the same compiled
object.
I
would like to know if there is a way I can have the rule object that is
generated by the package build do the compile of the XPath Expression and then
use it instead of compiling it every time.
Here
is a sample of one of my rule criteria.
asset:
AssetDocument()
eval( XmlUtils.evaluatePathBoolean( asset,
"boolean(//ass:asset/ass:properties/ass:property[@name =
'Desk']/ass:value/text() = 'column')")
)