我正在开发一个Java应用程序,它对语言的基本术语做了一些推理,通常是作为Composites实现的(它们都是内部生成的,不是从文本中解析的)。现在我需要对术语语言应用一组重写规则,这个问题正在变得非常烦人。经过一些研究后,我发现Tom和可能的Stratego / XT可能是为Java添加术语重写能力的替代方案。有没有人对他们有一些经验可以告诉我两者的优点和缺点是什么?有没有人知道任何替代方案?鉴于软件的大小,重写作为POJO数据结构实现的术语的能力是必要的(我接近截止日期,我不想用另一个替换当前术语表示,尽管我将来可能会这样)。
答案 0 :(得分:1)
还存在termware:http://redmine.gradsoft.ua/projects/show/termware
不确定,这正是你想要的,但它可以处理规则中的任何java对象,即
domain(examples, system(Invoicing,default, ruleset( # import general operations. import(general), # handle new invoice and set one to paid if possible. @class("ua.gradsoft.termwaredemos.invoicing.Invoice", $invoice) [ ! $invoice.isPayed() && $invoice.getCustomer().getAccountBalance() - $invoice.getAmount() + $invoice.getCustomer().getCreditLimit() > 0 ] -> true [ $invoice.getCustomer().decrementAccount($invoice.getAmount()) && $invoice.setPayed(true) ], # set credit limit in depend from summary payments. @class("ua.gradsoft.termwaredemos.invoicing.Customer", $customer) [ $customer.getAccountBalance() > 0 && $customer.getSummaryPayments() > 2000 ] -> true [ $customer.setCreditLimit(500) ] ), FirstTop) );
你也可以=看看jess方面。 http://www.jessrules.com/