0

I am providing a top level technical design of an ERP system. I have come up with an draft , but would need help to decide if I am on the right track.

I am taking baby steps, so I am concentrating on the HR module, as we all are familiar with it.

An HR module mainly has Payroll, Leave, Appraisal, Employee Welfare. All the HR modules run as batch processes in the night.

I would like to make the ERP cross - platform , so decided on python / C++ ( wxPython / wxWidgets come to my mind, or I may use normal Python /C++ )

I am not sure what shall the middleware be, if someone can help me with that that would be great. if you can provide me with advantages/ disadvantages of the middle ware that would be excellent, otherwise please mention the name of the middle ware, I shall look up the rest.

I possess skils in C, C++, and C#, so I am bit biased with C++, but your opinion counts .

   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

Please feel free to provide your comments on the above design too.

Example

John is an employee of an organisation, which has 10,000 employees. John has a gross salary of 1000 USD.

Lets forget the ERP stuff for sometime and think a design for the following :-

  1. HR enters Johns salary of 1000 in the UI

  2. The data is passed to to the business layer via the Web service ( I think Python shall be a good choice)

  3. The business layer is responsible for the deductions; not only for John but for the 10,000 employees who work in the organisation ( C++ is probably the language of choice ).

  4. After deductions, the net salary is passed to the queue ( not sure of the middleware , please suggest)

  5. The payroll process runs every month end, fetches data from the message queue and updates the database.

    Lets say while execution of the process , there is a power cut, so the process did not run completely, and the salary details for some employees were not updated. In this case the message queue should retain the unprocessed data, and before the next payroll process runs, the unprocessed data should be processed first.

  6. The database stores the data. ( have not decided on the database yet )

Domain expertise is there , so I am looking for suggestion on betterment of the architectural design.

You are welcome to say "No, this is not the correct approach , you should do like XYZ". with a why is your approach better. This shall help me in comparing between your approach and mine.

4

3 回答 3

3

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

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

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

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

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

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

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

于 2011-11-16T20:38:26.557 回答
1

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

于 2012-10-28T18:21:46.810 回答
1

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

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

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

于 2011-11-16T19:41:00.310 回答