Bonaparte is based on client-server architecture. This means that the computational core—the part of Bonaparte that actually computes the probabilities—and the Bonaparte database run on a dedicated server. Bonaparte clients communicate with this server over a network. Since all computations are performed on the server, there is no need for expensive client hardware. It also keeps the data at a central location thus it can be secured better.
Bonaparte client applications are available as web based interfaces (AJAX), Java over the network (webstart) or as local Java applications. Either way, they need a network connection to the Bonaparte server in order to function.
Bonaparte manages it's own advanced internal database (advanced datamodel running on a RDBMS). This database keeps track of every data modification (who, what and when), and can be restored to a previous point in time. The Bonaparte database is designed with three things in mind
The "roll back" capability means that a user is able to select a historic version of the database—a view of the database at time t that filters out data created after time t—and work with that database. The purpose of this is that (for legal reasons) it might be required to re-confirm old matches or investigate what data was exactly available at what time. This versioning is accomplished by keeping a full edit history of all data, e.g. users can inspect who modified what, when and how.
Concurrency is implemented through the use of private branches. A user can start editing an object and work with this new object, while the rest of the users still see the object as it was before that editing took place. Only when the user chooses to publish his modifications they become visible to the other users as well.
Since Bonaparte is a client-server based system it is sensitive to network service interruptions or browser crashes. In order to minimize the loss of work in such events, a crash recovery mechanism has been implemented. The system automatically saves users′ work data to a private branch. In case of a crash, all users have to do is restart their client and they can resume editing where they left off.
Bonaparte can be configured to only use secure (https) network connections. This way the authenticity of the server can be verified, and data is encrypted before being sent over the network. Optionally Bonaparte can be fitted with an encrypted internal database, so that in the case of a compromise of the server the information is unreadable.
All Bonaparte clients require users to logon (see Figure 2), after which a secure session is created. In addition to this, the Java clients are also protected with a (removable) hardware key. Without this key, the application cannot be started.
Bonaparte is written in Java using Servlet techologies and as such places no other requirements on the server operating system other than that it must support a JVM and host an application server. We have good experiences running Bonaparte on FreeBSD Unix, but it also runs on Linux and Windows. As application server Apache Tomcat is used. In addition to this, Bonaparte also requires a SQL database for the storage of data.
In order to use the (AJAX) web client, a modern browser (latest Firefox, Explorer, Opera or Chrome) is required.
Bonaparte can easily be integrated into existing IT infrastructure (see Figure 1) via the interfaces it provides. Bonaparte accepts data in XML format, and can therefore be connected (maybe via some data converter) to your existing database. An example of such a converter is Napoleon (developed by the NFI). It is also possible to control the Bonaparte server via third party software without using the Bonaparte Clients.