Java Drools5.1 规则流基础【示例】(中)


             五、规则文件及规则流

 

              EduInfoRule.drl: 

package myrules;
import sample.Employ;
 
rule"Bachelor"
      ruleflow-group"basic_salary"
when
   emp:Employ(eduInfo =="bachelor");
then
   System.out.println("execrule Bachelor ... ");
   emp.setBasicSalary(1500);
end

rule"Master"
      ruleflow-group"basic_salary"
when
   emp:Employ(eduInfo=="master")
then
   System.out.println("execrule Master ... ");
   emp.setBasicSalary(2500);
end
             

Resume.drl

package myrules
import sample.Employ;

rule"Technician"
       ruleflow-group"duty_salary"
when
   emp:Employ(resume=="tech")
then
   System.out.println("execrule Technician ... ");
  emp.setDutySalary(2000);
end

rule"Manager"
      ruleflow-group"duty_salary"
when
   emp:Employ(awardPunish=="manager")
then
   System.out.println("execrule manager ... ");
   emp.setDutySalary(4500);
end

              

BonusRule.drl               

package myrules
import sample.Employ;

rule"Excellent"
      ruleflow-group"bonus_salary"
when
  emp: Employ(annualExam=="excellent")
then
   System.out.println("execrule Excellent ... ");
  emp.setBonus(1000*1.0);
end

rule"Good"
       ruleflow-group"bonus_salary"
when
  emp: Employ(annualExam=="good")
then
   System.out.println("execrule Good ... ");
  emp.setBonus(1000*0.9);
end

rule"Common"
      ruleflow-group"bonus_salary"
when
  emp: Employ(annualExam=="common")
then
   System.out.println("execrule Common ... ");
  emp.setBonus(1000*0.6);
end

rule"failing"
       ruleflow-group"bonus_salary"
when
  emp: Employ(annualExam=="failing")
then
   System.out.println("execrule failing ... ");
  emp.setBonus(1000*0.0);
end

 AwardPunish.drl      

packagemyrules
importsample.Employ;

rule"Award"
       ruleflow-group"award_punish"
when
   emp:Employ(awardPunish=="award")
then
   System.out.println("execrule Award ... ");
  emp.setPercent(1.10);
end

rule"Punishment"
       ruleflow-group"award_punish"
when
   emp:Employ(awardPunish=="punish")
then
   System.out.println("execrule Punishment ... ");
  emp.setPercent(0.90);
end

rule"None"
      ruleflow-group"award_punish"
when
   emp:Employ(awardPunish=="none")
then
   System.out.println("execrule None ... ");
  emp.setPercent(1.00);
end

 

              TotalRule.drl   

package myrules
import sample.Employ;

rule"Total"
  ruleflow-group"sum_salary"
when
   emp: Employ()
then
   System.out.println("execrule Total ... ");
   double total =emp.getBasicSalary() + emp.getDutySalary() +
                 emp.getBonus();                               
   emp.setTotalSalary(total*emp.getPercent());
end

 

               创建规则流文件simple.rf:

            

      注意:

       [1]Split结点类型为OR,约束选择alwaystrue.表示选择其规则组中所有符合事实的规则进行并发执行;

       [2] Join结点类型为AND,表示当且进当上述规则组均执行完毕后,才执行后面的规则或进程。

 

 


 

 

posted @ 2011-01-18 18:24  琴水玉  阅读(658)  评论(0编辑  收藏  举报