使用 java 生成 drools drl 文件
Generate drools drl file by using java
我正在尝试按照 .
以编程方式使用 java 创建 drools drl 文件
我可以通过 java 程序的简单规则创建以下简单规则。
rule "Demo_testing"
when
$employee : EmployeeModel( department contains "Accounts" )
then
//
这对我来说很好用,但我需要从列表中获取员工信息。像
$employee : EmployeeModel( department contains "Accounts", role = "manager" ) 来自 $employeeList
我在 drools 编译器中找到可用的描述符列表 here
但是我不知道我需要使用哪个描述符以及如何定义。?
请任何人帮助我重新爱上这个。提前致谢。
PatternDescr employeePatternDescr=new PatternDescr();
employeePatternDescr.setIdentifier("$employee");
employeePatternDescr.setObjectType("EmployeeModel");
RelationalExprDescr relationalExprDescr = null;
constraintDescr.setExpression("department");
ExprConstraintDescr constraintDescr2=new ExprConstraintDescr();
constraintDescr2.setExpression("Accounts" );
relationalExprDescr = new RelationalExprDescr("contains" ,false, null, constraintDescr, constraintDescr2);
employeePatternDescr.addConstraint(relationalExprDescr);
andDescr.addDescr(employeePatternDescr);
ruleDescr.setLhs(andDescr);
您好,感谢您的建议,我终于使用 FromDescr 完成了。
根据我的要求,我可以使用下面的 java 代码生成 Rule drl 文件。
PatternDescr employeePatternDescr=new PatternDescr();
employeePatternDescr.setIdentifier("$employee");
employeePatternDescr.setObjectType("EmployeeModel");
**FromDescr fromDescr = new FromDescr();
fromDescr.setDataSource( new MVELExprDescr( "$employeeList") );
employeePatternDescr.setSource(fromDescr);**
RelationalExprDescr relationalExprDescr = null;
constraintDescr.setExpression("department");
ExprConstraintDescr constraintDescr2=new ExprConstraintDescr();
constraintDescr2.setExpression("Accounts" );
relationalExprDescr = new RelationalExprDescr("contains" ,false, null,
constraintDescr, constraintDescr2);
employeePatternDescr.addConstraint(relationalExprDescr);
andDescr.addDescr(employeePatternDescr);
ruleDescr.setLhs(andDescr);
此代码生成如下规则
rule "Demo_testing"
when
$employee : EmployeeModel( department contains "Accounts" ) from $employeeList
then
System.out.println("Rule executed");
我正在尝试按照
我可以通过 java 程序的简单规则创建以下简单规则。
rule "Demo_testing"
when
$employee : EmployeeModel( department contains "Accounts" )
then
//
这对我来说很好用,但我需要从列表中获取员工信息。像 $employee : EmployeeModel( department contains "Accounts", role = "manager" ) 来自 $employeeList
我在 drools 编译器中找到可用的描述符列表 here 但是我不知道我需要使用哪个描述符以及如何定义。?
请任何人帮助我重新爱上这个。提前致谢。
PatternDescr employeePatternDescr=new PatternDescr();
employeePatternDescr.setIdentifier("$employee");
employeePatternDescr.setObjectType("EmployeeModel");
RelationalExprDescr relationalExprDescr = null;
constraintDescr.setExpression("department");
ExprConstraintDescr constraintDescr2=new ExprConstraintDescr();
constraintDescr2.setExpression("Accounts" );
relationalExprDescr = new RelationalExprDescr("contains" ,false, null, constraintDescr, constraintDescr2);
employeePatternDescr.addConstraint(relationalExprDescr);
andDescr.addDescr(employeePatternDescr);
ruleDescr.setLhs(andDescr);
您好,感谢您的建议,我终于使用 FromDescr 完成了。
根据我的要求,我可以使用下面的 java 代码生成 Rule drl 文件。
PatternDescr employeePatternDescr=new PatternDescr();
employeePatternDescr.setIdentifier("$employee");
employeePatternDescr.setObjectType("EmployeeModel");
**FromDescr fromDescr = new FromDescr();
fromDescr.setDataSource( new MVELExprDescr( "$employeeList") );
employeePatternDescr.setSource(fromDescr);**
RelationalExprDescr relationalExprDescr = null;
constraintDescr.setExpression("department");
ExprConstraintDescr constraintDescr2=new ExprConstraintDescr();
constraintDescr2.setExpression("Accounts" );
relationalExprDescr = new RelationalExprDescr("contains" ,false, null,
constraintDescr, constraintDescr2);
employeePatternDescr.addConstraint(relationalExprDescr);
andDescr.addDescr(employeePatternDescr);
ruleDescr.setLhs(andDescr);
此代码生成如下规则
rule "Demo_testing"
when
$employee : EmployeeModel( department contains "Accounts" ) from $employeeList
then
System.out.println("Rule executed");