Создайте файл drl слюни, используя java - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь создать файл drl слюни, используя java программно, следуя методу .

Я могу создать следующие простые правила с помощью простого правила с помощью программы java .

rule "Demo_testing"
when
    $employee : EmployeeModel( department contains "Accounts" )
then
//

И это в одном работает нормально для меня, но мне нужно получить информацию о сотруднике из списка. Например, $ employee: EmployeeModel (отдел содержит "Accounts", role = "manager") из $ employeeList

Я нашел список дескрипторов, доступный в компиляторе drools здесь Но я не знаю, какой дескриптор мне нужно использовать и как его определять .?

Пожалуйста, помогите мне восстановить этот дескриптор. Заранее спасибо.

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);

1 Ответ

0 голосов
/ 18 июля 2020

Привет, спасибо за ваши предложения, наконец, я сделал, используя FromDescr .

В соответствии с моими требованиями я могу создать файл правил DRL, используя приведенный ниже код java.

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");
...