Integrating a RubyOnRails app with Java-based services

9 01 2008

One of our customers, HandiSup, needed a way to manage more efficiently the allocation of their resources ; as they supply services to handicapped individuals they have to assign students to specific requests (go to the university’s restaurant, pick up student at home, etc.). So far everything was done by hand: collecting requests, managing customers and suppliers, etc.

We designed Kalendari, our resource management web application, to solve this problem: using a web interface HandiSup’s users are able to easily manage their customers and their requests.

Automatically creating a planning (where suppliers and requests are matched) was the most interesting bit.  We initially started with a home-grown algorithm before switching over to an open-source solver.  Gecode/R, a set of Ruby bindings for Gecode, seemed promising, though at the time at an early development stage — the API was therefore unfinished and overall stability might have been a concern.

We finally implemented something like this:

  •  The core of the Rails app provides CRUD front-end for users, suppliers, requests and schedule visualisation
  • Automatic schedule generation is delegated to Choco, an open-source constraint solver developped by the CS department at Ecole des Mines de Nantes
  • ActiveMessaging and a StompServer instance handle the communication between the above two components.

The schedule generator is a pluggable component: the Rails app is only aware of the API needed to be called to get the problem solved; the scheduler is hidden behind a Proxy.  Depending on the system’s configuration we can either use our home-grown solver or the one based on Choco.



Welcome to our brand-new website!

13 10 2007

Based on WordPress, we hope you will like it!