热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group

五、规则文件及规则流

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:

113006_1307167542JRzE.png

注意:

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

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

0_1295346199u8GM.gif



推荐阅读
  • JDK 1.8引入了多项并发新特性,显著提升了编程效率。本文重点探讨了LongAdder和StampedLock的特性和应用场景。此外,还介绍了在多线程环境中发生死锁时,如何通过jps命令进行诊断和排查,提供了详细的步骤和示例。这些改进不仅增强了系统的性能,还简化了开发者的调试工作。 ... [详细]
  • 本文介绍了如何利用Apache POI库高效读取Excel文件中的数据。通过实际测试,除了分数被转换为小数存储外,其他数据均能正确读取。若在使用过程中发现任何问题,请及时留言反馈,以便我们进行更新和改进。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 2021年7月22日上午9点至中午12点,我专注于Java的学习,重点补充了之前在视频中遗漏的多线程知识。首先,我了解了进程的概念,即程序在内存中运行时形成的一个独立执行单元。其次,学习了线程作为进程的组成部分,是进程中可并发执行的最小单位,负责处理具体的任务。此外,我还深入研究了Runnable接口的使用方法及其在多线程编程中的重要作用。 ... [详细]
  • 在Python中,通过实现一个便捷的函数来解码Base64编码的数据,并将其转换为数组形式。该函数能够将Base64字符串解码为字节数组,便于进一步处理。例如,可以使用如下代码片段进行解码:`base64_decode_array('6gAAAOsAAAD')`。这为处理二进制数据提供了高效且简洁的方法。 ... [详细]
  • 【并发编程】全面解析 Java 内存模型,一篇文章带你彻底掌握
    本文深入解析了 Java 内存模型(JMM),从基础概念到高级特性进行全面讲解,帮助读者彻底掌握 JMM 的核心原理和应用技巧。通过详细分析内存可见性、原子性和有序性等问题,结合实际代码示例,使开发者能够更好地理解和优化多线程并发程序。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • 全面解析Java虚拟机:内存模型深度剖析 ... [详细]
  • MongoDB Aggregates.group() 方法详解与编程实例 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 技术分享:深入解析GestureDetector手势识别机制
    技术分享:深入解析GestureDetector手势识别机制 ... [详细]
  • 通过采用用户数据报协议(UDP),本研究设计并实现了一种高效的文件传输方法。在发送端,系统利用Java编程语言中的相关类库,如`File`和`FileInputStream`,实现了文件的读取与分段处理,确保了数据的快速传输。该方法不仅提高了传输效率,还降低了网络拥塞的风险,适用于大规模文件传输场景。 ... [详细]
  • 开发笔记:深入解析Android自定义控件——Button的72种变形技巧
    开发笔记:深入解析Android自定义控件——Button的72种变形技巧 ... [详细]
  • LeetCode 第 53 题:最大子数组和(C++ 动态规划与 Java 分治法解析,推荐二次练习)
    本文详细解析了 LeetCode 第 53 题——最大子数组和问题,分别采用了 C++ 的动态规划方法和 Java 的分治法进行求解。题目要求在给定的整数数组中找到一个连续子数组,使其和最大,并返回该最大和。文章不仅提供了详细的算法思路和代码实现,还推荐读者进行二次练习以加深理解。 ... [详细]
  • 在多堆石子游戏中,通过分析Nim博弈策略,探讨了如何在限定时间和内存条件下实现最优解。本文详细研究了石子游戏中的数学原理和算法优化方法,旨在为参与者提供有效的策略指导。具体而言,文章讨论了不同堆数下的Nim值计算及其应用,帮助玩家在复杂的博弈环境中取得优势。 ... [详细]
author-avatar
杯中水1129_909
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有