[ 275 ]
Implementing a Rules DSL
In this chapter, we will look at how we can use Groovy to build a DSL that is capable
of implementing business rules for an application. The example we will use is a
system for implementing rewards bonuses of various kinds as part of a promotions
system for an online broadband media provider.
Our provider hosts a service that allows users to view videos and play games online.
The provider needs to be able to deploy offers to his users rapidly and with the
minimum amount of development time. We will come up with a Groovy-based
DSL that expresses rewards in such a way that they can be rapidly developed and
deployed in a language that can also be understood by business stakeholders.
This DSL relies on a new concept that we have not covered yet, which is the use of
Groovy binding. To begin with, we will look at Groovy bindings—how they work
and how we can make use of them to improve our DSLs. We will cover a number of
useful techniques that make use of binding.
- Using the binding in combination with closures to introduce built-in methods
into a DSL - Adding closures to the binding to implement structured named blocks in
a DSL - How Boolean and other values added to the binding can be used to build
contextual data for a DSL - How to return values and results from a DSL script
We will use all of these techniques in concert, and build a sample DSL step by step.