1Java规则引擎在机场业务及资源管理中的应用2汇报内容₪规则引擎技术简介₪基于规则引擎的机场资源管理系统软架构₪已完成研究内容和掌握的技术JBossRules₪已取得的主要研究成果₪下一步研究内容和仿真方法₪论文进度安排3规则引擎技术相关工作₪规则引擎是一种嵌入在信息系统中的构件,它将频繁变化的业务规则从程序中剥离出来,放入规则库中管理和修改。₪规则引擎的基本过程是将提交给它的事实数据对象与加载在引擎中的业务规则进行测试和对比,激活那些符合当前事实对象状态的业务规则,触发系统中对应的操作,完成对信息系统中某些状态信息的改变。₪规则引擎针对业务规则频繁变化且事实对象之间的约束关系复杂时,可以发挥很大的优越性。4规则引擎技术相关工作₪规则引擎分为规则库、工作内存、推理引擎三部分。₪推理引擎细分为模式匹配器、议程、执行引擎三部分。规则引擎的运行机制5规则引擎运行机制₪规则引擎通过快速检索工作内存的对象与,与加载到其中的规则库中的各项规则前提进行匹配,激活符合条件的规则,放入冲突集中。₪冲突集中的规则通过规则优先权等因素的制定,排序生成议程,从而使优先级高的规则被第一个触发。₪规则执行后,规则的后件执行部分会改变加载到工作内存中的事实对象信息,使议程中的一些激活的规则的前提条件不再得到满足,必须从议程中撤销,反之又有新的规则被激活加入议程中。₪以上过程不断循环,产生动态的规则执行链,直到每个事实都处理完毕或没有规则可以被触发为之。下图反应工作内存和议程的变化情况。6规则引擎运行机制7基于规则引擎的机场资源管理系统软架构₪传统机场资源管理系统架中,考虑到很多约束规则,机场资源的链接关系和分配约束规则复杂且变化频繁,如果每个规则的变化都交给软件工程师修改程序源代码,任务繁重,限制了系统扩展性。₪在客运高峰等不确定因素造成的资源冲突时,无法通过虚拟分配资源预测出任何规则改变或调整带来的有利或不利影响,因此资源分配策略并非最优。₪在基于规则引擎的机场资源管理系统软架构模型中,可以通过加载航班对象事实和业务约束规则完成模式匹配过程,激活并触发相应匹配规则来修改资源对象的状态信息,从而模拟出资源分配工作。₪通过改变规则约束条件和航班计划事实,实现资源的虚拟分配,根据分配结果的最优化程度,制定和调整规则的优先级,从而使机场资源管理系统嵌入规则引擎时,规则按重要程度执行,从而实现了资源的最优化配置。8基于规则引擎的机场资源管理系统软架构₪ThesoftarchitectureofARMSbasedonruleengineARMSRuleengineRulepersistentlayerRulemanagerRulebaseBusinessruleanalystinairportPolicyofairportresourceallocationStaffinairport9基于规则引擎的机场资源管理系统软架构机场业务约束规则举例如下:₪1、当已有航班安排在5号或7号停机位时,在航班到港前30分钟,2、3、4、8号停机位禁止分配给任何航班。₪2、2号和18号远机位禁止停放大型飞机,只能停放A320,A319,737系列。₪航班因故障,或天气因素时,应安排在14号和16号停机位,作应急之用。₪19号机位只有在其它机位全部投入使用时才会投入使用10基于规则引擎的机场资源管理系统软架构在机场资源管理系统中嵌入规则引擎,首先要建立主规则库和其它类型规则库。₪主规则库包括日常运营的一系列规则,例如:一般类型的机位可以被允许分配的机型类型为:B737、B757、B777、A310、A320、A321;2号和8号远机位不能停放B767、A330以上的大型航班;18号和20号机位设置为不允许,预留给特殊航班。₪其它规则库则包括特殊的事件处理方式,例如:如发生天气变化等因素时,可根据实际情况安排在4号或6号备用机位。11基于规则引擎的机场资源管理系统软架构仿真实现方法如下:₪在新的架构下,通过JBossRules规则引擎在Eclipse下的集成,可以方便实现规则库与程序源代码的交互。₪航班事实对象可以表示为JavaBean类生成的对象,只包含航班事实本身的属性及属性的get和set方法,而不包括对象间的约束关系和相关逻辑。如航班类包括:航班号、机型号、机型类型、到港状态、离港状态、到港时间、离港时间、分配的机位号。而机位事实包括:机位号,机位类型(近机位,远机位),分配状态(已经分配,没有分配),分配后的航班号。12基于规则引擎的机场资源管理系统软架构₪JBossRules规则引擎中规则可以被定义到后缀名称为drl类型的文件中,也可以保存为表格或规则流形式,这里采用drl格式仿真。₪JBossRules规则引擎中条件可以由when关键词定义,执行动作通过then关键词定义,举例伪代码如下:当航班类型为大型的航班MU5314到港时,合理完成了资源的分配仿真,将将25号停机位分配给此航班,同时临近的24号和26号停机位不能停放任何到港航班。13基于规则引擎的机场资源管理系统软架构rule大型机的分配salience3when#conditions(条件)Condition1:航班机型为大型机Condition2:航班的状态为到港then#actions(动作)Action1:将25号停机位分配给此航班Action2:临近的24号和26号停机位不能停放任何到港航班,即分配权限属性设为不允许(为了安全考虑)14已完成研究内容和掌握的技术JBossRules₪JBossRules是一种开源的商业规则引擎,它的前身是Codehaus的一个名为Drools的开源项目,Drools是为Java量身定制的基于Rete算法的规则引擎。JBossRules可以作为插件的形式集成到当前最流行的Java开源开发环境Eclipse下,免费且开发界面友好。₪以下通过实例分析,掌握了JBossRules规则引擎的基本使用方法,为仿真实现打下基础。下面是JBossRules在研究生奖学金评定中的实现仿真,原理与机场仿真相近,作为基础。15已完成研究内容和掌握的技术JBossRules₪应用程序中导入规则包:PackageBuilderbuilder=newPackageBuilder()builder.addPackageFromDrl(newInputStreamReader(CepingExample.class.getResourceAsStream(/constraint.drl)));RuleBaseruleBase=RuleBaseFactory.newRuleBase();ruleBase.addPackage(builder.getPackage());16已完成研究内容和掌握的技术JBossRules工作内存的创建及对象的导入WorkingMemoryworkingMemory=ruleBase.newStatefulSession();Graduatezhuqiang=newGraduate(朱强,24,25,88,9);Graduatezhaoyaou=newGraduate(赵亚欧,25,26,92,16);Graduatecailiang=newGraduate(蔡亮,26,28,88,12);workingMemory.insert(zhuqiang);workingMemory.insert(zhaoyaou);workingMemory.insert(cailiang);workingMemory.fireAllRules();17已完成研究内容和掌握的技术JBossRules₪规则举例如下:rule社会贡献奖约束#includeattributessuchassaliencehere...salience5whengraduate:Graduate(fujiafen15);then#actionsgraduate.setFujiafen(10);System.out.println(graduate.getName()+附加分超过15,按10分算);end18已完成研究内容和掌握的技术JBossRules19已完成研究内容和掌握的技术JBossRules20已完成研究内容和掌握的技术JBossRules₪在Jess中,有个实例,在这里用JBossRules将其重写,得出JBossRules下更方便与JavaBean类交互的结论。₪ThereisagolfernamedFred₪Joeisinposition2₪Bobiswearingplaidpants₪Tomisn'tinposition1or4₪andisn'twearingorange₪ThegolfertoFred'simmediaterightiswearingbluepants21已完成研究内容和掌握的技术JBossRules22已完成研究内容和掌握的技术JBossRules23仿真结果24仿真结果25仿真结果26仿真结果27仿真结果28仿真结果29仿真结果30仿真结果31仿真结果32仿真结果33仿真结果34仿真结果35最终仿真结果36最终仿真结果37最终仿真结果38最终仿真结果39最终仿真结果40已取得的主要研究成果₪撰写论文3篇:₪朱强,曲守宁,赵亚欧,邹燕基于Jess的规则引擎机制的研究(济南大学学报(已录用))₪ResearchandApplicationofRuleEngineinAirportResourceManagementSystem(审稿中)₪基于JBossRules规则引擎的机场资源管理系统软架构(审稿中)41下一步的研究的内容₪1、在对JBossRules规则引擎熟练掌握的基础上,下一步工作将根据具体的机场资源分配和业务约束规则文档创建出完整的规则库,同时根据航班类定义出每个航班的对象信息。JBossRules规则引擎可以通过加载航班对象事实和业务约束规则完成模式匹配过程,激活并触发相应匹配规则来修改资源对象的状态信息,从而模拟出资源分配工作。₪2、通过改变规则约束条件和航班计划事实,实现资源的虚拟分配,根据分配结果的最优化程度,制定和调整规则的优先级,从而使机场资源管理系统嵌入规则引擎时,规则按重要程度执行,从而实现了资源的最优化配置。42下一步的研究的内容₪3、通过分析任何规则的改变对资源分配带来的有利或不利影响,对不利规则做出更改和调整,从而完善规则库使其更合理。₪综上所述,最终完成JBossRules规则引擎在机场资源管理系统中的应用仿真。在仿真模块中,通过有选择的加载规则库中的规则或改变某些规则,由规则引擎自动得出相应资源分配策略,来直观分析出任何规则的改变对资源分配带来的有利或不利影响,进而可以对不利的规则做出调整和更改以适应资源最优化分配。43下一步的研究的内容₪目前规则引擎技术是新的系统设计理念,与传统软架构相比具有很大优越性,但在国内应用较少,已经初步应用到公交车辆调度、制造业MES、“旅游一卡通”计费系统中,在机场资源管理方面还是探索阶段,预测分析模块的实现是创新点,对将来投入实际应用具有指导意义。44汇报完毕,谢谢!