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

使用java规则引擎Drools自动排班前言

使用java规则引擎Drools自动排班前言本文以一个经简化的运输车队自动排班需求为例,详细讲解了如何使用java规则引擎Drools进行商业规则的形式语言描述,并编写java代码实现问题求解。

?

?

?

??? Drools是一个使用基于规则的方法实现的专家系统的规则引擎,更准确的说属于产生式规则系统。术语“产生式规则”从形式语法中产生,形式语法——使用一种抽象结构来准确描述形式语言。

知识(facts,事实,环境):?1,员工分为两种:司机,外勤?2,每天分白、中、晚三个班次?3,每班3人,一个司机,两个外勤?规则(rules):?1,司机可以当外勤,外勤不可以当司机?2,每个员工每个月至少休息6天?3,每个员工连续上班不能超过5天?4,工作分配应尽可能均匀

?

目标(goal):?1,按日期和班次打印排班表?2,按员工打印各人的班次任务

排班规则的形式语言描述(drl, drools rule language):package TEST;

import TEST.*;

?

rule "司机"when?shift : Shift(driver == null, $date : workDate, $no : no)爓orker : Worker(type == 1, easyDay >= 6, maxDay <= 4, $total : shiftTotal )爀val( !shift.getWorkDate().containsWorker(worker) )爊ot Worker(type == 1, shiftTotal

rule "

使用java规则引擎Drools自动排班前言 使用java规则引擎Drools自动排班前言本文以一个经简化的运输车队自动排班需求为例,详细讲解了如何使用java规则引擎Drools进行商业规则的形式语言描述,并编写java代码实现问题求解。 ? ? ? ??? Drools是一个使用基于规则的方法实现的专家系统的规则引擎,更准确的说属于产生式规则系统。术语“产生式规则”从形式语法中产生,形式语法——使用一种抽象结构来准确描述形式语言。 知识(facts,事实,环境):?1,员工分为两种:司机,外勤?2,每天分白、中、晚三个班次?3,每班3人,一个司机,两个外勤?规则(rules):?1,司机可以当外勤,外勤不可以当司机?2,每个员工每个月至少休息6天?3,每个员工连续上班不能超过5天?4,工作分配应尽可能均匀 ? 目标(goal):?1,按日期和班次打印排班表?2,按员工打印各人的班次任务 排班规则的形式语言描述(drl, drools rule language):package TEST; import TEST.*; ? rule "司机"when?shift : Shift(driver == null, $date : workDate, $no : no)爓orker : Worker(type == 1, easyDay >= 6, maxDay <= 4, $total : shiftTotal )爀val( !shift.getWorkDate().containsWorker(worker) )爊ot Worker(type == 1, shiftTotal rule "
经验分享 程序员 微信小程序 职场和发展