• 生产排程系统设计(三)设计概要


    一、设计要点

    1.生产排程系统与生产执行系统可以是两个分离的子系统。他们是“想”与“做”的关系。

    2.排程系统的职责是提供执行策略以及风险预警。

    3.排程系统可以通过对实际生产执行结果的数据分析,来实现对排程策略的修正。

    4.排程的处理可通过“预约申请-风险评估-预约确认(或风险预警)”来实现。

    预约是技术实现上的比喻,而不是业务环节的预约。
    预约其实也就是将任务单向各部门预下达,然后各部门内部检测是否能消化、满足生产要求。最后对各部门的预约反馈进行分析,决定是否需要人为干预还是直接进行系统指派。所以预约有可能成功,也有可能存在生产无法完成的风险,所以要有预警机制,将信息以及处理策略推送给调度员。

    5.一个生产任务在各车间的最迟交付时间是“死”的,它是生产指标的一部分,所以调度的意义也就是为满足生产指标而做的对各车间产能的调节以及生产执行顺序的安排。

    二、模块设计

    1.主流程的设计

    2.排程预约的内部实现

    3.生产能力评估的内部实现

    三、技术要点

    1.类的继承与多态

    各车间都有内部的预约以及任务承接能力模型,我认为让他们都继承于一个类,然后提供虚方法,并在继承时对方法进行实现。

    做了5年的软件设计,终于用到了类的继承和多态,泪奔~~~

    2.消息推送的设计

    排程的预警消息,不应该让用户去点击才能获取,系统应该体现它智能化的一面。为什么不尝试消息主动推送呢?

    结束语:

    希望这几篇随笔能起到抛砖引玉的作用。

    设计不仅仅是对业务的抽象和建模,如何让设计更有生命力,以及对编程的影响力,也是需要考虑的问题。

    设计应该是系统的“预告片”,能需要反映系统精彩的元素,吸引用户的眼球。


    作者:道无名
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    为什么处理有序数组比无序数组快?
    LeetCode:Longest Common Prefix
    LeetCode:Container With Most Water,Trapping Rain Water
    LeetCode:Substring with Concatenation of All Words (summarize)
    LeetCode:Pow(x, n)
    LeetCode:Combination Sum I II
    LeetCode:N-Queens I II(n皇后问题)
    LeetCode:Valid Sudoku,Sudoku Solver(数独游戏)
    LeetCode:Divide Two Integers
    LeetCode:Reverse Nodes in k-Group
  • 原文地址:https://www.cnblogs.com/yfyy/p/2079784.html
Copyright © 2020-2023  润新知