  Programming languages and techniques based on logic and constraints, such as
the Constraint Handling Rules (CHR), can support many common programming tasks
that can be expressed in the form of a search for feasible or optimal
solutions. Developing new constraint solvers using CHR is especially
interesting in configuration management for large scale, distributed and
dynamic cloud applications, where dynamic configuration and component selection
is an integral part of the programming environment. Writing CHR-style
constraint solvers in a domain-specific language which is a subset of Java --
instead of using a separate language layer -- solves many integration,
development cycle disruption, testing and debugging problems that discourage or
make difficult the adoption of the CHR-based approach in the mainstream
programming environments. Besides, the prototype implementation exposes a
well-defined API that supports transactional store behavior, safe termination,
and debugging via event notifications.
