规则引擎如何优化生产调度系统

生产调度系统是制造企业MES系统的重要组成部分,对应于生产管理系统的短期计划安排,主要目标是通过良好的作业加工排序,最大限度减少生产过程中的准备时间,优化某一项或几项生产目标,为生产计划的执行和控制提供指导。在不同的问题环境中,生产调度的优化目标也不同。在生产制造企业中影响生产调度的因素很多(比如设备、工人的生产技能等),这些因素样式复杂,种类繁多,灵活多变。另外在不同的环境下,影响生产调度的规则数量、优先级都会发生变化。过去生产调度系统将业务逻辑与主体代码紧耦合,业务规则以:

的形式被硬编码到代码中去,结果是线性、确定的执行路由,所有的约束和判断都按照建模时的约定执行。当业务规则发生变更时,唯一的途径是修改代码。

这种形式无法适应制造企业生产规则的频繁变更,导致生产调度系统的开发、升级和维护成本急剧增加,甚至生产调度系统完全无法适应企业的实际需求。因此生产调度系统在保证对目标优化的前提下,将业务逻辑与主体程序的分离,已成为生产调度系统首要解决的问题。本文着重阐述通过规则引擎技术将生产规则逻辑从生产调度系统分离,克服生产规则灵活变更导致生产调度系统无法适应企业生产策略变更的问题。

目前开源和商业的规则引擎产品有很多,其中开源的以Drools为代表,商业的有ILog旗正规则引擎等,本文以商业规则引擎中的旗正规则引擎来说明。说句题外话,开源的产品有开源产品的优点,但是规则引擎作为一个高端的应用来说,还是希望在售后服务,技术支持等方面能有商业化的保障。

在制造企业中,生产策略的变更非常频繁并且影响生产调度系统的业务策略很多,而传统的生产调度系统将业务逻辑与生产调度逻辑紧密耦合,导致系统的开发,维护都变得异常艰难。因此如何将业务逻辑与主体程序分离,屏蔽业务策略变更对主体程序的影响,则成为生产调度系统的关键问题。

基于规则引擎的生产调度系统架构设计的核心是实现业务逻辑与应用程序解耦。它的实现方案可分为以下几个步骤:

1.  生成业务规则  业务人员对影响生产调度的业务策略进行收集,抽象,归纳,按照规则文件格式配置成业务规则。

2.  业务规则管理  业务人员通过规则管理平台实现对规则的存储,版本,废弃,冻结等一系列的管理

3.  执行业务规则  应用程序中启动规则引擎(服务和接口)解析执行已经编辑配置好的规则文件,然后将结果返回给应用程序。

通过以上步骤,能够让整个生产调度系统快速适应企业业务策略的频繁变更,隔离策

略变更对应用程序的影响,同时又能与主体程序进行动态通信。主体程序动态感知业务策略的变更,将变更结果推动执行和呈现。

在制造业企业中,制约生产调度的业务规则很多,在不同的场景中业务规则的组合形式多种多样并且规则的执行先后顺序对调度结果也起着制约作用,业务规则的表现形式也是多种多样的,如何灵活易用的配置统一格式的规则是我们关注的重点。

旗正规则引擎的规则主要由:条件,动作,属性等组成,一个规则中可以包含多个组合判断条件,也可以完成多个不同的动作。

旗正规则引擎的规则表现形式如下:

在生产调度系统中,所有的业务规则都可以抽象为这种格式,下面以工人的技能熟练程度为例来说明生产调度系统中的业务规则配置方式

从上图可以看出,与传统的生产调度系统相比,基于规则引擎的生产调度系统具有以下几点优势:

1.  业务逻辑与主体逻辑的分离,模块之间更加松散耦合,已于开发,维护和升级

2.  屏蔽业务策略的变化,具有更强的灵活能力和使用能力,能有效的适应策略的变化。

3.  有效的延长应用程序的生命周期。

4.  开发过程更加离散,各个过程可由不同的开发者进行开发,测试和部署。

基于规则引擎的生产调度系统实现了主体应用程序与业务逻辑的分离,屏蔽了生产策略变更对系统的影响。能有效降低生产调度系统的开发,维护和升级成本,延长软件生命周期,降低企业信息化成本。

时间: 2024-07-30 12:06:36

规则引擎如何优化生产调度系统的相关文章

Flink/CEP/规则引擎/风控

基于 Apache Flink 和规则引擎的实时风控解决方案 ? 对一个互联网产品来说,典型的风控场景包括:注册风控.登陆风控.交易风控.活动风控等,而风控的最佳效果是防患于未然,所以事前事中和事后三种实现方案中,又以事前预警和事中控制最好.这要求风控系统一定要有实时性.本文就介绍一种实时风控解决方案.风控是业务场景的产物,风控系统直接服务于业务系统,与之相关的还有惩罚系统和分析系统,各系统关系与角色如下: 业务系统,通常是 APP + 后台 或者 web,是互联网业务的载体,风险从业务系统触发

【java规则引擎】之规则引擎解释

转载:http://www.open-open.com/lib/view/open1417528754230.html 现实生活中,规则无处不在.法律.法规和各种制度均是:对于企业级应用来说,在IT技术领域,很多地方也应用了规则,比如路由表,防火墙策略,乃至角色权限控制(RBAC),或者Web框架中的URL匹配.不管是那种规则,都规定了一组确定的条件和此条件所产生的结果. 举一个例子: IF 汽车是红色车是运动型的驾驶员是男性驾驶员在16-25岁之间THEN 保险费用增加20% 从这个例子可以看

jboss规则引擎KIE Drools 6.3.0 Final 教程(1)

前言 目前世面上中文的KIE DROOLS Workbench(JBOSS BRMS)的教程几乎没有,有的也只有灵灵碎碎的使用机器来翻译的(翻的不知所云)或者是基于老版本的JBOSS Guvnor即5.x的一些教程,而且这些教程都是"缺胳膊少腿"的,初学者看后不知道它到底在干吗?能干吗?能够解决自己系统中什么问题. 所以笔者自己写了几个例子,把整个最新的英文版的KIE DROOLS 6.3.0.Final的官方教程给串了起来,用于供读者使用并以此来作为入门以及相关SOA理念的推广的第一

JAVA规则引擎 -- Drools

Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效. 本文所使用的demo已上传 http://download.csdn.net/source/3002213 1.Drools语法 开始语法之前首先要了解一下drools的基本工作过程,通常而言我们使用一个接口来做事情,首先要穿进去参数,其次要获取到接口的实现执行完毕后的结果,而drools也是一样的,我们需要传递进

业务规则引擎浅析

在CRM(客户关系管理)系统或者其他业务支撑型系统的开发过程中,最经常多变的就是复杂的业务规则.因为这些规则要迎合.顺应市场的变化,如何能有效到做到业务规则和整体的系统支撑架构解耦分离,这个是开发过程中必须考虑的一个问题.每当客户要求改变一个业务规则的时候,我们又如何能做到在最短的时间内完成需求的开发提交,提高系统的灵活度?业务规则引擎无非是一个比较好的解决方案.它把复杂.冗余的业务规则同整个支撑系统分离开,做到架构的可复用移植,这个就是我们的终极目标. 那规则引擎又是什么东西?严格来说,它是一

[Drools]JAVA规则引擎 -- Drools

Drools是一个基于Java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效. 本文所使用的demo已上传 http://download.csdn.net/source/3002213 1.Drools语法 开始语法之前首先要了解一下drools的基本工作过程,通常而言我们使用一个接口来做事情,首先要穿进去参数,其次要获取到接口的实现执行完毕后的结果,而drools也是一样的,我们需要传递进

旗正商业规则引擎和开源及其它规则引擎测试对比

规则引擎在基础软件,或者在很多系统中已经不是稀奇的玩意,最近这几年,国内不断兴起很多的规则引擎,至于什么是规则引擎,在这篇文章中,就不做介绍了,我想能看以下内容的,多少对规则引擎也都有所了解了. 国内在2003年的时候,出了第一款商业规则引擎-旗正商业规则引擎(VisualRules),为什么这么说呢,因为再此之前,国内所用的规则引擎,都是国外产品,或者开源产品,纯自主研发旗正是第一款,直至目前为止,纯自主研发的规则引擎少之又少.那么旗正商业规则引擎到底怎样?今天,给大家介绍一下,顺便,我们拿出

规则引擎入门

什么是规则引擎? 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策.接受数据输入,解释业务规则,并根据业务规则做出业务决策. 参考: http://baike.baidu.com/link?url=BfAR-sxz1ryvOZ4uSVCqn9Csy51U5qCUaIomAQBogPE7FOxbbDB-2iXWR6N8FReIkoNNdc-Hk4y0sxKWpknWd_ 规则引擎和工作流引擎有什么区别? 工作流引

规则引擎

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策.接受数据输入,解释业务规则,并根据业务规则做出业务决策. 应用背景: 企业级管理者对企业IT系统的开发有着如下的要求: 1.为提高效率,管理流程必须自动化,即使现代商业规则异常复杂. 2.市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速.低成本的更新. 3.为了快速.低成本的更新,业务人员应能直接管理IT系统中的规则,不需要程序开发人员参与. 使用规