Release Notes 6.3.3 (May-2015)

OpenRules® Release 6.3.3 allows a user to generate Java interfaces for decision models that already were created and tested using only Excel files. It also adds new features to OpenRules® Dialog and deprecates the global method dialog() that potentially may jeopardize interaction of multiple concurrent users with the same Web dialog. We also added new standard operators and fixed several bugs. The Release 6.3.3 comes with new sample projects that demonstrate new features.

Generating Java Interfaces for Excel-based Decision Models

This release simplifies OpenRules® deployment by automatically generating various Java interfaces for Excel-based decision models. The detailed description is provided in the updated User Manual pp. 130-138. The standard class Decision now includes a new method "generateDecisionObjects". A new sample project "DecisionWithGeneratedJava" enhances the basic decision project "DecisionHelloJava" by automatically generating Java classes Customer and Response  and uses instances of these classes to demonstrate how easily you may communicate with OpenRules® decision from your Java applications.

This release also introduces a concept of "BusinessMap" that essentially simplifies an OpenRules® Decision interface. You may get a list of business maps that correspond to all business concepts in your decision model by simply calling a new Decision's method "createBusinessMaps". Each business map has lists of all attributes and their types. So, without necessity to explicitly creating interface objects, you may navigate through business maps setting values for all known attributes and if necessary validating that the attribute values that you receive from your IT system have the correct types. Here is an example of a new interface:

You may find more details in the new sample projects "DecisionPatientTherapyWithBusinessMaps" and "DecisionLoanWithBusinessMaps".


OpenRules Dialog Improvements

This release essentially enhances OpenRules Dialog with new features requested and/or already tested by our customers:

1) Removal of dialog(). This release deprecated the use of the internal method dialog() defined in the standard Excel file "Dialog.xls" of the folder "openrules.forms.lib". In some cases the use of this "global" method created conflicts during the execution of the concurrent http-requests, and thus it should be avoided. So, we've replaced the use of dialog() with passing "Dialog d" as the first parameter everywhere in standard template files. To maintain backward compatibility we saved all old methods but marked them as "Deprecated".  They will be removed in the future releases.

While your existing software that uses OpenRules Dialog will continue to work as in previous releases, we strongly recommend you to avoid using dialog(). To do that, please replace your method mainLayout(String dialogName) with mainLayout(Dialog d). Then you may use "" instead of "dialogName". Here is the list of other methods that should include "Dialog d" as the first parameter: actionButton, actionHyperlink, actionImage, actionOpen, actionDelete, actionRight, actionLeft, and checkedButton. If you have your custom methods, make sure they do not call dialog(). To check that your software does not depend anymore on "dialog()", go to the file Dialog.xls and replace the method dialog() as shown below:

If you software is clean from dialog(), it will continue to work without errors. If you have any problems, contact us at and we will certainly help.

2) Special Dialog Log. All OpenRules Dialog templates now use the function call dialog.log(String text)for logging purposes. It allows us (and you) to control output based on the parameter "Log" defined by the call dialog.put("Log","On")or dialog.put("Log","Off").


New Excel Generation Methods

We added the following static methods to the class Methods of the standard "" library:

  • public static void writeDecisionTable(
                String tableName,  // name of the decision table, e.g. "DefineGreeting" 
                String templateName,
    // name of the template, e.g. "DecisionTableTemplate"   
                String[] labels,
    // labels, e.g. new String[] {"If", "If", "Then"}
                String[] descriptions,
    // decision variables, e.g. new String[]
                                                                                    {"Current Hour","Current Hour","Result"}

                String[][] rules,
    // rules, e.g. new String[]{">=0","<11","Good Morning"}
                String filename
    // name of the new file into which the table will be written 

  • public static void writeLayoutTable(
                String tableName,  // name of the TableLayout 
                HashMap<String,String> properties,
    // layout properties
                String[] rows,
    // layout rows
                String filename
    // name of the new file into which the layout table will be written 

Comparison Operators

We added the operator "Does Not Contain" to check that one string array does not contain another string. We also fixed errors in the previous implementation of the operators "Is One Of" and "Is Not One Of" for integer and real numbers. The complete list of the supported operators can be found at the User Manual at the pages 16-17.

Bug Fixed

We found and fixed bugs in the implementation of rarely used compound assignment operators "-=" and "/=".


New Sample Decision Projects

We added several new sample decision projects:

  • DecisionWithGeneratedJava - demonstrates how to generate and use Java interface objects

  • DecisionLoanWithBusinesMaps - demonstrates how to generate and use business maps

  • DecisionPatientTherapyWithBusinessMaps - add to the standard project DecisionPatientTherapy an business maps interface

  • UServ - this is a DMN-based implementation of the popular "UServ Product Derby" - read more in this post.

Download the latest complete OpenRules® release 6.3.3 from here.

If you have any questions, comments or suggestions, please post them at the Google Discussion Group or send them directly to