Drools is a Rete-based rules engine written in Java, but able to run on Java and .Net. it is designed to allow pluggeable language implementations. Currently, rules can be written in Java, Python, and Groovy. It also enables domain-specific languages via XML using a schema defined for your problem domain. DSLs consist of XML elements and attributes that represent the problem domain.