Custom condition Java class

Sometimes standard Conditional Expressions are not enough. Sometimes the logic to implement is too complex to be implemented using an SQL expression. In such cases Maximo allows to implement the condition logic in a custom condition class using Java.

To implement a condition class you must extend psdi.common.condition.CustomCondition and override evaluateCondition and toWhereClause methods. Here is a sample class.

public class IsIssueProblem implements CustomCondition
{
public boolean evaluateCondition(MboRemote mbo, Object obj)
throws MXException, RemoteException
{
if (mbo.getString("ISSUETYPE").equalsIgnoreCase("PROBLEM"))
{
return false;
}
else
{
return false;
}
}

public String toWhereClause(Object obj, MboSetRemote mbs)
throws MXException, RemoteException
{
// ensure this method is not called by throwing an Exception
throw new MXApplicationException("", "");
}
}

The provided snippet works for all Conditional Expression usages except for QUALIFIED security restrictions. In this cases you have to implement the toWhereClause method to return a valid SQL clause.

The Maximo JavaDocs for the two methods better explain how the two methods should be implemented.

evaluateCondition

Evaluate the condition.
For data restrictions having a condition (SecurityRestrict other than object Qualified), the object framework will call this method for each Mbo and set the Mbo and MboValue flags appropriately.

Parameters:

  • mbo – The mbo to be evaluated
  • param – Any object of parameter that is understood by the condition class. For data restrictions, this param is not used. To use it, some of the framework logic must be overridden in the Mbo.

Returns:

  • The result of the evaluation. For data restrictions, True means the restriction will be applied.

toWhereClause

Convert the condition to a where clause. If the condition class will be used for “QUALIFIED” object security type, this method should return a where clause. If the condition should NOT be used for “QUALIFIED”, it should throw an exception to indicate it is an error when attempted to be used. This method has to be thread safe. For qualified object data restrictions (SecurityRestrict) having a condition type of Class, the object framework (MboSet) will call this method to construct the Where clause.

Parameters:

  • param – For data restrictions, this is not used by the object framework. To use param you must override some of the framework logic in your MboSet.
  • msr – The MboSet whose Where clause is being constructed

Returns:

  • The where clause that can be used to query the database

Custom condition Java class

2 thoughts on “Custom condition Java class

  1. Hi Bruno,
    How can I use the toWhereClause in a custom condition launch point script?
    as you know in this script we pass the result to evalresult implicit variable, but I don’t how I pass the where clause to the script?

  2. Hi Bruno,

    I’m also looking to use the toWhereClause ability from within an automation script for a condition but like Mahmoud, cannot see how you invoke it to return the required SQL string. There doesn’t appear to be an implicit variable like evalresult available to use.

    Any ideas?

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top