API/Language changes
assert will change to insert
Avoid the constant keyword collision with "assert", most languages are seem to support this now
Will change in both the drl and working memory api
modify to become update
Instead of workingMemory.modify(FactHandle, Object) it will be workingMemory.update(FactHandle, Object), will change modify to update in drl.
This method is now only used for ShadowFact objects, it's a method to let the engine know that an external object has been updated and to update it's internal cache. and reprocess.
Avoid keyword collision in MVEL which has nice "modify" sugar now
insertObject (assertObject), retractObject and updateObject to beome insert, retract and update
The Object part seems superflous, might as well remove it, especially as we start to support None Object fact types
drl and working memory api will now use the same method names.
Added new WorkingMemory modifyRetract and modifyAssert methods
Allows for non shadow fact objects.
When not using shadow facts (although will ofcourse work with shadow facts) you cannot call 'update', or what use to be called 'modify', because we need to know the "old" value of fields so we can retract the from the workign memory. The only safe way is to first retract the object and then assert it. However with the existing api this adds extra work and results in new fact handle. modifyRetract and modifyAssert can now be used together to "simulate" a modify on a none shadow fact object in two parts. First call modifyRetract, then change your field values, then call modifyAssert.
AMVEL has sugar to do: modify ( person ) { age += 1, location = "london" }, what actually happens here is it first calls modifyRetract then applies the setters and then calles modifyAssert.
core and compiler
JBRULES-231 - add "not contains" and "not matches" constraints
Support to new operators "not contains" and "not matches" was added to the language.
JBRULES-315 - Support to Expression and Nested Accessors
Support to expressions and nested accessors was added to the language, allowing things like:
Person( address[business|'business'].phone{FOOTNOTE DEF 0 0}.areaCode == $country.area[south|'south'].code )
JBRULES-500 - Special connective "or" constraint
Support to || connective now allows patterns to be constrained with 'or' between fields and any level of expression nesting. Example:
Person( ( age ( > 20 && < 30) || (>40 && <50) && location=="atlanta" ) ||
( age > 20 && location=="Seatle" ) ||
location == "Chicago" )
JBRULES-585 - syntax sugar for binding to a field on a bound fact
JBRULES-662 - Make the TMS optional
JBRULES-866 - Allow the pattern binding variable to be used field constraints
JBRULES-874 - Allow direct property access to pattern bound variables
This is just syntax sugar to avoid binding to fields themselves. So it is still as performatic as binding to fields themselves.
c: Customer()
p: Person(customerId == c.id)
JBRULES-708 - Full MVEL integration
MVEL is now fully integrated into the engine and can be used in all CEs that allow for custom code as well as in the rules consequence.
JBRULES-713 - Make Dialects Pluggeable
Dialects are now pluggable. We have 2 officially supported dialects: Java and MVEL, but users can now add their own by implementing builders specific to the wanted dialect.
JBRULES-875 - dynamic salience
Engine supports now dynamic saliences by using an expression that includes field and pattern bindings. Meaning the rule can be prioritized based on the data matching it.
JBRULES-895 - Better Properties Support
Engine now supports chained properties configuration files and also automatically loads default configurations.
JBRULES-900 - Allow parameterised queries
JBRULES-916 - Create a new rule name agenda filter that uses regular expressions to filter on
JBRULES-917 - Allow querry params to specify type
JBRULES-922 - API change for assert and modify
API was changed renaming methods and keywords from "assert" to "insert" and "modify" to "update", avoid conflicts with dialect keywords.
JBRULES-925 - Add support to MVEL in Accumulate CE
Accumulate CE is now fully integrated with MVEL, allowing custom code blocks to be written in MVEL.
JBRULES-927 - Migrate java grammar to version 5
Parser grammar is now updated to java version 5 grammar.
JBRULES-930 - Optional Shadow Facts
Shadow facts are now optional, allowing the user to turn them off on a per-class basis
JBRULES-880 - Update XML component to handle with 4.0 language changes
JBRULES-935 - Update DrlDumper to handle with the new language features
DRL Dumper, XML parser and XML dumper are now updated to version 4.0 language features.
JBRULES-936 - Implement incremental accumulation/collection for accumulate and collect CE
Collect and Accumulate both support incremental processing now, allowing for much improved performance.
JBRULES-941 - Add support to pluggable accumulate functions
Accumulate CE now supports pluggable functions. More details here: http://markproctor.blogspot.com/2007/06/accumulate-functions-edson-tirelli.html
JBRULES-214 - goddamn keyword collisions damn it damn damn
Keyword collisions were reduced to a minimum keyword set.
JBRULES-908 - Clean up DRL.g accoding to ANTLR consultancy recommendations
DRL grammar was cleaned up and improved, allowing for better performance and error handling, as well as IDE support.
RuleFlow
support for constraints in (X)OR splits
support for looping
listener support on working memory
audit support for working memory events
IDE enhancements:
snap to grid
more advanced router layouts
constraint editor includes syntax colouring + code completion
possibility to include a sample ruleflow + launcher when creating
a new rules project
IDE enhancements:
Support for .package files in builder
Audit view supports ruleflow
Updates due to core / compiler API changes
New Guided Editor
Comments