A classifier trigger point is identical to a simple trigger point except that it only finds rules marked as classifiers. Classifiers are rules that determine what sort of business situation is present. These rules then return a classification string that indicates the result.
Usually these rules are used as part of a situational trigger point, but they also can be triggered on their own. This type of trigger point is used by invoking the triggerClassifier method on an instance of the TriggerPoint class.
The following shows an example of using a classifier trigger point to trigger a rule named determineCustomerLevel (in folder com/acme/customerClassfiers). This rule classifies customers into levels (gold, silver, and bronze) based on their spending history.
... // create an instance of TriggerPoint for triggering the rule and specify that the // ReturnFirstCombiningStrategy is to be used to return only the first result if // multiple rules are found. TriggerPoint tp = new TriggerPoint(); tp.setCombiningStrategy(CombiningStrategy.RETURN_FIRST, TriggerPoint.ALL_RULES); // define parameter list that's passed to the rule Object [ ] plist = new Object[1]; // information about the customer to be checked is stored in this object Customer cust = ...; // define name of rule to be fired String ruleName = "com/acme/customerClassifiers/determineCustomerLevel"; // define result of rule firing Object result = null; // initialize parameter list plist[0] = cust; try { // fire "com/acme/customerClassifiers/determineCustomerLevel" rule passing parameter // list containing the customer to be checked. // Note: in this case the target object is not used and could be null. result = tp.triggerClassifier(this, plist, ruleName); // put result into usable format. A single result is returned since we specified to use // the ReturnFirstCombiningStrategy. By default an array of results would be returned. String customerLevel = (String) result; // make use of result if( customerLevel.equals("Gold") ) { ... } else if ( customerLevel.equals("Silver") ) { ... } else if ( customerLevel.equals("Bronze") ) { ... } else { ... } } catch(BusinessRuleBeansException e ) { // handle exception ... }