One of the largest Japanese telecom company is successfully using OpenRules being integrated with a BPM product produced by our partner Intra-Mart. Last month this customer asked us to help with development of a custom scheduler capable to schedule thousands of cable construction operations subject to various precedence and exclusivity constraints.
To develop such a custom scheduler, called “Cable Construction Scheduler”, first we proposed a very intuitive representation of all required constraints using OpenRules-based tables in Excel. Based on these constraints and actually provided cable operations we generate a constraint satisfaction problem utilizing the scheduling package “javax.constraints.scheduler” built on the top of the JCP standard JSR-331. Quite quickly we created the first version that successfully handled test examples and major constrains. However,when we added more specific constraints, switched to a smaller time-step and much larger schedule examples, we hit a performance issue. It forced us to add a custom constraint “Operations should not overlap unless a special constraint states otherwise”. It is based on a new JSR-331 method “postAllDiff(Activity[] activities)” that is much more efficient to compare with the use of a more traditional ResourceDisjunctive constraint. This and several more improvements allowed us to dramatically minimize the execution time of the Scheduler. The important feature of the Scheduler became its ability to diagnose conflicts between problem constraints and the input data about possible time intervals for different activities. The use off-the-shelf tools allowed us to get a production-level scheduler within a short time-frame.
This experience just proved the practicality of the integrated business rules and constraint propagation approach implemented by OpenRules Rule Solver.