Application number three in the “Real-World JavaFX Apps” series is a heavy-duty data entry application backed up by a relational database called HRC-Matic. It is being developed by AISO in Geneva. AISO is a company specialised in developing business applications based on JavaFX. They are also working on the application presented in my first blog in this series (European Broadcasting Union).
HRC-Matic is used by Swiss authorities to register businesses (ownership, legal status, funding, contacts). The application will be used by approximately 20 users in each canton where it is installed. The software is currently going through the final approval phase in the districts of Neuchâtel, Geneva, Vaud, and Fribourg.
The following images show various forms presented to the user by the application. As you can see it is all about data entry.
Geneva Registry – The entry for AISO itself
List of Values Box (LOV) in Action
JEntityFX datatable for rapid data entry
Complex forms / Tab-based navigation
The biggest challenges this project faced were the limitations of the table view and the overall support for keyboard navigation. I was hired as a consultant for the HRC-Matic project and had a lot of insight in the effort it took to make keyboard navigation work smoothly, especially in combination with the table view.
For applications used for rapid and massive data entry it is essential that the user can enter data efficiently and fast (with as little mouse interaction and keyboard strokes as possible). For the table views this means that the user can start editing table cells right away without double clicking on it or pressing the spacebar first.
The user should also be able to easily jump to the first or last row of a table. The focus handling needs to be configurable so that a press on the tab key in the last column results in the first column of the same row (or if desired the next row) to receive the focus. I was assigned to customise the standard table view and eventually succeeded, but it took a lot of code, a lot of know-how, and a lot of fiddling around to reach that goal.
Here are the interview answers provided by Jean-Michel Verchere (Director) and Christophe Bédert (Information System Architect) of AISO.
What is the name of your product / project?
The name of the product is HRC-Client and the name of the project is HRC-Matic. HRC is the combination of HR and RC which means “HandelsRegister” and “Registre du Commerce” in German and French respectively. “Matic” means task automation activity from the register.
Who are your users / customers?
The customers are the business registers of Geneva, Vaud, Neuchâtel and Fribourg cantons of Switzerland which have joined for this project.
What is the purpose of your software? What are its benefits?
The objective of HRC is the establishment of a complete solution to assist in the management of the entire activities of business registers in Switzerland. The software is used to manage requests for registration, modification, or cancellation of companies. The requests are made by company representatives. Public information of a company is made accessible on the Internet thru a web application.
Is the application operational? If yes, since when. If not when do you plan to go live?
The product is currently in pre-production and will go into production by the end of September in all sites.
How big is the budget for your project?
The overall budget is $1.8M for the whole project. For the HRC JavaFX client itself, the budget was $1.0 million.
How did you get the necessary JavaFX Know-How into your team? (Consultants, Internal / External training courses)?
JavaFX expertise was built up in-house. AISO already had strong skills in Java and in particular with Swing. For its Swing developments AISO has developed its own internal framework called JEntity. With the arrival of JavaFX a new framework was designed: JEntityFX. Dirk Lemmermann provided to this framework his external vision and great framework expertise.
With which version of JavaFX did you start? 1, 2, 8?
Initially the project was to be written in Swing. At the beginning of the development, JavaFX version 2 was released and the switch to JavaFX was made. Today the application has been adapted to JavaFX 8.
When did you start developing the application and how long did it take?
Development began in late 2012 and took 3 years.
How many developers worked on it? In total and on the UI.
The core team is constituted of 2 developers. Other developers have occasionally contributed to the UI and to other modules.
How big is the application? Lines of code, Number of classes.
The old application had about 210 screens. With JavaFX the application UI has become responsive with grouped, streamlined and generics screens. Thus, the application contains about 60 screens with many master/detail relations with around 110 associated tables in the database.
How big is the JavaFX client? Lines of code, Number of classes.
170’000 lines, 3’074 classes
Why did you choose JavaFX as frontend technology? And very importantly: why did you not choose HTML / Web?
Customers need a real sustainability (from 8 to 12 years). Developments of the previous implementation started in 1992 and ended in 2007. It was necessary to be able to provide the same features and behaviour as implemented in the previous version. The only alternative to JavaFX would have been Microsoft .Net.
The Web technologies were excluded for the following reasons:
- No guarantee of sustainability.
- Short term technology life cycle.
- Low performance risk.
- Compatibility risks with various web browsers used by our customers.
- Upgrade costs due to a change in web technology.
Was it difficult to convince decision makers to agree on JavaFX?
Initially the project was supposed to be written in Swing. We had to convince our customers, mainly the IT departments involved who were afraid that JavaFX was not stable enough for this type of application.
What were the biggest challenges / problems / issues / bugs you faced in the JavaFX part and how did you solve them?
Keyboard navigation: We had a lot of problems with the keyboard navigation and implementing standard key functions on thru whole application. The idea was to have an application that is useable with minimal use of the mouse. To resolve this issue, we had to replace the impacted controls EventDispatcher with our own.
Editable TableView: we had to override the standard TableView and rewrite the focus system as the standard editable TableView is not functional from a user experience point of view.
Which 3rd-party products / frameworks / tools (open source and commercial) did you use and why did you choose them?
Our in-house JavaFX framework JEntityFX, which is not yet published.
Did you mix JavaFX and Swing code?
Would you use JavaFX again for your next project? Please elaborate why or why not. Which recommendations do you have related to JavaFX for other companies / projects?
Yes. JavaFX has no limits. We have developed our own professional business application framework which will be used for all our future rich client applications.
It is essential to have a framework to structure and industrialize JavaFX developments.
This enables us to focus on the functional aspects of the application and the development of specific components with high added value for users.
Which features would you like to see being added to JavaFX?
Rework of the TableView in editable mode.
Do you plan to provide a mobile version of your application or a mobile addition?
No, not in the near future, but we are considering this for future projects.