【问题标题】:Designig an ERP system [closed]设计一个ERP系统[关闭]
【发布时间】:2013-06-24 22:20:38
【问题描述】:

我正在提供 ERP 系统的*技术设计。我想出了一个草稿,但需要帮助来确定我是否走在正确的轨道上。

我正在迈出小步,所以我专注于人力资源模块,因为我们都熟悉它。

HR模块主要有工资、休假、考核、员工福利。所有的 HR 模块都在夜间作为批处理运行。

我想做ERP跨平台,所以决定用python/C++(想到wxPython/wxWidgets,或者我可以使用普通的Python/C++)

我不确定中间件应该是什么,如果有人可以帮助我,那就太好了。如果你能把中间件的优缺点告诉我会很好,否则请提到中间件的名字,我会查其他的。

我拥有 C、C++ 和 C# 方面的技能,所以我对 C++ 有点偏见,但您的意见很重要。

   User Interface ( have not decided yet )
        |
        |
    Web Service ( my suggestion is Python.  )
        |
        |
   Business Logic ( my suggestion is C++ )
        | 
        |
   Middleware   ( need a message queue here, not sure what should it be, an open source middleware )
        |
        |
   Database Broker ( my suggestion is C++ )
        |
        |
   Data Base

请随时为您提供上述设计的 cmets。

示例

John 是一家拥有 10,000 名员工的组织的员工。约翰的工资总额为 1000 美元。

让我们暂时忘掉 ERP 的东西,想想下面的设计:-

  1. HR 在 UI 中输入 Johns 的薪水 1000

  2. 数据通过Web服务传递给业务层(我认为Python应该是一个不错的选择)

  3. 业务层负责扣款;不仅适用于 John,也适用于在该组织工作的 10,000 名员工(C++ 可能是首选语言)。

  4. 扣除后,净薪传到队列中(中间件不清楚,请指教)

  5. 工资核算流程在每个月底运行,从消息队列中获取数据并更新数据库。

    假设在执行流程时,发生了断电,因此流程没有完全运行,并且一些员工的工资详细信息没有更新。在这种情况下,消息队列应该保留未处理的数据,并且在下一个工资核算流程运行之前,应首先处理未处理的数据。

  6. 数据库存储数据。 (还没有决定数据库)

领域专业知识在那里,所以我正在寻找有关改进建筑设计的建议。

欢迎您说“不,这不是正确的方法,您应该像 XYZ 那样做”。为什么你的方法更好。这将有助于我比较你的方法和我的方法。

【问题讨论】:

  • 您有排除 Java 或 .NET 的特殊要求吗?对于商业软件场景,它们通常比 C++ 更高效,并且有许多不同的框架和库可供使用。
  • Anders - 我想让软件跨平台,所以我排除了 .NET ,尽管我知道如果在 *nix 机器上安装 MONO 应该运行 .NET 代码。 C++ 可能一直是产品中业务逻辑的首选语言。不排除 Java,只是我不是 Java 人...请提及您知道的框架/库.. Whaterp,Intars。是我遇到的一些名字。
  • 天哪,从头开始设计整个 ERP 系统?这听起来像是所有项目之母。你确定你的意思是 ERP,光是技术设计就可能需要一个团队?
  • Jon ... :-) 它需要一个团队,我正在布置技术设计。
  • 我不明白你为什么排除了 C#? Mono 真的很稳定。在我看来,您需要做更多的研究。

标签: architecture software-design erp


【解决方案1】:

我同意 JonAlb 的观点,这听起来确实是所有项目之母。您是否考虑过开源实现?

http://en.wikipedia.org/wiki/List_of_ERP_software_packages

他们中的许多人使用 Python,一个使用 C++(我很惊讶地发现了一个 :)

ERP 系统是企业中最复杂的概念之一(具有相当程度的故障)。只看定义:

企业资源计划 (ERP) 系统集成了内部和 整个组织的外部管理信息, 包括财务/会计、制造、销售和服务, 客户关系管理等 ERP 系统自动执行此操作 活动与集成的软件应用程序。它的目的是 促进所有业务功能之间的信息流动 在组织的边界内并管理连接 给外部利益相关者

请帮自己一个忙,不要从头开始。

PS:如果您的公司正在构建 ERP 以与 Oracle、Microsoft、PeopleSoft、SalesForce 等公司进行正面竞争,那么您必须做您必须做的事情。目前我不会担心技术堆栈。首先从业务角度了解 ERP 试图解决的问题。

【讨论】:

  • 一种更周到的方式来表达我的想法......
  • 另外.... 我理解你试图用这些层做什么,但是对于这样一个复杂的系统,很多多个层可能会使它变得更加复杂。您应该以短路为目标(正如 Yuriy 所说)并尽可能简化。过度工程化的设计将使其更难实施。设计简单,您更有可能成功。
  • Yujir,Jon,该公司涉足 ERP,他们在这方面拥有强大的专业知识。他们需要一个技术架构(顶层)来进行设计和我正在做的事情。
  • 那时我唯一能推荐的就是研究开源 ERP 项目。
  • Yuri .. 我也在寻找开源 ERP 项目/框架,我在最初的帖子中已经提到了它们。此外,如果您能告诉我您的软件设计方面的cmets,那就太好了。
【解决方案2】:

首先,您必须找出所需的响应时间以及将处理的数据量。然后你必须找出你的团队中有哪些技能。 使用 C++ 很好,当您预期性能问题时,但编程 C++ 比 Java 更昂贵(需要更多时间,有更多错误)。除非你有 C++ 大师和 Java 技能。

我个人:我使用 Spring(Spring Security、Spring Web Services、DI 等)、Hibernate 作为数据库抽象和 ZK(www.zkoss.org)作为用户界面技术制作了我的最后一个应用程序(电子健康记录) (这真的很棒,不用担心 Javascript ......)。这比 C++/Python 堆栈更容易编程。对于我的团队:-)

那你为什么不改用 Java,有大量的开源、消息队列,你需要的一切......

【讨论】:

  • 马克,谢谢你的想法。我会记住他们的。
【解决方案3】:

我建议,研究基于 UML 的建模和用例,以捕捉架构的业务案例。 逆向工程并整合 Adempiere 和 Openbravo 的许多方面。 您需要 Jboss、spring 和对管理会计系统的良好理解。 您需要了解 Oracle、Postgress 等。

【讨论】: