Let's look at what we've achieved in this chapter. By separating the validation rules from the rest of the application, we've made it easier for others to identify and understand them. Because of the declarative nature of rules, they can be maintained and refactored more easily. We can easily change rules or add new ones without increasing the overall complexity.
A simple extensible reporting model was defined and later used in the customer validation rules. Throughout this chapter a stateless session has been used, which is ideal for this type of decision rules. Remember that it is stateless only because it doesn't hold state between invocations. A special feature of a stateless session is that it can be executed in sequential mode, which has performance benefits for very simple rules. We've learned about the KnowledgeHelper
object, which is present in every rule consequence as a convenient helper class. We've discussed the use of a validation report as a global variable versus being...