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 :-
HR enters Johns salary of 1000 in the UI
The data is passed to to the business layer via the Web service ( I think Python shall be a good choice)
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 ).
After deductions, the net salary is passed to the queue ( not sure of the middleware , please suggest)
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.
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.