简谈规则引擎在生产调度中的作用

简介:

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

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

dd685179d036c258686d2936e57dc09ef49c0389

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

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

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

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

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

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

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

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

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

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

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

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

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

    3242f2eac4819573cdfae0c9ab99e073bef29da7  

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

a7a0e4cd195862a3affd62ab4c5f76adc5847356

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

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

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

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

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

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

 

相关文章
|
9月前
|
边缘计算 JSON 物联网
解锁业务灵活性:RuleGo规则引擎的高效解耦与实时响应秘籍
RuleGo是一个基于Go语言的轻量级、高性能规则引擎,旨在通过动态规则链和组件化设计,简化复杂系统的业务逻辑管理和实时响应。
解锁业务灵活性:RuleGo规则引擎的高效解耦与实时响应秘籍
|
4月前
|
消息中间件 存储 分布式计算
大数据-72 Kafka 高级特性 稳定性-事务 (概念多枯燥) 定义、概览、组、协调器、流程、中止、失败
大数据-72 Kafka 高级特性 稳定性-事务 (概念多枯燥) 定义、概览、组、协调器、流程、中止、失败
63 4
|
7月前
|
监控 运维
开发与运维技术问题之技术PM如何协调业务诉求与技术能力之间的关系如何解决
开发与运维技术问题之技术PM如何协调业务诉求与技术能力之间的关系如何解决
66 1
|
7月前
|
监控 中间件 数据处理
中间件流程协调与调度
【7月更文挑战第6天】
100 2
|
7月前
|
存储 数据中心 开发者
交易链路设计原则&模式问题之协调者在系统中的知名度对开发的影响如何解决
交易链路设计原则&模式问题之协调者在系统中的知名度对开发的影响如何解决
|
7月前
|
存储 对象存储
业务系统架构实践问题之在设计领域时配置与单据之间的关系如何解决
业务系统架构实践问题之在设计领域时配置与单据之间的关系如何解决
|
9月前
|
设计模式 安全 Java
老系统重构系列--如何用一套流程接入所有业务线
**摘要:** 本文介绍了老系统改造的过程,作者提出,ToB业务的挑战在于需要支持多种差异化的业务需求,而模板模式在处理这种需求时可能会导致继承关系复杂和粒度过粗。为了解决这些问题,文章提出了以下步骤: 1. **梳理流程差异点**:识别不同业务流程的差异,以便确定扩展点。 2. **领域模型梳理**:区分核心域和支撑域,确保核心域的稳定性。 3. **二次抽象隔离层**:创建隔离层,避免核心域因新业务接入而变得不稳定。 4. **基于SPI的扩展体系建设**:选择了COLA-SPI实现扩展点,允许业务域定义接口并实现差异化的流程逻辑。
204 0
|
9月前
|
XML 中间件 数据库
基于jeecgboot的flowable流程支持定时边界事件
基于jeecgboot的flowable流程支持定时边界事件
153 0
EMQ
|
SQL 消息中间件 存储
eKuiper 1.10.0 发布:定时规则和 EdgeX v3 适配
作为一个里程碑版本,eKuiper 1.10.0 升级了基础依赖的版本,如 Go 语言版本升级到 1.20、EdgeX 支持最新的大版本 Minnesota(v3)等。
EMQ
238 0
|
运维 监控 NoSQL
浅谈业务开发与非业务开发
讲述业务开发、非业务开发及两者之间区别