Java Drools5.1 规则流基础【示例】(上)
一、问题描述
假设雇员Employ有:
学历信息 eduInfo, 简历信息 resume,
考核信息 annualExam 和奖惩信息 awardPunish;
要确定其:
基本工资 basicSalary, 职务工资 dutySalary,
分红金额 bonus 和 总工资 totalSalary.
规则如下:
【1】学历决定基本工资(basicSalary):
====>本科1500研究生2500
【2】简历决定职务工资(dutySalary) :
====>技术2000管理4500
【3】年度考核决定分红(bonus):
====>分红总金额1000
==>考核结果:
==>优秀100%(1000);良好90%(900);
合格60%(600); 不合格0%(0);
【4】奖惩决定计算最终工资与【123】项工资之和的比例:
====>奖励:*110%(+10%)
====>惩罚:*90%(-10%)
====>无:*100%(0%)
【5】计算总工资: (【1】+【2】+【3】)*【4】
二、问题分析
1.基本流程:
P【计算基本工资,计算职务工资,计算分红, 计算奖惩比例】
====>计算总工资(根据奖惩情况)
其中,P[i,...,k]表示任务i,...,k并发执行,====>表示顺序执行。
即有:P[1,2,3, 4] ===> 5
三、概要设计
【1】类Employ的设计:
【2】规则文件的编写和组织:
==>学历规则文件:EduInfoRule.drl
==>简历规则文件:ResumeRule.drl
==>分红规则文件:BonusRule.drl
==>奖惩规则文件:AwardPunish.drl
==>计算总工资规则:TotalRule.drl
【3】规则文件的组合(规则流):
==>EduInfo.drl含规则组basic_salary
==>ResumeRule.drl含规则组duty_salary
==>BonusRule.drl含规则组bonus_salary
==>AwardPunish.drl含规则组award_punish
==>TotalRule.drl含规则组sum_salary
组合方式:
[start]---> P[basic_sal ary , duty_salary, bonus_salary, award_punish]
--->sum_salary ---> [end]
其中:P表示并发,--->表示顺序 【规则流图在后面的实现中给出】
【4】编写测试文件:EmployTest.java
四、详细设计
【1】使用EclipseIDE作为开发环境,drools5.1作为规则引擎
【2】为简单起见,Employ类的属性作了简化处理,
eduInfo, resume , annualExam, awardPunish均为String,
basic{duty,bonus,total}_salary , percent作为double类型。