幸运的是,我们在这里面临的问题并不是唯一的。
这里的问题似乎不是代码本身,或者如何将其分解,而是要了解您现在正在从事 ERP 设计和开发。
了解如何最好地开发和发展以合乎逻辑的方式管理组织细节的 ERP 是我认为您试图解决的更深层次的问题。如何从中进行编码的设计和架构本身源于对您需要的核心功能领域的理解。
幸运的是,我们可以研究一些您可以掌握的现有 ERP 系统,看看它们是如何解决一些问题的。有一些不错的开源 ERP,让我想到这个提示的是我监督的 SAP Business One 的完整安装周期(一个绕过大型 SAP 挑战的中小型 ERP)。
您正在寻找的是查看其他人如何解决您面临的相同 ERP 架构。至少你会了解模块化之间的权衡,在哪里划定模块之间的界限以及为什么。
通常,ERP 系统处理从报价到生产(如果需要)、计费、运输和由此产生的会计工作的所有事情。
ERPS 处理两个主要领域:
- 商品生产
- 提供服务
有些企业是小部件工厂,有些是服务企业。一个功能齐全的开箱即用 ERP 将有一个“订单”的连续链/生命周期,该“订单”由多个步骤提供服务。
如果我们阅读 ERP 可以涵盖的步骤的粗略列表,您会看到适用于您的步骤。这些可能是您拥有或应该将您的应用程序分解成的模块。想象以下步骤,其中每个都是不同的文档,都连接到链中的前一个文档。
- 潜在客户生成 --> 销售机会
- 销售机会 --> 报价/估计
- 报价估算 --> 销售订单
- 销售订单 --> 生产订单(构建它,或安排某人完成工作)
- 生产订单 --> 采购订单(订购所需材料或专家在需要时到达)
- 生产订单 --> 生产调度(将建造什么,何时,或谁来完成,何时?)
- 生产计划 --> 生产!(做作业)
- 生产的服务/商品 --> 库存调整 - 如果需要,将任何原始库存转换为成品,或准备发货
- 成品/服务 --> 装箱单
- 装箱单项目 --> 发票
系统集成商进来的地方是使用所需的步骤,并跳过不使用的步骤。这会为您不断增长的应用程序带来一件事:
制定可靠的数据安全策略。确保您感到舒适,因为每个人都只能看到他们应该看到的内容。假设它已经到位,将应用程序分解为主要部分是一个好主意。模块是我们的朋友。然而,将它们分解的顺序可能会对你所做的事情产生比任何事情都更大的影响。
查看哪些部分是通用的(报告等),可以在多个应用程序之间重复使用,哪些部分更专门用于应用程序本身。与应用程序本身相关的功能可能已经更紧密地耦合了,您可能必须解决这个问题。
对于 ERP,我一直更喜欢所有其他交易提供者的交易“核心”模块(一旦定义,计费就会推动流程)。
当我将 90 年代的 Lotus Notes ERP 转换为 SAP ERP 时,Lotus Notes 应用程序非常出色,它可以处理应有的一切。有一些构建在侧面的迷你应用程序没有作为模块集成,这是摆脱它的主要原因。
如果您今天根据今天的要求重新编写应用程序,您会如何以不同的方式完成它?看看与你所拥有的是否有任何重大差异。让应用程序争取您的注意力,以决定首先需要检修/模块化的内容。ColdBox 非常适合模块化,无论您是使用插件类型的模块还是只是使用分离良好的代码,您都不会出错,这只是开发人员时间和金钱的功能来完成它。
我要构建/自动化单元测试的第一个模块是最复杂的编程模块。如果你是一个体面的开发人员,你可能不需要从昨天开始进行端到端的单元测试。从最复杂的开始,移动到应用程序的核心部分,然后扩展到可能让您夜不能寐的任何其他领域。
希望有帮助!如果您不介意,请分享您最终会做什么,如果我提到的任何内容需要进一步解释,请在此处或推特上联系我 :) @JasPanesar