一、设计要点
1.生产排程系统与生产执行系统可以是两个分离的子系统。他们是“想”与“做”的关系。
2.排程系统的职责是提供执行策略以及风险预警。
3.排程系统可以通过对实际生产执行结果的数据分析,来实现对排程策略的修正。
4.排程的处理可通过“预约申请-风险评估-预约确认(或风险预警)”来实现。
预约是技术实现上的比喻,而不是业务环节的预约。
预约其实也就是将任务单向各部门预下达,然后各部门内部检测是否能消化、满足生产要求。最后对各部门的预约反馈进行分析,决定是否需要人为干预还是直接进行系统指派。所以预约有可能成功,也有可能存在生产无法完成的风险,所以要有预警机制,将信息以及处理策略推送给调度员。
5.一个生产任务在各车间的最迟交付时间是“死”的,它是生产指标的一部分,所以调度的意义也就是为满足生产指标而做的对各车间产能的调节以及生产执行顺序的安排。
二、模块设计
1.主流程的设计
2.排程预约的内部实现
3.生产能力评估的内部实现
三、技术要点
1.类的继承与多态
各车间都有内部的预约以及任务承接能力模型,我认为让他们都继承于一个类,然后提供虚方法,并在继承时对方法进行实现。
做了5年的软件设计,终于用到了类的继承和多态,泪奔~~~
2.消息推送的设计
排程的预警消息,不应该让用户去点击才能获取,系统应该体现它智能化的一面。为什么不尝试消息主动推送呢?
结束语:
希望这几篇随笔能起到抛砖引玉的作用。
设计不仅仅是对业务的抽象和建模,如何让设计更有生命力,以及对编程的影响力,也是需要考虑的问题。
设计应该是系统的“预告片”,能需要反映系统精彩的元素,吸引用户的眼球。