Release Notes |
Top Installation Introduction Samples Tutorial Reference Release Notes
Minor bug fixes and documentation on how to work around the Microsoft Office RefEdit induced bug that produces error messages such as "compile error in hidden module".
Unlimited free runtime distribution is included with this release. The 3-0-x need for a separate licensed runtime has been eliminated. All of the ARulesXL files can be used as they are for the runtime. They allow full use of any spreadsheets with rules on them, but they do not allow the creation and modification of rules. A full licensed version is required for that.
Enterprise site licensing is included in 4-0-2. This allows everyone in a given enterprise to download and use the full Professional edition.
DAYS_BETWEEN(?start_date, ?end_date) - This new function returns the number of days between to dates. This is different from using the arithmetic operator, -, which returns an interval in years, months and days.
Documentation - The documentation has caught up with the code.
Syntax & Terminology - The term 'properties' and dot notation caused some confusion, so we've changed the term and the notation. Properties are now called 'facts' and are represented as before but without the leading dot. To avoid ambiguity with values, values now have to be quoted, either with single or double quotes.
So a rule like this:
.status = approved WHEN .rating = good AND .input[balance] > 1000
Now becomes:
status = "approved" WHEN rating = "good" AND input['balance'] > 1000
An automatic converter is included in the 3x release which, in most cases, will make all of the necessary changes. There are a few corner cases that will need hand conversion, and they will be easy to find because of errors generated.
These are the known cases requiring hand translation:
.data = *
becomes data = "*"
.[MMR, DTaP]
becomes ['MMR',
'DTaP']
.Cut & Paste Bug Fix - The changing borders around rule sets indicating edit mode or not caused cut and paste to fail. So the automatic rule set borders have been eliminated and cut and paste now works.
Rule Set Editting and Loading Change - The cut & paste bug was caused by the automatic formatting and loading of rule sets based on mouse movements. Rule sets are now in edit mode as before, but are not automatically reloaded when the mouse clicks outside of a rule set. The ARulesXL menu, and right mouse button both have choices for loading all or just the changed rule sets.
RTable() name changed to RArray() - RTable() has been changed to RArray() which better captures the flavor of accessing a range of cells with both row and column headers. It is planned to have a new function named RTable() which is used when a range of cells is to be treated more like a database table.
Variable Date Intervals - Expressions such 3 years + 4 days used to require integers. Variables are now allowed, but you still cannot use full expressions. So to add 14 days for each scheduled visit:
VisitDate[?n] = StartDate + ?x days WHEN ?x = 14 * ?n
Performance - Rule sets are now loaded in a fraction of the time from prior releases.
Performance - Rule sets are now loaded in a fraction of the time from prior releases.
Tutorials - Added a quick tour and a full tutorial on using tables and collections.
SQL - Connections can now be made to remote servers by specifying the host name and port.
New Functions - (see docs for details)
VBA Runtime - Added the VBARQuery, VBARQueryMore and VBARArrayQuery functions accidentally left out of 2.0.3.
Decision Tables - Decision tables can now be represented directly in rule sets as tables. See documentation and samples for details.
ARulesXL API Additions (See the API Manual for details).
Reasoning Engine Changes - In 1.0, rule sets were reloaded when ever
an RQuery() was executed that used the rule set. So they sat quietly until
needed. In 2.0 the rule sets are all loaded automatically when the spreadsheet
is opened, which causes some delay on opening (in the status window you can
see which rule sets are loading.)
If there are any syntax errors they are flagged in red with the comments.
Also in 2.0 we recognize when a rule set is being editted and provide immediate
feedback on rules that have errors. When you click out side of a rule
set, then the rule set is loaded. RQuery() no longer triggers a load.
Many ease of use enhancements, documentation, help links and samples clean-ups.
Incompatible Rule Function Changes - The functions NEXT(), PRIOR() and ITEM_AT() have been changed to have the list as the first parameter for consistency with the rest of the list/array functions.
Spreadsheet Function Changes - Renamed LoadRules() to RXLDependency(). Existing spreadsheets that call LoadRules() will continue to work properly.
Excel Command Changes - Removed 'Selection to Rule Set' and 'Rule Set to Range', in lieu of new, improved 'New Rule Set'. Also removed 'Rename' in lieu of changing the cells directly on the spreadsheet. Renamed 'Delete Rule Set' to 'Remove Rule Set' and changed its action to convert the rule set contents into plain text. Added ''Support Forum'.
Excel Cell Menu - Added the most useful commands onto Excel's cell menu (reached by right-clicking on a cell).
Trace Command Completed - The new 'Trace' facility is complete and is documented in both the Tutorial and Reference.
New Runtime and Edition - The ARulesXL runtime for VB, C#, Delphi, Java, Web Servers, Extend is now separate from the Excel Add-In. The Runtime API and Export command are now a feature of the 'Professional Edition'.
Debugger Removed; Start of New Trace Facility Added - The 'Debug' command has been removed and replaced with 'Trace'.
Set Functions - Functions that treat lists/arrays as sets are now available. These include: SET, UNION, INTERSECTION, DIFFERENCE, and IS_SUBSET. See documentation for details.
Array/List Functions - Some new functions that work on lists (arrays) are now available. These include: APPEND, CONCATENATE and REVERSE. See documentation for details.
Reasoning changes - The reasoning algorithm has been modified slightly to better catch undefined objects during FINDALL()s. This might cause some new error messages in programs that worked before with unknown objects.
QUIT() - A new function that throws an error message of your choice.
call_stack - A new special value that has a string representing the call stack of rules used to reach the point where it is referred to. Useful for diagnosis.
EVALUATE - An ARulesXL function that lets you construct a call to an Excel function from within a rule set.
Other Functions - A number of additional beta functions have been documented. These include: COUNT(), DEBUGPRINT(), EXISTS(), ITEM_AT(), MSGBOX(), NEXT(), ONETIME(), PERMUTE(), and PRIOR(). See the Reference documentation for details.
ARulesXL API - An API is now available for testing that allows ARulesXL rule sets to be exported and called from other application contexts, such as .NET, Java, Delphi and C++.
EZTax - A new sample shows how to build intelligent form applications using ARulesXL. The U.S. Tax form, 1040EZ is used for the sample.
SQL - An SQL command is available for extracting data from SQL data sources. For the beta release, only MySQL is supported, but more generic support for relational data sources is planned. Contact technical support if you are interested in testing this feature.
RQuery( QueryCell, ... ) - The first argument to RQuery() was either a rule set or a cell with an =LoadRules() function call. The first argument can now refer to another cell with an RQuery() function call. When this is done, the dependent query does NOT cause the reasoning engine to forget what it learned in the last call. In other words, the inputs and results from the first query are still valid for queries dependent on that query. This is a performance enhancement for applications that have multiple queries that share the same set of inputs.
Logic Relations - ARulesXL supports logic relations that can be intermixed with normal property rules. Logic relations support recursion which can be used for rules that manipulate each of the elements of lists or arrays.
Samples - Two new samples are included which illustrate the use of RArray(), arrays, lists, FINDALL() and logic relations. One is Budget Analysis - which annotates a profit loss worksheet, and the other is Order Configuration - which creates a product configuration based on customer needs.
The samples are now directly available from the ARulesXL menu.
VBA Calls - The ability to call RQuery from VBA is supported in a preliminary way in this release. This feature is under development and not yet documented, but the Budget Analysis sample can be used as an example to see how it is used. Calling RQuery() from VBA allows you to use the results to update cells on a worksheet; as opposed to a cell function which can only change the value in that cell.
The function calls and syntax of the VBA calls might change by the final release, but the ideas are here for those wishing to experiment with this feature.
RANGE() - When RArray() is used to input data from a worksheet, the original cells are remembered. The RANGE() function gets that range, allowing you to annotate cells. This is what the Budget Analysis sample does.
Syntax Changes - Some optional changes to ARulesXL syntax have been made for readability. These changes will become the documented preference, but the old syntax will still be supported.
.call.rate = 7
This will require code changes..order.price
= .order.quantity * ?part:.unitprice WHEN ?part = .part
RArray() - RArray() is an ARulesXL function that can be used inside a rule set to bring an Excel table into an ARulesXL array. Multiple tables can be brought in create multidimensional ARulesXL arrays. The use of pattern-matching variables allows the writing of general rules that search for patterns in data in a spreadsheet.
RArray() is also a better alternative to RInput() for bringing data into a rule set.
RCell() - RCell() is an ARulesXL function that brings a single cell into a data value. It replaces RRef() for getting single data cells into a rule set.
FINDALL() - FINDALL() is a rule function that can be used with pattern matching variables to create arrays intended for output in an RQuery array function.
MEMBER() -Finds all the elements in a list, usually for processing in a FINDALL() statement.
SORT() - SORT() is a rule function that can be used to sort ARulesXL arrays.
Budget Analysis.xls - tables.xls is a new sample that illustrates the use of the above features for spreadsheet analysis and for configuration.
Best Practices for Large Rule Sets - The use of LoadRules outside of a rule set is described as a way to optimize performance of spreadsheets with many rules and many queries using those rules.
Logical Relation Rules - Logical relation rules can be used to describe relationships and implement recursive definitions. They are useful in situations such as product configuration where a part contains a part, which contains a part, etc.
Leading periods for objects/properties - Leading periods are not required for objects separated from properties with periods, however, this causes some confusion. So leading periods are now accepted for both properties and object/properties.
International Support - International support is now provided. The first language supported, besides English, is French.
RQuery() & debug argument bug fix - RQuery() and Debug were inconsistent
in the handling of optional arguments. They both now allow any range expression
or formula to be included as an argument. For example, RQuery(Rules, "Find
.x when .y = _1", Sum(E1:E3)/2)
.
Array Results - RQuery can now ask for multiple properties in a Find
,
and the results will be return in an array of cells. This requires using the
Excel array function feature: first select the number of horizontal cells to
be in the array, next, with all cells still selected, enter the query, and hit
Ctrl-Shift-Enter. The Find syntax is like "Find .this and .that and .something_else".
Multiple Facts in Rules - Rules can now set multiple properties in
a single rule. For example: .color = red and .price = 3 when ....
New Techniques Spreadsheet - The sample, Techniques Basic.xls, is a full introduction on the use of ARulesXL, with each worksheet presenting a different concept. It is intended to complement the tutorial in this documentation.
LoadRules() - The old RuleSet()
function has been renamed
LoadRules()
to more accurately reflect what it does. Further, =LoadRules()
can now be entered in a rule set directly, thus enabling a cleaner way to express
interrelated rule sets.
Inheritance - Rule sets can now inherit from other rule sets, so if a property isn't found in the current rule set, the super class rule set is used instead. A rule set can have multiple super classes, and there is no limit on the number of levels of nesting of rule sets.
Date/Time - Symbolic manipulation of date/time values is now supported,
so that expressions such as .date + 3 months
can be used in rules
and conditions. The rule date/time values map directly to Excel's date formats.
Input Ranges - A rule set can have an function that maps the variables in a rule set to a range of cells.
Variable Rule Sets - A logical variable can be used for a rule set name, making it easy to have a rule set dynamically call other rule sets based on an input value.
Rule Sets - Tools for creating, deleting, syntax checking, and debugging rule sets are now on the ARulesXL main menu. With this change, rule sets are more formally defined, first as an Excel variable referring to the range of cells of the rule set, and second as an item in an Excel variable that maintains an array of rule set names. Using the tools to create/delete rule sets is important, so that these structures can be maintained.
Debugging - The debugger is greatly improved, with a window showing the steps of execution as well as color coding of the rules to indicate which rules are used and which aren't. The debugger works from any cell with a valid RQuery() formula in it.
Document Assembly - The formulas that can be used in rules have been expanded to include the & operand for string concatenation. This makes it possible to build document assembly applications, where a series of rules each works on different parts of a final document.
Error Messages - Error messages now appear in the appropriate cells instead of as pop ups.
Rule Sets - Rules are no longer added individually, but rather as parts of rule sets. The rule sets allow for modular development of rules, and also eliminate the need to provide IDs for individual rules. The rule sets are easily manipulated as Excel lists.
New Rules - There are three levels of rule syntax of increasing representational capability. They can be freely intermixed.
.rate
= 0.05 when ...
Also, text values no longer have to be quoted unless
they contain embedded blanks.call.rate = 0.05 when ...
The syntax mirrors VBA syntax.weekend(?day, true) when member(?day,
[Sunday, Saturday])
Debugging Aids - Three new diagnostic aids have been added.
refresh
menu item analyzes a rule set and color
codes rules with syntax errors and adds notes containing descriptions of the
error.Hopefully fixed recalculation bug that would cause erratic behavior or even crashes after rule set editing. If problems persist in this area, please report them.
Eliminated the restriction of 4 optional variable arguments on RAdd and RQuery. Any number are allowed now.
Eliminated the need to put single quotes around the replacement tokens, such
as _1
, in RAdd and RQuery when the tokens would be replaced by
cells with text values. Quotes are still, as always, needed around text values,
but when doing the replacement, quotes are added automatically for text values.
The only time quotes are needed on replacement tokens are for values that are
numbers intended to be used as text.
Added tutorial to the documentation.
Added index and formatting to documentation, improved Introduction.
The incorrect prompts for values that sometimes appeared when a worksheet was opened no longer appear. The Control Panel is accessible from menu items.
Slight repackaging of distribution, and update on install directions to use Program Files/.../OfficeNN/Library for the ARulesXL XLA, rather than the addins folder. This small change makes it possible to move spreadsheets from one machine to another.
Initial release supporting "property, value" rules and queries.
Copyright ©2005-7 Amzi! inc. All Rights Reserved.
|