Enterprise Resource Planning on the NetBeans Platform
New Genesys, located in Rome and Cremona (near Milan), is a small organization of four developers, one account manager, and some consultants. Some of us have +/- 15 years of IT experience (not only in Java). We develop business critical JEE-based custom software for medium/large sized public and private organizations. Our past and present customers operate in a range of fields from banking to distribution to research and so on.
Four years ago, we won a bid to rewrite an ERP application for the Nova SpA - Euronics Group. The original application was a custom terminal-based application developed on (and bound to) SCO Unix, with more than 20 years of history on its back. This application covered the entire active and passive cycle of Nova-Euronics, their over 30 shops and their affiliates.
We didn't like the idea of adopting a web client for this kind of application: our main concern was the point of sale (POS) user interface, i.e., a network outage on Christmas eve can cost much more than the entire application! We needed offline operability, local caching, and the like. And the user interface had to be really fast... So I - as co-owner and software architect of New Genesys, in charge of assessing and selecting technologies and tools - began to evaluate a range of possible candidates.
We had just dropped Eclipse in favor of NetBeans IDE 5 at that time: no plugin mess, better integration with JEE technologies, version control systems out of the box, a non-custom Ant-based build system, and so on. As a result, the NetBeans Platform was top of the list from the start. The Swing Application Framework (JSR 296) was not "enterprise ready", while Eclipse was a good competitor on the RCP side, but SWT didn't appeal to me too much. Moreover, the NetBeans Platform was well documented ("Rich Client Programming: Plugging into the NetBeans Platform" was - and still is, in my opinion - a great resource) and the codebase is readable and challenging. Needless to say, the NetBeans Platform won hands down and the development of "Consumer Electronics ERP" started.
Here are some screenshots of the result:
- CRUD interface to administer data:
- Budget constraints on supplier's orders:
- Warehouse receipts planner:
- Orders to suppliers form:
- Reports and business intelligence interface:
Some of our tools, however, better fit a web based interface: the admin console, a presence surveyor, a B2B for the affiliates, and a wedding list.
For the backend, we use the technologies we are accustomed to: MySQL and Glassfish 2.1 (EJB 3, JPA 1 and JSF 1.2).
Some numbers to give a grasp of the size of the app:
- +/- 200 SQL tables
- +/- 50 EJBs
- 1 NetBeans Platform application with +/- 25 NetBeans modules
- 4 web applications
- 1 JavaSE daemon application (data exchange with external systems)
- 1 Solr-based search engine server
This application will be released in production, hopefully in October. Part of it has already been in production over the past two years. It needs some serious cleanup on the Swing side, together with refactoring and optimizations, and some final features are currently still being developed.