Hammurabi是一个Scala编写的规则引擎,适合实现便于阅读的内部DSL。与其他DSL不同的是,Hammurabi可直接使用宿主语言编写和编译规则。
示例规则:
rule("PersontoFred’simmediaterightiswearingbluepants")let{ valp1=kindOf[Person]having(_.name=="Fred") valp2=any(kindOf[Person]) when{ p2.posequalsp1.pos+1 }then{ assigncolor"blue"top2 }}
评论