一、问题描述
假设雇员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类型。
Java Drools5.1 规则流基础【示例】(上)
未经允许不得转载:搜云库技术团队 » Java Drools5.1 规则流基础【示例】(上)
相关推荐
- 函数工厂Curry的威力
- “完全”函数式编程
- 如何从业务代码中抽离出可复用的微组件
- 将通用性的技术逻辑与差异性的业务逻辑相分离
- Groovy元编程应用之自动生成订单搜索接口测试用例集
- 使用SpringAOP获取一次请求流经方法的调用次数和调用耗时
- Python使用闭包结合配置自动生成函数
- Java8函数式编程探秘
- 使用yaml+groovy实现Java代码可配置化
- Java函数接口实现函数组合及装饰器模式
- 精练代码:一次Java函数式编程的重构之旅
- 使用函数式编程消除重复无聊的foreach代码(Scala示例)
- 使用函数接口和枚举实现配置式编程(Java与Scala实现)
- JavaSPI机制学习笔记
- Servlet概念框架
- 思考技术(二) —— 技术背后的思想