Validating Business Rules

Learn how to validate business rules.

Validation

While validating input is not part of the use case logic, validating business rules definitely is. Business rules are the core of the application and should be handled with appropriate care. But when are we dealing with input validation and when with a business rule?

A very pragmatic distinction between the two is that validating a business rule requires access to the current state of the domain model while validating input does not. Input validation can be implemented declaratively, like we did with the @NotNull annotations previously, while a business rule needs more context.

Syntactical vs semantical

We might also say that input validation is a syntactical validation, while a business rule is a semantical validation in the context of a use case.

Let’s take the rule “the source account must not be overdrawn”. By the definition above, this is a business rule since it needs access to the current state of the model to check if the source and target accounts exist.

In contrast, the rule “the transfer amount must be greater than zero” can be validated without access to the model and thus can be implemented as part of the input validation.

Get hands-on with 1400+ tech skills courses.