规则引擎是一种软件工具,能够在规则库中存储、管理和自动执行规则以快速决策。机场地勤人员排班系统需要根据多种因素进行自动排班。

基于规则引擎实现规则可配置的机场地勤人员排班系统的功能设计如下:

  1. 规则库管理功能:建立、维护、更新规则库,包括规则库的导入、导出、备份、分享等。

  2. 规则制定功能:对规则库中的各项规则进行制定、修改、删除、查询、审核等,包括规则的名称、描述、策略、优先级、参考数据等信息。

  3. 数据输入功能:包括数据源的接口设计、数据采集、数据存储、数据整理、数据计算等,能够自动或手动地输入各类数据,包括人员、工作信息、航班信息、机场设施等。

  4. 规则匹配功能:将输入的数据与规则库中的规则进行匹配,进行规则引擎的计算和处理,产生优化的排班方案。

  5. 排班结果提供功能:提供人员列表、工作时间信息、任务分配等结果信息,同时可生成相关的报表、图表等,便于管理者进行跟踪和监控。

  6. 优化规则功能:对排班结果进行评估和反馈,不断优化规则库,以适应不断变化的环境和需求,保持最大的灵活性和效率。

  7. 系统配置功能:提供系统配置、安装、升级、维护等功能,保证系统稳定性和安全性。

通过以上功能设计,规则可配置的机场地勤人员排班系统能够实现自动化排班,减少排班成本和时间,提高效率和准确性,同时为机场地勤人员和航班安全保障提供了重要保障。

关键属性字段和基础数据如下:

关键属性字段:

  1. 规则名称
  2. 规则描述
  3. 规则类型(例如:任务分配规则、航班调度规则、人员轮班规则等)
  4. 规则的条件和动作(例如:条件是机场人员的数量和工作时间,动作是分配任务)
  5. 规则优先级
  6. 参考数据(例如:机场设施、航班信息、人员信息)

基础数据:

  1. 人员信息:包括地勤人员的姓名、岗位、技能、工作经验等信息。
  2. 航班信息:包括航班号、起降时间、机型等信息。
  3. 机场设施信息:包括机场停车场、航站楼、跑道、机位等设施的信息。
  4. 工作任务信息:包括地勤人员需要完成的各项任务信息。
  5. 工作时间信息:包括地勤人员的工作起止时间、轮休时间等信息。
  6. 规则数据:包括规则库中的各项规则和参考数据。

以下是一个实际的场景,以航班地面服务为例:

关键属性字段:

  1. 规则名称:航班对接任务分配规则
  2. 规则描述:基于航班信息和机场设施情况,将该航班的对接任务分配给相应的地勤人员。
  3. 规则类型:任务分配规则
  4. 规则的条件和动作:当某个航班到达机场时,根据机场停车场、航站楼、机位等信息,以及地勤人员的技能情况,将适合该任务的地勤人员分配到该航班的对接任务中。
  5. 规则优先级:高
  6. 参考数据:机场设施信息、航班信息、人员信息

基础数据:

  1. 人员信息:包括地勤人员的姓名、岗位、技能、工作经验等信息。
  2. 航班信息:包括航班号、起降时间、机型、停靠机位等信息。
  3. 机场设施信息:包括机场停车场、航站楼、跑道、机位等设施的信息。
  4. 工作任务信息:包括地勤人员需要完成的各项任务信息,如驾驶飞机牵引车、协助开舱门等。
  5. 工作时间信息:包括地勤人员的工作起止时间、轮休时间等信息。
  6. 规则数据:包括规则库中的各项规则和参考数据,比如地勤人员与对接任务之间的技能对应表、对接任务的时限和要求等。

        以下是一个可以基于上述设计提供的具体模拟数据:

航班信息:

航班号:CA123 起降时间:2021-10-01 12:00:00 机型:B777 停靠机位:A101

人员信息:

姓名:张三 岗位:地勤一级 技能:驾驶飞机牵引车 工作经验:3年

姓名:李四 岗位:地勤二级 技能:协助开舱门 工作经验:2年

规则信息:

规则名称:航班对接任务分配规则 规则描述:基于航班信息和机场设施情况,将该航班的对接任务分配给相应的地勤人员。 规则类型:任务分配规则 规则的条件和动作:当某个航班到达机场时,根据机场停车场、航站楼、机位等信息,以及地勤人员的技能情况,将适合该任务的地勤人员分配到该航班的对接任务中。 规则优先级:高 参考数据:机场设施信息、航班信息、人员信息

分配结果:

当航班CA123到达机场时,系统将根据机场设施信息,航班信息和人员信息,以及规则库中的分配规则,自动为其分配地勤任务。根据分配规则,张三的技能符合驾驶飞机牵引车的要求,而李四的技能符合协助开舱门的要求。同时,系统还将考虑到地勤人员的工作经验和工作时间,选择合适的人员执行任务。最终的分配结果为:

地勤人员:张三 分配任务:驾驶飞机牵引车

地勤人员:李四 分配任务:协助开舱门

这样就成功地将地勤任务分配给了合适的地勤人员,保证了航班的顺利对接。

基于drool的规则表达式和编码逻辑

规则表达式:


rule "航班对接任务分配规则"
when
$flight: Flight($flightNo: flightNo, $departureTime: departureTime, $aircraftModel: aircraftModel, $parkingPosition: parkingPosition)
// 获取停机位信息
$parkingInfo: ParkingInfo(parkingPosition == $parkingPosition)
// 获取可用的地勤人员列表
$staffs: List<Staff>(size > 0) from accumulate (
$staff: Staff(skill in ("驾驶飞机牵引车", "协助开舱门"), experienceYears > 0, status == "ready", assignedFlightNo == null);
collectList($staff)
)
then
// 按照工作经验和工作时间对地勤人员列表进行排序
$staffs.sort((s1, s2) -> {
int result = s2.getExperienceYears() - s1.getExperienceYears();
if (result != 0) {
return result;
} else {
return s1.getWorkTime().compareTo(s2.getWorkTime());
}
});// 选择最佳的地勤人员执行任务,并更新其任务状态和航班任务信息Staff bestStaff = $staffs.get(0);bestStaff.setStatus("working");bestStaff.setAssignedFlightNo($flightNo);FlightTask task = new FlightTask("对接任务", $flightNo, $departureTime);bestStaff.setAssignedTask(task);// 通知调度员任务分配情况System.out.println("任务分配完成,航班号为:" + $flightNo + ",地勤人员为:" + bestStaff.getName());
end

编码逻辑:

在 Java 代码中,我们可以使用规则的名称、条件、动作、优先级等信息预先定义出一个规则类。例如,上述规则可以定义为如下类:

public class FlightDockingTaskRule {public static final String RULE_NAME = "航班对接任务分配规则";public static final String RULE_DESCRIPTION = "基于航班信息和机场设施情况,将该航班的对接任务分配给相应的地勤人员。";public static final int RULE_PRIORITY = 1;public static final String RULE_CONDITION = "$flight: Flight($flightNo: flightNo, $departureTime: departureTime, $aircraftModel: aircraftModel, $parkingPosition: parkingPosition)\n"+ "$parkingInfo: ParkingInfo(parkingPosition == $parkingPosition)\n"+ "$staffs: List<Staff>(size > 0) from accumulate (\n"+ "    $staff: Staff(skill in (\"驾驶飞机牵引车\", \"协助开舱门\"), experienceYears > 0, status == \"ready\", assignedFlightNo == null);\n"+ "    collectList($staff)\n"+ ")";public static final String RULE_ACTION = "$staffs.sort((s1, s2) -> {\n"+ "    int result = s2.getExperienceYears() - s1.getExperienceYears();\n"+ "    if (result != 0) {\n"+ "        return result;\n"+ "    } else {\n"+ "        return s1.getWorkTime().compareTo(s2.getWorkTime());\n"+ "    }\n"+ "});\n"+ "Staff bestStaff = $staffs.get(0);\n"+ "bestStaff.setStatus(\"working\");\n"+ "bestStaff.setAssignedFlightNo($flightNo);\n"+ "FlightTask task = new FlightTask(\"对接任务\", $flightNo, $departureTime);\n"+ "bestStaff.setAssignedTask(task);\n"+ "System.out.println(\"任务分配完成,航班号为:\" + $flightNo + \",地勤人员为:\" + bestStaff.getName());";public static Rule buildRule() {return new RuleBuilder().name(RULE_NAME).description(RULE_DESCRIPTION).priority(RULE_PRIORITY).when(RULE_CONDITION).then(RULE_ACTION).build();
}

}

然后,在实际业务中,我们可以将此规则放入规则库中,并在需要调用的时候执行相应的规则引擎。例如:

// 创建 KieSession,并将规则库中的规则加载进来
KieSession kieSession = createKieSession();
kieSession.insert(Flight flight); // 将航班信息插入到规则引擎中
kieSession.fireAllRules(); // 执行规则引擎,进行任务分配

基于规则引擎实现规则可配置的机场地勤人员排班系统相关推荐

  1. 智能排班系统、班次、班表、考勤、年假、调休、审批、请假、培训、值班、换班、加班、工时、自动排班、智能预测、人力需求预测、授权、团队、锁定量排、规则权重设置、菜单、角色、数据监控、工作台、axure

    智能排班系统.班次.班表.考勤.年假.调休.审批.请假.培训.值班.换班.加班.工时.自动排班.智能预测.人力需求预测.授权.团队.锁定量排.规则权重设置.菜单.角色.数据监控.工作台.axure原型 ...

  2. 考勤软件之:考勤排班规则

    虽然看完全部内容,都能理解,但还是没有找到我想要的内容. 来源:http://www.cnblogs.com/lcmxiaoya/archive/2011/12/26/2301756.html 班次在 ...

  3. 优酷播控实践:基于规则引擎的投放管控模型

    简介: 我们在很多场景下需要规则引擎将规则运算和业务解耦,但规则引擎不是银弹.如果规则很简单,或者变化频次非常低那么使用 if-else 可能是最行之有效的实现方式,引入规则引擎反而增加维护成本.需要 ...

  4. java排班_使用java规则引擎Drools自动排班前言.doc

    使用java规则引擎Drools自动排班前言 使用java规则引擎Drools自动排班前言本文以一个经简化的运输车队自动排班需求为例,详细讲解了如何使用java规则引擎Drools进行商业规则的形式语 ...

  5. 传奇GOM引擎登录器生成配置教程

    传奇GOM引擎登录器生成配置教程 本课教学流程与方法也适用于GEE引擎登录器的配置,略过第一步直接使用版本里自带的登录器配置器即可 我们讲第三课的时候站长已经为VIP学员附带了GOM引擎登录器更新包( ...

  6. java 实现规则引擎_Java规则引擎 Easy Rules

    1.  Easy Rules 概述 Easy Rules是一个Java规则引擎,灵感来自一篇名为<Should I use a Rules Engine?>的文章 规则引擎就是提供一种可选 ...

  7. 调度过磅结算计算机系统,基于规则引擎的生产企业原材料过磅结算系统的研究与应用...

    摘要: 现有的生产企业原材料过磅结算领域中存在着结算规则种类多种多样且经常发生变化,交易活动频繁,结算方案管理困难等问题,大量的人力和物力的投入给企业的经济效益带来不良影响.在传统的系统管理中主要采用 ...

  8. [转]Git忽略提交规则 - .gitignore配置运维总结

    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交.简单来说一个场景:在你使用git add .的时候,遇到 ...

  9. 【超简单】MySQL存储引擎的选择与配置

    [超简单]MySQL存储引擎的选择与配置 存储引擎简介 MySQL中的数据用各种不同的技术存储在文件(或内存)中.每一种技术都使用不同的存储机构,索引技巧,锁定水平并且最终提供广泛的不同的功能和能力. ...

最新文章

  1. SNMP在windows linux router上的配置笔记
  2. 用户profile完善
  3. 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 )
  4. 《C++ Primer Plus 6th》读书笔记 - 第8章 函数探幽
  5. VTK:图片之ImageStack
  6. [Java] 关键字final、static使用总结
  7. git 码云使用教程
  8. [剑指offer]面试题8:旋转数组的最小数字
  9. mysql inode_Linux中inode的大小、作用讲述
  10. Test.ai完成1100万美元A轮融资,Google人工智能基金领投
  11. elasticsearch 中文分词
  12. KITTI数据集无法下载的解决方法
  13. Java俩个小球碰撞的代码_java实现小球碰撞功能
  14. 如何从seo的维度来选择网站的关键词
  15. Cookies的SameSite属性
  16. c#如何使用webservice、存储过程及存储过程的创建(简单模仿类似QQ统计用户在线时间为例)
  17. ThrustMaster HOTAS WARTHOG飞行摇杆评测
  18. 通过主成分分析实现三维模型对齐【Principal Component Analysis】
  19. macbook配置java环境变量_Mac系统中如何配置JDK环境变量?Mac中JDK环境变量配置教程...
  20. HTML学习2之常用标签详细介绍

热门文章

  1. mysql 索引原理和使用
  2. 如何解决WIN7下默认打开方式无效的问题
  3. 【从饮水机到名人堂之c语言】详解rand()函数(详解随机数生成方法)
  4. 使用百度EasyDL定制化图像识别(二)
  5. 除了头像,还有哪些现象级NFT?| 国庆特辑
  6. 什么是跨境电商shopee?为什么这么能赚钱?
  7. navicat汉化版安装包下载
  8. 越狱的iphone4升级IOS7报3194问题解决过程
  9. Java使用zebraAPI连接斑马打印机
  10. 01-深入理解JNI