Building a Custom Scheduler with OpenRules and JSR-331

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.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.