我搜索了很多站点,但找不到有关.drl文件生成的任何特定相关示例。 .drl文件生成方面的文档也不值得。
解决方案
//- ---- package部分-------
PackageDescr pkg = new PackageDescr();
pkg.setName(" com.demo.model");
// -------此处的导入部分-------
ImportDescr importEntry1 = new ImportDescr();
importEntry1.setTarget(" com.demo.model.Purchase");
pkg.addImport(importEntry1);
ImportDescr importEntry2 =新的ImportDescr();
importEntry2.setTarget(" com.demo.model.PotentialCustomer");
pkg.addImport(importEntry2);
ImportDescr importEntry3 = new ImportDescr();
importEntry3.setTarget(" com.demo.model.PaymentMethod");
pkg.addImport(importEntry3);
// -------这里的全局部分-------
GlobalDescr globalEntry = new GlobalDescr();
globalEntry.setType(" org.slf4j.Logger");
globalEntry.setIdentifier(" logger");
pkg.addGlobal(globalEntry);
// -------此处的规则部分
RuleDescr ruleEntry = new RuleDescr();
ruleEntry.setName("识别潜在客户");
// ------- lhs从这里开始-------
AndDescr lhs = new AndDescr();
// -------模式从此处开始-------
PatternDescr patternEntry1 = new PatternDescr();
patternEntry1.setIdentifier(" $ p");
patternEntry1.setObjectType(" Purchase");
// ------- ExprConstraint从这里开始-------
ExprConstraintDescr ecd1 = new ExprConstraintDescr();
ecd1.setExpression(" paymentMethod");
ExprConstraintDescr ecd2 = new ExprConstraintDescr();
ecd2.setExpression(" PaymentMethod.CASH");
// -------将exprConstraint添加到关系expr -------
RelationalExprDescr red1 = new RelationalExprDescr(" ==",false,null,ecd1,ecd2);
ExprConstraintDescr ecd3 = new ExprConstraintDescr();
ecd3.setExpression(" subTotal");
ExprConstraintDescr ecd4 = new ExprConstraintDescr();
ecd4.setExpression(" 300");
RelationalExprDescr red2 = new RelationalExprDescr(">",false,null,ecd3,ecd4);
patternEntry1.addConstraint(red1);
patternEntry1.addConstraint(red2);
lhs.addDescr(patternEntry1);
NotDescr notDescr = new NotDescr();
notDescr.setText(" not");
PatternDescr pattDescr1 = new PatternDescr();
pattDescr1.setObjectType(" PotentialCustomer");
ExprConstraintDescr ecd11 = new ExprConstraintDescr();
ecd11.setExpression(" customerName");
ExprConstraintDescr ecd12 = new ExprConstraintDescr();
ecd12.setExpression(" $ p.getCustomerName()");
RelationalExprDescr red11 = new RelationalExprDescr(" ==",false,null,ecd11,ecd12);
pattDescr1.addConstraint(red11);
notDescr.addDescr(pattDescr1);
lhs.addDescr(notDescr);
ruleEntry.setLhs(lhs);
pkg.addRule(ruleEntry);
字符串drl = new DrlDumper()。dump(pkg);
//这里的drl是字符串