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类型。
作者:@琴水玉
转载请注明出处:https://www.cnblogs.com/lovesqcc/archive/2011/01/18/4037863.html
微信扫一扫下面的二维码,关注我的公众号 编程大观园 :)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了